| @@ -38,10 +38,8 namespace Implab.JSON { | |||||
| 38 | readonly bool m_flattenArrays; |
|
38 | readonly bool m_flattenArrays; | |
| 39 | readonly string m_arrayItemName; |
|
39 | readonly string m_arrayItemName; | |
| 40 | readonly XmlNameTable m_nameTable; |
|
40 | readonly XmlNameTable m_nameTable; | |
| 41 | readonly bool m_disposeParser; |
|
|||
| 42 |
|
41 | |||
| 43 |
|
|
42 | JSONXmlReader(JSONParser parser, JSONXmlReaderOptions options) { | |
| 44 | Safe.ArgumentNotNull(parser, "parser"); |
|
|||
| 45 | m_parser = parser; |
|
43 | m_parser = parser; | |
| 46 |
|
44 | |||
| 47 | if (options != null) { |
|
45 | if (options != null) { | |
| @@ -51,7 +49,6 namespace Implab.JSON { | |||||
| 51 | m_flattenArrays = options.FlattenArrays; |
|
49 | m_flattenArrays = options.FlattenArrays; | |
| 52 | m_arrayItemName = options.ArrayItemName ?? "item"; |
|
50 | m_arrayItemName = options.ArrayItemName ?? "item"; | |
| 53 | m_nameTable = options.NameTable ?? new NameTable(); |
|
51 | m_nameTable = options.NameTable ?? new NameTable(); | |
| 54 | m_disposeParser = options.DisposeParser; |
|
|||
| 55 | } else { |
|
52 | } else { | |
| 56 | m_prefix = String.Empty; |
|
53 | m_prefix = String.Empty; | |
| 57 | m_namespaceUri = String.Empty; |
|
54 | m_namespaceUri = String.Empty; | |
| @@ -59,7 +56,6 namespace Implab.JSON { | |||||
| 59 | m_flattenArrays = false; |
|
56 | m_flattenArrays = false; | |
| 60 | m_arrayItemName = "item"; |
|
57 | m_arrayItemName = "item"; | |
| 61 | m_nameTable = new NameTable(); |
|
58 | m_nameTable = new NameTable(); | |
| 62 | m_disposeParser = false; |
|
|||
| 63 | } |
|
59 | } | |
| 64 | } |
|
60 | } | |
| 65 |
|
61 | |||
| @@ -306,17 +302,23 namespace Implab.JSON { | |||||
| 306 |
|
302 | |||
| 307 | protected override void Dispose(bool disposing) { |
|
303 | protected override void Dispose(bool disposing) { | |
| 308 | if (disposing) { |
|
304 | if (disposing) { | |
| 309 | if (m_disposeParser) |
|
|||
| 310 |
|
|
305 | m_parser.Dispose(); | |
| 311 | } |
|
306 | } | |
| 312 | base.Dispose(disposing); |
|
307 | base.Dispose(disposing); | |
| 313 | } |
|
308 | } | |
| 314 |
|
309 | |||
|
|
310 | public static JSONXmlReader Create(string file, JSONXmlReaderOptions options) { | |||
|
|
311 | return Create(File.OpenText(file), options); | |||
|
|
312 | } | |||
| 315 |
|
313 | |||
| 316 |
public static JSONXmlReader |
|
314 | public static JSONXmlReader Create(TextReader reader, JSONXmlReaderOptions options) { | |
| 317 | var stream = File.OpenText(file); |
|
315 | return new JSONXmlReader(new JSONParser(reader, true), options); | |
| 318 | var parser = new JSONParser(stream, true); |
|
316 | } | |
| 319 | return new JSONXmlReader(parser, options); |
|
317 | ||
|
|
318 | public static JSONXmlReader Create(Stream stream, JSONXmlReaderOptions options) { | |||
|
|
319 | Safe.ArgumentNotNull(stream, "stream"); | |||
|
|
320 | // HACK don't dispose StreaReader to keep stream opened | |||
|
|
321 | return Create(new StreamReader(stream), options); | |||
| 320 | } |
|
322 | } | |
| 321 | } |
|
323 | } | |
| 322 | } |
|
324 | } | |
General Comments 0
You need to be logged in to leave comments.
Login now
