Beispiel #1
0
        int IComparer <T> .Compare(T _a, T _b)
        {
            string a = null, b = null;

            if (_a is string && _b is string)
            {
                a = _a as string;
                b = _b as string;
            }
            else if (_a is List <string> && _b is List <string> )
            {
                List <string> tmp = _a as List <string>;
                a   = tmp [0];
                tmp = _b as List <string>;
                b   = tmp [0];
            }
            else if (_a is AppResourceFileInfo && _b is AppResourceFileInfo)
            {
                AppResourceFileInfo tmp = _a as AppResourceFileInfo;
                a   = tmp.Info.Name;
                tmp = _b as AppResourceFileInfo;
                b   = tmp.Info.Name;
            }
            else
            {
                return(0);
            }
            return(CompareStrings(a, b));
        }
        string CompileResource(AppResourceFileInfo arfi, bool local)
        {
            string path  = arfi.Info.FullName;
            string rname = Path.GetFileNameWithoutExtension(path) + ".resources";

            if (!local)
            {
                rname = "Resources." + rname;
            }

            string          resource = Path.Combine(TempDirectory, rname);
            FileStream      source = null, destination = null;
            IResourceReader reader = null;
            ResourceWriter  writer = null;

            try
            {
                source      = new FileStream(path, FileMode.Open, FileAccess.Read);
                destination = new FileStream(resource, FileMode.Create, FileAccess.Write);
                reader      = GetReaderForKind(arfi.Kind, source, path);
                writer      = new ResourceWriter(destination);
                foreach (DictionaryEntry de in reader)
                {
                    object val = de.Value;
                    if (val is string)
                    {
                        writer.AddResource((string)de.Key, (string)val);
                    }
                    else
                    {
                        writer.AddResource((string)de.Key, val);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new HttpException("Failed to compile resource file", ex);
            }
            finally
            {
                if (reader != null)
                {
                    reader.Dispose();
                }
                if (source != null)
                {
                    source.Dispose();
                }
                if (writer != null)
                {
                    writer.Dispose();
                }
                if (destination != null)
                {
                    destination.Dispose();
                }
            }

            return(resource);
        }
Beispiel #3
0
        string GetResourceFile(AppResourceFileInfo arfi, bool local)
        {
            string resfile;

            if (arfi.Kind == AppResourceFileKind.ResX)
            {
                resfile = CompileResource(arfi, local);
            }
            else
            {
                resfile = arfi.Info.FullName;
            }
            if (!String.IsNullOrEmpty(resfile))
            {
                string        culture = IsFileCultureValid(resfile);
                List <string> cfiles;
                if (culture != null)
                {
                    if (cultureFiles.ContainsKey(culture))
                    {
                        cfiles = cultureFiles [culture];
                    }
                    else
                    {
                        cfiles = new List <string> (1);
                        cultureFiles [culture] = cfiles;
                    }
                }
                else
                {
                    if (defaultCultureFiles == null)
                    {
                        defaultCultureFiles = new List <string> ();
                    }
                    cfiles = defaultCultureFiles;
                }

                cfiles.Add(resfile);
            }

            return(resfile);
        }
Beispiel #4
0
        public void Collect()
        {
            if (String.IsNullOrEmpty(sourceDir))
            {
                return;
            }
            DirectoryInfo di = new DirectoryInfo(sourceDir);

            FileInfo[] infos = di.GetFiles();
            if (infos.Length == 0)
            {
                return;
            }

            string extension;
            AppResourceFileInfo arfi;
            AppResourceFileKind kind;

            foreach (FileInfo fi in infos)
            {
                extension = fi.Extension;
                if (Acceptable(extension, out kind))
                {
                    arfi = new AppResourceFileInfo(fi, kind);
                }
                else
                {
                    continue;
                }

                files.Add(arfi);
            }

            if (isGlobal && files.Count == 0)
            {
                return;
            }
            AppResourcesLengthComparer <AppResourceFileInfo> lcFiles = new AppResourcesLengthComparer <AppResourceFileInfo> ();

            files.Sort(lcFiles);
        }
		string CompileResource (AppResourceFileInfo arfi, bool local)
		{
			string path = arfi.Info.FullName;
			string rname = Path.GetFileNameWithoutExtension (path) + ".resources";
			if (!local)
				rname = "Resources." + rname;
			
			string resource = Path.Combine (TempDirectory, rname);
			FileStream source = null, destination = null;
			IResourceReader reader = null;
			ResourceWriter writer = null;

			try {
				source = new FileStream (path, FileMode.Open, FileAccess.Read);
				destination = new FileStream (resource, FileMode.Create, FileAccess.Write);
				reader = GetReaderForKind (arfi.Kind, source, path);
				writer = new ResourceWriter (destination);
				foreach (DictionaryEntry de in reader) {
					object val = de.Value;
					if (val is string)
						writer.AddResource ((string)de.Key, (string)val);
					else
						writer.AddResource ((string)de.Key, val);
				}
			} catch (Exception ex) {
				throw new HttpException ("Failed to compile resource file", ex);
			} finally {
				if (reader != null)
					reader.Dispose ();
				if (source != null)
					source.Dispose ();
				if (writer != null)
					writer.Dispose ();
				if (destination != null)
					destination.Dispose ();
			}
			
			return resource;
		}
		string GetResourceFile (AppResourceFileInfo arfi, bool local)
		{
			string resfile;
			if (arfi.Kind == AppResourceFileKind.ResX)
				resfile = CompileResource (arfi, local);
			else
				resfile = arfi.Info.FullName;
			if (!String.IsNullOrEmpty (resfile)) {
				string culture = IsFileCultureValid (resfile);
				List <string> cfiles;
				if (culture != null) {
					if (cultureFiles.ContainsKey (culture))
						cfiles = cultureFiles [culture];
					else {
						cfiles = new List <string> (1);
						cultureFiles [culture] = cfiles;
					}
				} else {
					if (defaultCultureFiles == null)
						defaultCultureFiles = new List <string> ();
					cfiles = defaultCultureFiles;
				}
				
				cfiles.Add (resfile);
			}
				
			return resfile;
		}