MonoDevelop.Projects.Formats.MSBuild.MSBuildProjectService.TrySplitResourceName C# (CSharp) Method

TrySplitResourceName() public static method

public static TrySplitResourceName ( string fname, string &only_filename, string &culture, string &extn ) : bool
fname string
only_filename string
culture string
extn string
return bool
		public static bool TrySplitResourceName (string fname, out string only_filename, out string culture, out string extn)
		{
			only_filename = culture = extn = null;

			int last_dot = -1;
			int culture_dot = -1;
			int i = fname.Length - 1;
			while (i >= 0) {
				if (fname [i] == '.') {
					last_dot = i;
					break;
				}
				i --;
			}
			if (i < 0)
				return false;

			i--;
			while (i >= 0) {
				if (fname [i] == '.') {
					culture_dot = i;
					break;
				}
				i --;
			}
			if (culture_dot < 0)
				return false;

			culture = fname.Substring (culture_dot + 1, last_dot - culture_dot - 1);
			if (!CultureNamesTable.ContainsKey (culture))
				return false;

			only_filename = fname.Substring (0, culture_dot);
			extn = fname.Substring (last_dot + 1);
			return true;
		}
		

Usage Example

Exemplo n.º 1
0
        public virtual string GetDefaultResourceId(ProjectFile file)
        {
            string fname = file.ProjectVirtualPath;

            fname = FileService.NormalizeRelativePath(fname);
            fname = Path.Combine(Path.GetDirectoryName(fname).Replace(' ', '_'), Path.GetFileName(fname));

            if (String.Compare(Path.GetExtension(fname), ".resx", true) == 0)
            {
                fname = Path.ChangeExtension(fname, ".resources");
            }
            else
            {
                string only_filename, culture, extn;
                if (MSBuildProjectService.TrySplitResourceName(fname, out only_filename, out culture, out extn))
                {
                    //remove the culture from fname
                    //foo.it.bmp -> foo.bmp
                    fname = only_filename + "." + extn;
                }
            }

            string rname = fname.Replace(Path.DirectorySeparatorChar, '.');

            DotNetProject dp = file.Project as DotNetProject;

            if (dp == null || String.IsNullOrEmpty(dp.DefaultNamespace))
            {
                return(rname);
            }
            else
            {
                return(dp.DefaultNamespace + "." + rname);
            }
        }