Follow formatting NUI
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / 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             {
19                 var c = unchecked((char)p);
20                 if (first && !hasLeadingDash && c == '-')
21                 {
22                     sb.Append((char)reader.Read());
23                     hasLeadingDash = true;
24                 }
25                 else if (first && c.IsNmStart())
26                 {
27                     sb.Append((char)reader.Read());
28                     first = false;
29                 }
30                 else if (first)
31                 { //a nmstart is expected
32                     throw new Exception();
33                 }
34                 else if (c.IsNmChar())
35                     sb.Append((char)reader.Read());
36                 else
37                     break;
38             }
39             return sb.ToString();
40         }
41
42         //name          {nmchar}+
43         public static string ReadName(this TextReader reader)
44         {
45             var sb = new StringBuilder();
46             int p;
47             while ((p = reader.Peek()) > 0)
48             {
49                 var c = unchecked((char)p);
50                 if (c.IsNmChar())
51                     sb.Append((char)reader.Read());
52                 else
53                     break;
54             }
55             return sb.ToString();
56         }
57
58         public static string ReadUntil(this TextReader reader, params char[] limit)
59         {
60             var sb = new StringBuilder();
61             int p;
62             while ((p = reader.Peek()) > 0)
63             {
64                 var c = unchecked((char)p);
65                 if (limit != null && limit.Contains(c))
66                     break;
67                 reader.Read();
68                 sb.Append(c);
69             }
70             return sb.ToString();
71         }
72
73         //w                     [ \t\r\n\f]*
74         public static void SkipWhiteSpaces(this TextReader reader)
75         {
76             int p;
77             while ((p = reader.Peek()) > 0)
78             {
79                 var c = unchecked((char)p);
80                 if (!c.IsW())
81                     break;
82                 reader.Read();
83             }
84         }
85     }
86 }