diff Implab/Formats/JSON/JsonTextScanner.cs @ 228:6fa235c5a760 v2

Rewritten JsonScanner, JsonParser, fixed naming style
author cin
date Tue, 12 Sep 2017 01:19:12 +0300
parents
children 5f7a3e1d32b9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Implab/Formats/JSON/JsonTextScanner.cs	Tue Sep 12 01:19:12 2017 +0300
@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Implab.Formats.Json {
+    public class JsonTextScanner : JsonScanner {
+        const int _bufferSize = 4096;
+        readonly TextReader m_reader;
+
+        JsonTextScanner(TextReader reader, char[] buffer) : base(buffer, 0, 0) {
+            m_reader = reader;
+        }
+
+        protected override int Read(char[] buffer, int offset, int size) {
+            return m_reader.Read(buffer, offset, size);
+        }
+
+        public static JsonTextScanner Create(string file, Encoding encoding) {
+            return new JsonTextScanner(new StreamReader(file, encoding), new char[_bufferSize]);
+        }
+
+        public static JsonTextScanner Create(string file) {
+            return new JsonTextScanner(new StreamReader(file), new char[_bufferSize]);
+        }
+
+        public static JsonTextScanner Create(Stream stream, Encoding encoding) {
+            return new JsonTextScanner(new StreamReader(stream, encoding), new char[_bufferSize]);
+        }
+
+        public static JsonTextScanner Create(Stream stream) {
+            return new JsonTextScanner(new StreamReader(stream), new char[_bufferSize]);
+        }
+
+        public static JsonTextScanner Create(TextReader reader) {
+            Safe.ArgumentNotNull(reader, nameof(reader));
+            return new JsonTextScanner(reader, new char[_bufferSize]);
+        }
+
+        protected override void Dispose(bool disposing) {
+            if (disposing)
+                Safe.Dispose(m_reader);
+
+            base.Dispose(disposing);
+        }
+    }
+}