2 // TxtResourceReader: Reader from monoresgen.
5 // Marek Sieradzki (marek.sieradzki@gmail.com)
6 // Paolo Molaro (lupus@ximian.com)
7 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
9 // (C) 2005 Marek Sieradzki
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 using System.Collections;
35 using System.Resources;
38 namespace Mono.XBuild.Tasks.GenerateResourceInternal {
39 internal class TxtResourceReader : IResourceReader {
43 public TxtResourceReader (Stream stream)
45 data = new Hashtable ();
50 public virtual void Close ()
54 public IDictionaryEnumerator GetEnumerator()
56 return data.GetEnumerator ();
61 StreamReader reader = new StreamReader (s);
62 string line, key, val;
63 int epos, line_num = 0;
64 while ((line = reader.ReadLine ()) != null) {
67 if (line.Length == 0 || line [0] == '#' ||
70 epos = line.IndexOf ('=');
72 throw new Exception ("Invalid format at line " + line_num);
73 key = line.Substring (0, epos);
74 val = line.Substring (epos + 1);
78 throw new Exception ("Key is empty at line " + line_num);
83 IEnumerator IEnumerable.GetEnumerator ()
85 return ((IResourceReader) this).GetEnumerator();
88 void IDisposable.Dispose ()