2 using System.Collections.Generic;
5 namespace Tizen.NUI.StyleSheets
7 internal sealed class CssReader : TextReader
9 readonly TextReader _reader;
11 public CssReader(TextReader reader)
14 throw new ArgumentNullException(nameof(reader));
19 readonly Queue<char> _cache = new Queue<char>();
22 //TODO unescape escaped sequences
23 public override int Peek()
28 int p = _reader.Peek();
31 if (unchecked((char)p) != '/')
34 _cache.Enqueue(unchecked((char)_reader.Read()));
38 if (unchecked((char)p) != '*')
42 _reader.Read(); //consume the '*'
46 var next = _reader.Read();
49 if (unchecked((char)next) == '*')
51 else if (hasStar && unchecked((char)next) == '/')
52 return Peek(); //recursively call self for comments following comments
59 //TODO unescape escaped sequences
60 public override int Read()
63 return _cache.Dequeue();
65 int p = _reader.Read();
68 var c = unchecked((char)p);
75 return _cache.Dequeue();
76 c = unchecked((char)p);
78 return _cache.Dequeue();
81 _reader.Read(); //consume the '*'
85 var next = _reader.Read();
88 if (unchecked((char)next) == '*')
90 else if (hasStar && unchecked((char)next) == '/')
91 return Read(); //recursively call self for comments following comments