@rgrove/parse-xml 4.1.0 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,22 +49,14 @@ class Parser {
49
49
  */
50
50
  constructor(xml, options = {}) {
51
51
  let doc = this.document = new XmlDocument_js_1.XmlDocument();
52
- let scanner = this.scanner = new StringScanner_js_1.StringScanner(xml);
53
52
  this.currentNode = doc;
54
53
  this.options = options;
54
+ this.scanner = new StringScanner_js_1.StringScanner(xml);
55
55
  if (this.options.includeOffsets) {
56
56
  doc.start = 0;
57
57
  doc.end = xml.length;
58
58
  }
59
- scanner.consumeStringFast('\uFEFF'); // byte order mark
60
- this.consumeProlog();
61
- if (!this.consumeElement()) {
62
- throw this.error('Root element is missing or invalid');
63
- }
64
- while (this.consumeMisc()) { } // eslint-disable-line no-empty
65
- if (!scanner.isEnd) {
66
- throw this.error('Extra content at the end of the document');
67
- }
59
+ this.parse();
68
60
  }
69
61
  /**
70
62
  * Adds the given `XmlNode` as a child of `this.currentNode`.
@@ -84,11 +76,18 @@ class Parser {
84
76
  /**
85
77
  * Adds the given _text_ to the document, either by appending it to a
86
78
  * preceding `XmlText` node (if possible) or by creating a new `XmlText` node.
79
+ *
80
+ * When _normalize_ is `true` (the default), line breaks in _text_ are
81
+ * normalized per section 2.11 of the XML spec. This must be `false` for text
82
+ * that comes from a character or entity reference, since references aren't
83
+ * subject to line break normalization.
87
84
  */
88
- addText(text, charIndex) {
85
+ addText(text, charIndex, normalize = true) {
89
86
  let { children } = this.currentNode;
90
87
  let { length } = children;
91
- text = normalizeLineBreaks(text);
88
+ if (normalize) {
89
+ text = normalizeLineBreaks(text);
90
+ }
92
91
  if (length > 0) {
93
92
  let prevNode = children[length - 1];
94
93
  if (prevNode?.type === XmlNode_js_1.XmlNode.TYPE_TEXT) {
@@ -165,7 +164,7 @@ class Parser {
165
164
  ? syntax.attValueCharDoubleQuote
166
165
  : syntax.attValueCharSingleQuote;
167
166
  matchLoop: while (!scanner.isEnd) {
168
- chars = scanner.consumeMatch(regex);
167
+ chars = scanner.consumeUntilMatch(regex);
169
168
  if (chars) {
170
169
  this.validateChars(chars);
171
170
  value += chars.replace(syntax.attValueNormalizedWhitespace, ' ');
@@ -179,7 +178,7 @@ class Parser {
179
178
  continue;
180
179
  case '<':
181
180
  throw this.error('Unescaped `<` is not allowed in an attribute value');
182
- case emptyString:
181
+ default:
183
182
  break matchLoop;
184
183
  }
185
184
  }
@@ -198,12 +197,12 @@ class Parser {
198
197
  consumeCdataSection() {
199
198
  let { scanner } = this;
200
199
  let startIndex = scanner.charIndex;
201
- if (!scanner.consumeStringFast('<![CDATA[')) {
200
+ if (!scanner.consumeString('<![CDATA[')) {
202
201
  return false;
203
202
  }
204
203
  let text = scanner.consumeUntilString(']]>');
205
204
  this.validateChars(text);
206
- if (!scanner.consumeStringFast(']]>')) {
205
+ if (!scanner.consumeString(']]>')) {
207
206
  throw this.error('Unclosed CDATA section');
208
207
  }
209
208
  return this.options.preserveCdata
@@ -238,12 +237,12 @@ class Parser {
238
237
  consumeComment() {
239
238
  let { scanner } = this;
240
239
  let startIndex = scanner.charIndex;
241
- if (!scanner.consumeStringFast('<!--')) {
240
+ if (!scanner.consumeString('<!--')) {
242
241
  return false;
243
242
  }
244
243
  let content = scanner.consumeUntilString('--');
245
244
  this.validateChars(content);
246
- if (!scanner.consumeStringFast('-->')) {
245
+ if (!scanner.consumeString('-->')) {
247
246
  if (scanner.peek(2) === '--') {
248
247
  throw this.error("The string `--` isn't allowed inside a comment");
249
248
  }
@@ -266,7 +265,7 @@ class Parser {
266
265
  let startIndex = this.scanner.charIndex;
267
266
  let ref = this.consumeReference();
268
267
  return ref
269
- ? this.addText(ref, startIndex)
268
+ ? this.addText(ref, startIndex, false)
270
269
  : false;
271
270
  }
272
271
  /**
@@ -281,7 +280,7 @@ class Parser {
281
280
  consumeDoctypeDeclaration() {
282
281
  let { scanner } = this;
283
282
  let startIndex = scanner.charIndex;
284
- if (!scanner.consumeStringFast('<!DOCTYPE')) {
283
+ if (!scanner.consumeString('<!DOCTYPE')) {
285
284
  return false;
286
285
  }
287
286
  let name = this.consumeWhitespace()
@@ -292,7 +291,7 @@ class Parser {
292
291
  let publicId;
293
292
  let systemId;
294
293
  if (this.consumeWhitespace()) {
295
- if (scanner.consumeStringFast('PUBLIC')) {
294
+ if (scanner.consumeString('PUBLIC')) {
296
295
  publicId = this.consumeWhitespace()
297
296
  && this.consumePubidLiteral();
298
297
  if (publicId === false) {
@@ -300,7 +299,7 @@ class Parser {
300
299
  }
301
300
  this.consumeWhitespace();
302
301
  }
303
- if (publicId !== undefined || scanner.consumeStringFast('SYSTEM')) {
302
+ if (publicId !== undefined || scanner.consumeString('SYSTEM')) {
304
303
  this.consumeWhitespace();
305
304
  systemId = this.consumeSystemLiteral();
306
305
  if (systemId === false) {
@@ -310,16 +309,16 @@ class Parser {
310
309
  }
311
310
  }
312
311
  let internalSubset;
313
- if (scanner.consumeStringFast('[')) {
312
+ if (scanner.consumeString('[')) {
314
313
  // The internal subset may contain comments that contain `]` characters,
315
314
  // so we can't use `consumeUntilString()` here.
316
315
  internalSubset = scanner.consumeUntilMatch(/\][\x20\t\r\n]*>/);
317
- if (!scanner.consumeStringFast(']')) {
316
+ if (!scanner.consumeString(']')) {
318
317
  throw this.error('Unclosed internal subset');
319
318
  }
320
319
  this.consumeWhitespace();
321
320
  }
322
- if (!scanner.consumeStringFast('>')) {
321
+ if (!scanner.consumeString('>')) {
323
322
  throw this.error('Unclosed doctype declaration');
324
323
  }
325
324
  return this.options.preserveDocumentType
@@ -335,7 +334,7 @@ class Parser {
335
334
  consumeElement() {
336
335
  let { scanner } = this;
337
336
  let startIndex = scanner.charIndex;
338
- if (!scanner.consumeStringFast('<')) {
337
+ if (!scanner.consumeString('<')) {
339
338
  return false;
340
339
  }
341
340
  let name = this.consumeName();
@@ -344,11 +343,11 @@ class Parser {
344
343
  return false;
345
344
  }
346
345
  let attributes = this.consumeAttributes();
347
- let isEmpty = !!scanner.consumeStringFast('/>');
346
+ let isEmpty = !!scanner.consumeString('/>');
348
347
  let element = new XmlElement_js_1.XmlElement(name, attributes);
349
348
  element.parent = this.currentNode;
350
349
  if (!isEmpty) {
351
- if (!scanner.consumeStringFast('>')) {
350
+ if (!scanner.consumeString('>')) {
352
351
  throw this.error(`Unclosed start tag for element \`${name}\``);
353
352
  }
354
353
  this.currentNode = element;
@@ -361,14 +360,14 @@ class Parser {
361
360
  || this.consumeComment());
362
361
  let endTagMark = scanner.charIndex;
363
362
  let endTagName;
364
- if (!scanner.consumeStringFast('</')
363
+ if (!scanner.consumeString('</')
365
364
  || !(endTagName = this.consumeName())
366
365
  || endTagName !== name) {
367
366
  scanner.reset(endTagMark);
368
367
  throw this.error(`Missing end tag for element ${name}`);
369
368
  }
370
369
  this.consumeWhitespace();
371
- if (!scanner.consumeStringFast('>')) {
370
+ if (!scanner.consumeString('>')) {
372
371
  throw this.error(`Unclosed end tag for element ${name}`);
373
372
  }
374
373
  this.currentNode = element.parent;
@@ -383,7 +382,7 @@ class Parser {
383
382
  */
384
383
  consumeEqual() {
385
384
  this.consumeWhitespace();
386
- if (this.scanner.consumeStringFast('=')) {
385
+ if (this.scanner.consumeString('=')) {
387
386
  this.consumeWhitespace();
388
387
  return true;
389
388
  }
@@ -420,7 +419,7 @@ class Parser {
420
419
  consumeProcessingInstruction() {
421
420
  let { scanner } = this;
422
421
  let startIndex = scanner.charIndex;
423
- if (!scanner.consumeStringFast('<?')) {
422
+ if (!scanner.consumeString('<?')) {
424
423
  return false;
425
424
  }
426
425
  let name = this.consumeName();
@@ -434,14 +433,14 @@ class Parser {
434
433
  throw this.error('Invalid processing instruction');
435
434
  }
436
435
  if (!this.consumeWhitespace()) {
437
- if (scanner.consumeStringFast('?>')) {
436
+ if (scanner.consumeString('?>')) {
438
437
  return this.addNode(new XmlProcessingInstruction_js_1.XmlProcessingInstruction(name), startIndex);
439
438
  }
440
439
  throw this.error('Whitespace is required after a processing instruction name');
441
440
  }
442
441
  let content = scanner.consumeUntilString('?>');
443
442
  this.validateChars(content);
444
- if (!scanner.consumeStringFast('?>')) {
443
+ if (!scanner.consumeString('?>')) {
445
444
  throw this.error('Unterminated processing instruction');
446
445
  }
447
446
  return this.addNode(new XmlProcessingInstruction_js_1.XmlProcessingInstruction(name, normalizeLineBreaks(content)), startIndex);
@@ -495,7 +494,7 @@ class Parser {
495
494
  */
496
495
  consumeReference() {
497
496
  let { scanner } = this;
498
- if (!scanner.consumeStringFast('&')) {
497
+ if (!scanner.consumeString('&')) {
499
498
  return false;
500
499
  }
501
500
  let ref = scanner.consumeMatchFn(syntax.isReferenceChar);
@@ -556,13 +555,13 @@ class Parser {
556
555
  */
557
556
  consumeSystemLiteral() {
558
557
  let { scanner } = this;
559
- let quote = scanner.consumeStringFast('"') || scanner.consumeStringFast("'");
558
+ let quote = scanner.consumeString('"') || scanner.consumeString("'");
560
559
  if (!quote) {
561
560
  return false;
562
561
  }
563
562
  let value = scanner.consumeUntilString(quote);
564
563
  this.validateChars(value);
565
- if (!scanner.consumeStringFast(quote)) {
564
+ if (!scanner.consumeString(quote)) {
566
565
  throw this.error('Missing end quote');
567
566
  }
568
567
  return value;
@@ -585,13 +584,13 @@ class Parser {
585
584
  consumeXmlDeclaration() {
586
585
  let { scanner } = this;
587
586
  let startIndex = scanner.charIndex;
588
- if (!scanner.consumeStringFast('<?xml')) {
587
+ if (!scanner.consumeString('<?xml')) {
589
588
  return false;
590
589
  }
591
590
  if (!this.consumeWhitespace()) {
592
591
  throw this.error('Invalid XML declaration');
593
592
  }
594
- let version = !!scanner.consumeStringFast('version')
593
+ let version = !!scanner.consumeString('version')
595
594
  && this.consumeEqual()
596
595
  && this.consumeSystemLiteral();
597
596
  if (version === false) {
@@ -603,13 +602,16 @@ class Parser {
603
602
  let encoding;
604
603
  let standalone;
605
604
  if (this.consumeWhitespace()) {
606
- encoding = !!scanner.consumeStringFast('encoding')
605
+ encoding = !!scanner.consumeString('encoding')
607
606
  && this.consumeEqual()
608
607
  && this.consumeSystemLiteral();
609
608
  if (encoding) {
609
+ if (!/^[A-Za-z][\w.-]*$/.test(encoding)) {
610
+ throw this.error('Invalid character in encoding name');
611
+ }
610
612
  this.consumeWhitespace();
611
613
  }
612
- standalone = !!scanner.consumeStringFast('standalone')
614
+ standalone = !!scanner.consumeString('standalone')
613
615
  && this.consumeEqual()
614
616
  && this.consumeSystemLiteral();
615
617
  if (standalone) {
@@ -619,7 +621,7 @@ class Parser {
619
621
  this.consumeWhitespace();
620
622
  }
621
623
  }
622
- if (!scanner.consumeStringFast('?>')) {
624
+ if (!scanner.consumeString('?>')) {
623
625
  throw this.error('Invalid or unclosed XML declaration');
624
626
  }
625
627
  return this.options.preserveXmlDeclaration
@@ -633,6 +635,20 @@ class Parser {
633
635
  let { scanner } = this;
634
636
  return new XmlError_js_1.XmlError(message, scanner.charIndex, scanner.string);
635
637
  }
638
+ /**
639
+ * Parses the XML input.
640
+ */
641
+ parse() {
642
+ this.scanner.consumeString('\uFEFF'); // byte order mark
643
+ this.consumeProlog();
644
+ if (!this.consumeElement()) {
645
+ throw this.error('Root element is missing or invalid');
646
+ }
647
+ while (this.consumeMisc()) { } // eslint-disable-line no-empty
648
+ if (!this.scanner.isEnd) {
649
+ throw this.error('Extra content at the end of the document');
650
+ }
651
+ }
636
652
  /**
637
653
  * Throws an invalid character error if any character in the given _string_
638
654
  * isn't a valid XML character.
@@ -1 +1 @@
1
- {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../src/lib/Parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../src/lib/Parser.ts"],"names":[],"mappings":"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"}
@@ -32,21 +32,21 @@ export declare class StringScanner {
32
32
  *
33
33
  * If no characters could be consumed, an empty string will be returned.
34
34
  */
35
- consume(count?: number): string;
35
+ consume(charCount?: number): string;
36
36
  /**
37
- * Consumes a match for the given sticky regex, advances the scanner, updates
38
- * the `lastIndex` property of the regex, and returns the matching string.
37
+ * Consumes and returns the given number of bytes if possible, advancing the
38
+ * scanner and stopping if the end of the string is reached.
39
39
  *
40
- * The regex must have a sticky flag ("y") so that its `lastIndex` prop can be
41
- * used to anchor the match at the current scanner position.
40
+ * It's up to the caller to ensure that the given byte count doesn't split a
41
+ * multibyte character.
42
42
  *
43
- * Returns the consumed string, or an empty string if nothing was consumed.
43
+ * If no bytes could be consumed, an empty string will be returned.
44
44
  */
45
- consumeMatch(regex: RegExp): string;
45
+ consumeBytes(byteCount: number): string;
46
46
  /**
47
- * Consumes and returns all characters for which the given function returns a
48
- * truthy value, stopping on the first falsy return value or if the end of the
49
- * input is reached.
47
+ * Consumes and returns all characters for which the given function returns
48
+ * `true`, stopping when `false` is returned or the end of the input is
49
+ * reached.
50
50
  */
51
51
  consumeMatchFn(fn: (char: string) => boolean): string;
52
52
  /**
@@ -57,12 +57,6 @@ export declare class StringScanner {
57
57
  * string will be returned and the scanner will not be advanced.
58
58
  */
59
59
  consumeString(stringToConsume: string): string;
60
- /**
61
- * Does the same thing as `consumeString()`, but doesn't support consuming
62
- * multibyte characters. This can be faster if you only need to match single
63
- * byte characters.
64
- */
65
- consumeStringFast(stringToConsume: string): string;
66
60
  /**
67
61
  * Consumes characters until the given global regex is matched, advancing the
68
62
  * scanner up to (but not beyond) the beginning of the match. If the regex
@@ -1 +1 @@
1
- {"version":3,"file":"StringScanner.d.ts","sourceRoot":"","sources":["../../src/lib/StringScanner.ts"],"names":[],"mappings":"AAGA,eAAe;AACf,qBAAa,aAAa;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;gBAE5B,MAAM,EAAE,MAAM;IAsB1B;;OAEG;IACH,IAAI,KAAK,YAER;IAID;;;OAGG;IACH,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,UAAqB,GAAG,MAAM;IAWhF;;;OAGG;IACH,OAAO,CAAC,KAAK,SAAI;IAIjB;;;OAGG;IACH,oBAAoB,CAAC,SAAS,GAAE,MAAuB,GAAG,MAAM;IAMhE;;;;;OAKG;IACH,OAAO,CAAC,KAAK,SAAI,GAAG,MAAM;IAM1B;;;;;;;;OAQG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAkBnC;;;;OAIG;IACH,cAAc,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM;IAYrD;;;;;;OAMG;IACH,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;IAoB9C;;;;OAIG;IACH,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;IAWlD;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAaxC;;;;;;OAMG;IACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAchD;;;;OAIG;IACH,IAAI,CAAC,KAAK,SAAI,GAAG,MAAM;IAmBvB;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,SAAI;CAKhB"}
1
+ {"version":3,"file":"StringScanner.d.ts","sourceRoot":"","sources":["../../src/lib/StringScanner.ts"],"names":[],"mappings":"AAGA,eAAe;AACf,qBAAa,aAAa;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;gBAE5B,MAAM,EAAE,MAAM;IAsB1B;;OAEG;IACH,IAAI,KAAK,YAER;IAID;;;OAGG;IACH,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,UAAqB,GAAG,MAAM;IAWhF;;;OAGG;IACH,OAAO,CAAC,KAAK,SAAI;IAIjB;;;OAGG;IACH,oBAAoB,CAAC,SAAS,GAAE,MAAuB,GAAG,MAAM;IAMhE;;;;;OAKG;IACH,OAAO,CAAC,SAAS,SAAI,GAAG,MAAM;IAM9B;;;;;;;;OAQG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAOvC;;;;OAIG;IACH,cAAc,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM;IA6BrD;;;;;;OAMG;IACH,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;IAY9C;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAUxC;;;;;;OAMG;IACH,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAShD;;;;OAIG;IACH,IAAI,CAAC,KAAK,SAAI,GAAG,MAAM;IAQvB;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,SAAI;CAKhB"}
@@ -65,46 +65,54 @@ class StringScanner {
65
65
  *
66
66
  * If no characters could be consumed, an empty string will be returned.
67
67
  */
68
- consume(count = 1) {
69
- let chars = this.peek(count);
70
- this.advance(count);
68
+ consume(charCount = 1) {
69
+ let chars = this.peek(charCount);
70
+ this.advance(charCount);
71
71
  return chars;
72
72
  }
73
73
  /**
74
- * Consumes a match for the given sticky regex, advances the scanner, updates
75
- * the `lastIndex` property of the regex, and returns the matching string.
74
+ * Consumes and returns the given number of bytes if possible, advancing the
75
+ * scanner and stopping if the end of the string is reached.
76
76
  *
77
- * The regex must have a sticky flag ("y") so that its `lastIndex` prop can be
78
- * used to anchor the match at the current scanner position.
77
+ * It's up to the caller to ensure that the given byte count doesn't split a
78
+ * multibyte character.
79
79
  *
80
- * Returns the consumed string, or an empty string if nothing was consumed.
80
+ * If no bytes could be consumed, an empty string will be returned.
81
81
  */
82
- consumeMatch(regex) {
83
- if (!regex.sticky) {
84
- throw new Error('`regex` must have a sticky flag ("y")');
85
- }
86
- regex.lastIndex = this.charIndexToByteIndex();
87
- let result = regex.exec(this.string);
88
- if (result === null || result.length === 0) {
89
- return emptyString;
90
- }
91
- let match = result[0];
92
- this.advance(this.charLength(match));
93
- return match;
82
+ consumeBytes(byteCount) {
83
+ let byteIndex = this.charIndexToByteIndex();
84
+ let result = this.string.slice(byteIndex, byteIndex + byteCount);
85
+ this.advance(this.charLength(result));
86
+ return result;
94
87
  }
95
88
  /**
96
- * Consumes and returns all characters for which the given function returns a
97
- * truthy value, stopping on the first falsy return value or if the end of the
98
- * input is reached.
89
+ * Consumes and returns all characters for which the given function returns
90
+ * `true`, stopping when `false` is returned or the end of the input is
91
+ * reached.
99
92
  */
100
93
  consumeMatchFn(fn) {
101
- let char;
102
- let match = emptyString;
103
- while ((char = this.peek()) && fn(char)) {
104
- match += char;
105
- this.advance();
94
+ let { length, multiByteMode, string } = this;
95
+ let startByteIndex = this.charIndexToByteIndex();
96
+ let endByteIndex = startByteIndex;
97
+ if (multiByteMode) {
98
+ while (endByteIndex < length) {
99
+ let char = string[endByteIndex];
100
+ let isSurrogatePair = char >= '\uD800' && char <= '\uDBFF';
101
+ if (isSurrogatePair) {
102
+ char += string[endByteIndex + 1];
103
+ }
104
+ if (!fn(char)) {
105
+ break;
106
+ }
107
+ endByteIndex += isSurrogatePair ? 2 : 1;
108
+ }
106
109
  }
107
- return match;
110
+ else {
111
+ while (endByteIndex < length && fn(string[endByteIndex])) {
112
+ ++endByteIndex;
113
+ }
114
+ }
115
+ return this.consumeBytes(endByteIndex - startByteIndex);
108
116
  }
109
117
  /**
110
118
  * Consumes the given string if it exists at the current character index, and
@@ -114,29 +122,10 @@ class StringScanner {
114
122
  * string will be returned and the scanner will not be advanced.
115
123
  */
116
124
  consumeString(stringToConsume) {
117
- if (this.consumeStringFast(stringToConsume)) {
118
- return stringToConsume;
119
- }
120
- if (this.multiByteMode) {
121
- let { length } = stringToConsume;
122
- let charLengthToMatch = this.charLength(stringToConsume);
123
- if (charLengthToMatch !== length
124
- && stringToConsume === this.peek(charLengthToMatch)) {
125
- this.advance(charLengthToMatch);
126
- return stringToConsume;
127
- }
128
- }
129
- return emptyString;
130
- }
131
- /**
132
- * Does the same thing as `consumeString()`, but doesn't support consuming
133
- * multibyte characters. This can be faster if you only need to match single
134
- * byte characters.
135
- */
136
- consumeStringFast(stringToConsume) {
137
125
  let { length } = stringToConsume;
138
- if (this.peek(length) === stringToConsume) {
139
- this.advance(length);
126
+ let byteIndex = this.charIndexToByteIndex();
127
+ if (stringToConsume === this.string.slice(byteIndex, byteIndex + length)) {
128
+ this.advance(length === 1 ? 1 : this.charLength(stringToConsume));
140
129
  return stringToConsume;
141
130
  }
142
131
  return emptyString;
@@ -149,14 +138,12 @@ class StringScanner {
149
138
  * Returns the consumed string, or an empty string if nothing was consumed.
150
139
  */
151
140
  consumeUntilMatch(regex) {
152
- let restOfString = this.string.slice(this.charIndexToByteIndex());
153
- let matchByteIndex = restOfString.search(regex);
154
- if (matchByteIndex <= 0) {
155
- return emptyString;
156
- }
157
- let result = restOfString.slice(0, matchByteIndex);
158
- this.advance(this.charLength(result));
159
- return result;
141
+ let matchByteIndex = this.string
142
+ .slice(this.charIndexToByteIndex())
143
+ .search(regex);
144
+ return matchByteIndex > 0
145
+ ? this.consumeBytes(matchByteIndex)
146
+ : emptyString;
160
147
  }
161
148
  /**
162
149
  * Consumes characters until the given string is found, advancing the scanner
@@ -166,15 +153,11 @@ class StringScanner {
166
153
  * Returns the consumed string, or an empty string if nothing was consumed.
167
154
  */
168
155
  consumeUntilString(searchString) {
169
- let { string } = this;
170
156
  let byteIndex = this.charIndexToByteIndex();
171
- let matchByteIndex = string.indexOf(searchString, byteIndex);
172
- if (matchByteIndex <= 0) {
173
- return emptyString;
174
- }
175
- let result = string.slice(byteIndex, matchByteIndex);
176
- this.advance(this.charLength(result));
177
- return result;
157
+ let matchByteIndex = this.string.indexOf(searchString, byteIndex);
158
+ return matchByteIndex > 0
159
+ ? this.consumeBytes(matchByteIndex - byteIndex)
160
+ : emptyString;
178
161
  }
179
162
  /**
180
163
  * Returns the given number of characters starting at the current character
@@ -182,16 +165,10 @@ class StringScanner {
182
165
  * input string.
183
166
  */
184
167
  peek(count = 1) {
185
- let { charIndex, multiByteMode, string } = this;
186
- if (multiByteMode) {
187
- // Inlining this comparison instead of checking `this.isEnd` improves perf
188
- // slightly since `peek()` is called so frequently.
189
- if (charIndex >= this.charCount) {
190
- return emptyString;
191
- }
192
- return string.slice(this.charIndexToByteIndex(charIndex), this.charIndexToByteIndex(charIndex + count));
193
- }
194
- return string.slice(charIndex, charIndex + count);
168
+ let { charIndex, string } = this;
169
+ return this.multiByteMode
170
+ ? string.slice(this.charIndexToByteIndex(charIndex), this.charIndexToByteIndex(charIndex + count))
171
+ : string.slice(charIndex, charIndex + count);
195
172
  }
196
173
  /**
197
174
  * Resets the scanner position to the given character _index_, or to the start
@@ -1 +1 @@
1
- {"version":3,"file":"StringScanner.js","sourceRoot":"","sources":["../../src/lib/StringScanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StringScanner.js","sourceRoot":"","sources":["../../src/lib/StringScanner.ts"],"names":[],"mappings":"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"}