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