Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
WhitespaceRuleReader.cs
Go to the documentation of this file.
2
4{
5 private readonly WhitespaceRuleLookup _wsRules;
6
7 private readonly BitStack _stkStrip;
8
9 private bool _shouldStrip;
10
11 private bool _preserveAdjacent;
12
13 private string _val;
14
15 public override string Value
16 {
17 get
18 {
19 if (_val != null)
20 {
21 return _val;
22 }
23 return base.Value;
24 }
25 }
26
28 {
29 if (wsRules == null)
30 {
31 return baseReader;
32 }
33 XmlReaderSettings settings = baseReader.Settings;
34 if (settings != null)
35 {
36 if (settings.IgnoreWhitespace)
37 {
38 return baseReader;
39 }
40 }
41 else
42 {
44 {
45 return baseReader;
46 }
48 {
49 return baseReader;
50 }
51 }
53 }
54
65
66 public override bool Read()
67 {
68 string text = null;
69 _val = null;
70 while (base.Read())
71 {
72 switch (base.NodeType)
73 {
74 case XmlNodeType.Element:
75 if (!base.IsEmptyElement)
76 {
78 _shouldStrip = _wsRules.ShouldStripSpace(base.LocalName, base.NamespaceURI) && base.XmlSpace != XmlSpace.Preserve;
79 }
80 break;
81 case XmlNodeType.EndElement:
83 break;
84 case XmlNodeType.Text:
85 case XmlNodeType.CDATA:
87 {
88 return true;
89 }
90 if (!_shouldStrip)
91 {
92 break;
93 }
95 {
96 if (text != null)
97 {
98 _val = text + base.Value;
99 }
100 _preserveAdjacent = true;
101 return true;
102 }
103 goto case XmlNodeType.Whitespace;
104 case XmlNodeType.Whitespace:
105 case XmlNodeType.SignificantWhitespace:
107 {
108 return true;
109 }
110 if (_shouldStrip)
111 {
112 text = ((text != null) ? (text + base.Value) : base.Value);
113 continue;
114 }
115 break;
116 case XmlNodeType.EndEntity:
117 continue;
118 }
119 _preserveAdjacent = false;
120 return true;
121 }
122 return false;
123 }
124}
void PushBit(bool bit)
Definition BitStack.cs:16
static bool IsOnlyWhitespace(string str)
bool ShouldStripSpace(string localName, string namespaceName)
WhitespaceRuleReader(XmlReader baseReader, WhitespaceRuleLookup wsRules)
static XmlReader CreateReader(XmlReader baseReader, WhitespaceRuleLookup wsRules)