[MediaContent] Fix description of Delete method (#866)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI.Xaml / src / internal / XamlBinding / StyleSheets / TextReaderExtensions.cs
1 using System;
2 using System.IO;
3 using System.Linq;
4 using System.Text;
5
6 namespace Tizen.NUI.StyleSheets
7 {
8     internal static class TextReaderExtensions
9     {
10         //ident         [-]?{nmstart}{nmchar}*
11         public static string ReadIdent(this TextReader reader)
12         {
13             var sb = new StringBuilder();
14             bool first = true;
15             bool hasLeadingDash = false;
16             int p;
17             while ((p = reader.Peek()) > 0) {
18                 var c = unchecked((char)p);
19                 if (first && !hasLeadingDash && c == '-') {
20                     sb.Append((char)reader.Read());
21                     hasLeadingDash = true;
22                 } else if (first && c.IsNmStart()) {
23                     sb.Append((char)reader.Read());
24                     first = false;
25                 } else if (first) { //a nmstart is expected
26                     throw new Exception();
27                 } else if (c.IsNmChar())
28                     sb.Append((char)reader.Read());
29                 else
30                     break;
31             }
32             return sb.ToString();
33         }
34
35         //name          {nmchar}+
36         public static string ReadName(this TextReader reader)
37         {
38             var sb = new StringBuilder();
39             int p;
40             while ((p = reader.Peek()) > 0) {
41                 var c = unchecked((char)p);
42                 if (c.IsNmChar())
43                     sb.Append((char)reader.Read());
44                 else
45                     break;
46             }
47             return sb.ToString();
48         }
49
50         public static string ReadUntil(this TextReader reader, params char[] limit)
51         {
52             var sb = new StringBuilder();
53             int p;
54             while ((p = reader.Peek()) > 0) {
55                 var c = unchecked((char)p);
56                 if (limit != null && limit.Contains(c))
57                     break;
58                 reader.Read();
59                 sb.Append(c);
60             }
61             return sb.ToString();
62         }
63
64         //w                     [ \t\r\n\f]*
65         public static void SkipWhiteSpaces(this TextReader reader)
66         {
67             int p;
68             while ((p = reader.Peek()) > 0) {
69                 var c = unchecked((char)p);
70                 if (!c.IsW())
71                     break;
72                 reader.Read();
73             }
74         }
75     }
76 }