MCPcopy Index your code
hub / github.com/CoderLine/alphaTab / parse

Method parse

packages/alphatab/src/xml/XmlParser.ts:95–439  ·  view source on GitHub ↗
(str: string, p: number, parent: XmlNode)

Source from the content-addressed store, hash-verified

93 ]);
94
95 public static parse(str: string, p: number, parent: XmlNode): number {
96 let c: number = str.charCodeAt(p);
97 let state: XmlState = XmlState.Begin;
98 let next: XmlState = XmlState.Begin;
99 let start: number = 0;
100 let buf: string = '';
101 let escapeNext: XmlState = XmlState.Begin;
102 let xml: XmlNode | null = null;
103 let aname: string | null = null;
104
105 let nbrackets: number = 0;
106
107 let attrValQuote: number = 0;
108
109 while (p < str.length) {
110 c = str.charCodeAt(p);
111 switch (state) {
112 case XmlState.IgnoreSpaces:
113 switch (c) {
114 case XmlParser.CharCodeLF:
115 case XmlParser.CharCodeCR:
116 case XmlParser.CharCodeTab:
117 case XmlParser.CharCodeSpace:
118 break;
119 default:
120 state = next;
121 continue;
122 }
123 break;
124
125 case XmlState.Begin:
126 switch (c) {
127 case XmlParser.CharCodeLowerThan:
128 state = XmlState.IgnoreSpaces;
129 next = XmlState.BeginNode;
130 break;
131 default:
132 start = p;
133 state = XmlState.Pcdata;
134 continue;
135 }
136 break;
137
138 case XmlState.Pcdata:
139 if (c === XmlParser.CharCodeLowerThan) {
140 buf += str.substr(start, p - start);
141 const child: XmlNode = new XmlNode();
142 child.nodeType = XmlNodeType.Text;
143 child.value = buf;
144 buf = '';
145 parent.addChild(child);
146 state = XmlState.IgnoreSpaces;
147 next = XmlState.BeginNode;
148 } else if (c === XmlParser.CharCodeAmp) {
149 buf += str.substr(start, p - start);
150 state = XmlState.Escape;
151 escapeNext = XmlState.Pcdata;
152 start = p + 1;

Callers

nothing calls this directly

Calls 8

addChildMethod · 0.80
_isValidCharMethod · 0.80
parseIntMethod · 0.80
fromCharCodeMethod · 0.80
getMethod · 0.65
hasMethod · 0.45
setMethod · 0.45
toStringMethod · 0.45

Tested by

no test coverage detected