htmljs-parser 5.3.0 → 5.4.0

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.
package/dist/index.js CHANGED
@@ -272,6 +272,8 @@ var Parser = class {
272
272
  cur++;
273
273
  if (this.lookAheadFor(str, cur)) {
274
274
  this.pos = cur;
275
+ if (this.forward > 1)
276
+ this.forward = 1;
275
277
  return true;
276
278
  }
277
279
  return false;
@@ -458,7 +460,7 @@ var OPEN_TAG = {
458
460
  }
459
461
  },
460
462
  eol(_, tag) {
461
- if (this.isConcise && tag.stage !== 5 /* ATTR_GROUP */) {
463
+ if (this.isConcise && tag.stage !== 5 /* ATTR_GROUP */ && !this.consumeWhitespaceIfBefore(",")) {
462
464
  this.exitState();
463
465
  }
464
466
  },
@@ -1781,11 +1783,14 @@ function lookBehindForOperator(data, pos) {
1781
1783
  case 60 /* OPEN_ANGLE_BRACKET */:
1782
1784
  case 62 /* CLOSE_ANGLE_BRACKET */:
1783
1785
  case 37 /* PERCENT */:
1784
- case 46 /* PERIOD */:
1785
1786
  case 124 /* PIPE */:
1786
1787
  case 63 /* QUESTION */:
1787
1788
  case 126 /* TILDE */:
1788
1789
  return curPos;
1790
+ case 46 /* PERIOD */: {
1791
+ const nextPos = lookAheadWhile(isWhitespaceCode, data, pos);
1792
+ return isWordCode(data.charCodeAt(nextPos)) ? nextPos : -1;
1793
+ }
1789
1794
  case 43 /* PLUS */:
1790
1795
  case 45 /* HYPHEN */: {
1791
1796
  if (data.charCodeAt(curPos - 1) === code) {
@@ -1828,8 +1833,10 @@ function lookAheadForOperator(data, pos) {
1828
1833
  case 123 /* OPEN_CURLY_BRACE */:
1829
1834
  case 40 /* OPEN_PAREN */:
1830
1835
  return pos;
1831
- case 46 /* PERIOD */:
1832
- return data.charCodeAt(pos + 1) === 46 /* PERIOD */ ? -1 : pos + 1;
1836
+ case 46 /* PERIOD */: {
1837
+ const nextPos = lookAheadWhile(isWhitespaceCode, data, pos + 1);
1838
+ return isWordCode(data.charCodeAt(nextPos)) ? nextPos : -1;
1839
+ }
1833
1840
  default: {
1834
1841
  for (const keyword of binaryKeywords) {
1835
1842
  let nextPos = lookAheadFor(data, pos, keyword);
@@ -1867,7 +1874,7 @@ function canFollowDivision(code) {
1867
1874
  return isWordCode(code) || code === 37 /* PERCENT */ || code === 41 /* CLOSE_PAREN */ || code === 46 /* PERIOD */ || code === 60 /* OPEN_ANGLE_BRACKET */ || code === 93 /* CLOSE_SQUARE_BRACKET */ || code === 125 /* CLOSE_CURLY_BRACE */;
1868
1875
  }
1869
1876
  function isWordCode(code) {
1870
- return code >= 65 /* UPPER_A */ && code <= 90 /* UPPER_Z */ || code >= 97 /* LOWER_A */ && code <= 122 /* LOWER_Z */ || code >= 48 /* NUMBER_0 */ && code <= 57 /* NUMBER_9 */ || code === 95 /* UNDERSCORE */;
1877
+ return code >= 65 /* UPPER_A */ && code <= 90 /* UPPER_Z */ || code >= 97 /* LOWER_A */ && code <= 122 /* LOWER_Z */ || code >= 48 /* NUMBER_0 */ && code <= 57 /* NUMBER_9 */ || code == 36 /* DOLLAR */ || code === 95 /* UNDERSCORE */;
1871
1878
  }
1872
1879
  function isIndentCode(code) {
1873
1880
  return code === 9 /* TAB */ || code === 32 /* SPACE */;
@@ -2521,7 +2528,7 @@ var TAG_NAME = {
2521
2528
  this.pos += 2;
2522
2529
  this.forward = 0;
2523
2530
  this.enterState(states_exports.EXPRESSION).shouldTerminate = matchesCloseCurlyBrace;
2524
- } else if (isWhitespaceCode(code) || code === 61 /* EQUAL */ || code === 58 /* COLON */ && this.lookAtCharCodeAhead(1) === 61 /* EQUAL */ || code === 40 /* OPEN_PAREN */ || code === 47 /* FORWARD_SLASH */ || code === 124 /* PIPE */ || code === 60 /* OPEN_ANGLE_BRACKET */ || (this.isConcise ? code === 59 /* SEMICOLON */ : code === 62 /* CLOSE_ANGLE_BRACKET */)) {
2531
+ } else if (isWhitespaceCode(code) || code === 61 /* EQUAL */ || code === 58 /* COLON */ && this.lookAtCharCodeAhead(1) === 61 /* EQUAL */ || code === 40 /* OPEN_PAREN */ || code === 47 /* FORWARD_SLASH */ || code === 124 /* PIPE */ || code === 60 /* OPEN_ANGLE_BRACKET */ || code === 44 /* COMMA */ || (this.isConcise ? code === 59 /* SEMICOLON */ : code === 62 /* CLOSE_ANGLE_BRACKET */)) {
2525
2532
  this.activeTag.shorthandEnd = this.pos;
2526
2533
  this.exitState();
2527
2534
  } else if (code === 46 /* PERIOD */ || code === 35 /* NUMBER_SIGN */) {
package/dist/index.mjs CHANGED
@@ -247,6 +247,8 @@ var Parser = class {
247
247
  cur++;
248
248
  if (this.lookAheadFor(str, cur)) {
249
249
  this.pos = cur;
250
+ if (this.forward > 1)
251
+ this.forward = 1;
250
252
  return true;
251
253
  }
252
254
  return false;
@@ -433,7 +435,7 @@ var OPEN_TAG = {
433
435
  }
434
436
  },
435
437
  eol(_, tag) {
436
- if (this.isConcise && tag.stage !== 5 /* ATTR_GROUP */) {
438
+ if (this.isConcise && tag.stage !== 5 /* ATTR_GROUP */ && !this.consumeWhitespaceIfBefore(",")) {
437
439
  this.exitState();
438
440
  }
439
441
  },
@@ -1756,11 +1758,14 @@ function lookBehindForOperator(data, pos) {
1756
1758
  case 60 /* OPEN_ANGLE_BRACKET */:
1757
1759
  case 62 /* CLOSE_ANGLE_BRACKET */:
1758
1760
  case 37 /* PERCENT */:
1759
- case 46 /* PERIOD */:
1760
1761
  case 124 /* PIPE */:
1761
1762
  case 63 /* QUESTION */:
1762
1763
  case 126 /* TILDE */:
1763
1764
  return curPos;
1765
+ case 46 /* PERIOD */: {
1766
+ const nextPos = lookAheadWhile(isWhitespaceCode, data, pos);
1767
+ return isWordCode(data.charCodeAt(nextPos)) ? nextPos : -1;
1768
+ }
1764
1769
  case 43 /* PLUS */:
1765
1770
  case 45 /* HYPHEN */: {
1766
1771
  if (data.charCodeAt(curPos - 1) === code) {
@@ -1803,8 +1808,10 @@ function lookAheadForOperator(data, pos) {
1803
1808
  case 123 /* OPEN_CURLY_BRACE */:
1804
1809
  case 40 /* OPEN_PAREN */:
1805
1810
  return pos;
1806
- case 46 /* PERIOD */:
1807
- return data.charCodeAt(pos + 1) === 46 /* PERIOD */ ? -1 : pos + 1;
1811
+ case 46 /* PERIOD */: {
1812
+ const nextPos = lookAheadWhile(isWhitespaceCode, data, pos + 1);
1813
+ return isWordCode(data.charCodeAt(nextPos)) ? nextPos : -1;
1814
+ }
1808
1815
  default: {
1809
1816
  for (const keyword of binaryKeywords) {
1810
1817
  let nextPos = lookAheadFor(data, pos, keyword);
@@ -1842,7 +1849,7 @@ function canFollowDivision(code) {
1842
1849
  return isWordCode(code) || code === 37 /* PERCENT */ || code === 41 /* CLOSE_PAREN */ || code === 46 /* PERIOD */ || code === 60 /* OPEN_ANGLE_BRACKET */ || code === 93 /* CLOSE_SQUARE_BRACKET */ || code === 125 /* CLOSE_CURLY_BRACE */;
1843
1850
  }
1844
1851
  function isWordCode(code) {
1845
- return code >= 65 /* UPPER_A */ && code <= 90 /* UPPER_Z */ || code >= 97 /* LOWER_A */ && code <= 122 /* LOWER_Z */ || code >= 48 /* NUMBER_0 */ && code <= 57 /* NUMBER_9 */ || code === 95 /* UNDERSCORE */;
1852
+ return code >= 65 /* UPPER_A */ && code <= 90 /* UPPER_Z */ || code >= 97 /* LOWER_A */ && code <= 122 /* LOWER_Z */ || code >= 48 /* NUMBER_0 */ && code <= 57 /* NUMBER_9 */ || code == 36 /* DOLLAR */ || code === 95 /* UNDERSCORE */;
1846
1853
  }
1847
1854
  function isIndentCode(code) {
1848
1855
  return code === 9 /* TAB */ || code === 32 /* SPACE */;
@@ -2496,7 +2503,7 @@ var TAG_NAME = {
2496
2503
  this.pos += 2;
2497
2504
  this.forward = 0;
2498
2505
  this.enterState(states_exports.EXPRESSION).shouldTerminate = matchesCloseCurlyBrace;
2499
- } else if (isWhitespaceCode(code) || code === 61 /* EQUAL */ || code === 58 /* COLON */ && this.lookAtCharCodeAhead(1) === 61 /* EQUAL */ || code === 40 /* OPEN_PAREN */ || code === 47 /* FORWARD_SLASH */ || code === 124 /* PIPE */ || code === 60 /* OPEN_ANGLE_BRACKET */ || (this.isConcise ? code === 59 /* SEMICOLON */ : code === 62 /* CLOSE_ANGLE_BRACKET */)) {
2506
+ } else if (isWhitespaceCode(code) || code === 61 /* EQUAL */ || code === 58 /* COLON */ && this.lookAtCharCodeAhead(1) === 61 /* EQUAL */ || code === 40 /* OPEN_PAREN */ || code === 47 /* FORWARD_SLASH */ || code === 124 /* PIPE */ || code === 60 /* OPEN_ANGLE_BRACKET */ || code === 44 /* COMMA */ || (this.isConcise ? code === 59 /* SEMICOLON */ : code === 62 /* CLOSE_ANGLE_BRACKET */)) {
2500
2507
  this.activeTag.shorthandEnd = this.pos;
2501
2508
  this.exitState();
2502
2509
  } else if (code === 46 /* PERIOD */ || code === 35 /* NUMBER_SIGN */) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "htmljs-parser",
3
3
  "description": "An HTML parser recognizes content and string placeholders and allows JavaScript expressions as attribute values",
4
- "version": "5.3.0",
4
+ "version": "5.4.0",
5
5
  "devDependencies": {
6
6
  "@changesets/changelog-github": "^0.4.7",
7
7
  "@changesets/cli": "^2.25.2",