postcss-calc 10.0.2 → 10.1.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "postcss-calc",
3
- "version": "10.0.2",
3
+ "version": "10.1.1",
4
4
  "description": "PostCSS plugin to reduce calc()",
5
5
  "keywords": [
6
6
  "css",
@@ -27,16 +27,16 @@
27
27
  "node": "^18.12 || ^20.9 || >=22.0"
28
28
  },
29
29
  "devDependencies": {
30
- "@types/node": "^22.4.0",
31
- "eslint": "^9.9.0",
32
- "eslint-config-prettier": "^9.1.0",
30
+ "@types/node": "^22.10.10",
31
+ "eslint": "^9.19.0",
32
+ "eslint-config-prettier": "^10.0.1",
33
33
  "jison-gho": "0.6.1-216",
34
- "postcss": "^8.4.41",
35
- "prettier": "^3.3.3",
36
- "typescript": "~5.5.4"
34
+ "postcss": "^8.5.1",
35
+ "prettier": "^3.4.2",
36
+ "typescript": "~5.7.3"
37
37
  },
38
38
  "dependencies": {
39
- "postcss-selector-parser": "^6.1.2",
39
+ "postcss-selector-parser": "^7.0.0",
40
40
  "postcss-value-parser": "^4.2.0"
41
41
  },
42
42
  "peerDependencies": {
@@ -47,6 +47,8 @@ function isValueType(node) {
47
47
  case 'CqminValue':
48
48
  case 'CqmaxValue':
49
49
  case 'PercentageValue':
50
+ case 'LhValue':
51
+ case 'RlhValue':
50
52
  case 'Number':
51
53
  return true;
52
54
  }
@@ -359,6 +361,12 @@ function includesNoCssProperties(node) {
359
361
  * @return {import('../parser').CalcNode}
360
362
  */
361
363
  function reduce(node, precision) {
364
+ if (
365
+ node.type === 'MathExpression' &&
366
+ (node.left.type === 'CalcKeyword' || node.right.type === 'CalcKeyword')
367
+ ) {
368
+ return node;
369
+ }
362
370
  if (node.type === 'MathExpression') {
363
371
  if (isAddSubOperator(node.operator)) {
364
372
  // reduceAddSubExpression will call reduce recursively
@@ -31,6 +31,8 @@ function stringify(node, prec) {
31
31
  let str = '';
32
32
  if (left.type === 'MathExpression' && order[op] < order[left.operator]) {
33
33
  str += `(${stringify(left, prec)})`;
34
+ } else if (left.type === 'CalcKeyword') {
35
+ str += left.value;
34
36
  } else {
35
37
  str += stringify(left, prec);
36
38
  }
@@ -42,6 +44,8 @@ function stringify(node, prec) {
42
44
  order[op] < order[right.operator]
43
45
  ) {
44
46
  str += `(${stringify(right, prec)})`;
47
+ } else if (right.type === 'CalcKeyword') {
48
+ str += right.value;
45
49
  } else {
46
50
  str += stringify(right, prec);
47
51
  }
@@ -54,6 +58,8 @@ function stringify(node, prec) {
54
58
  return node.value.toString();
55
59
  case 'ParenthesizedExpression':
56
60
  return `(${stringify(node.content, prec)})`;
61
+ case 'CalcKeyword':
62
+ return node.value;
57
63
  default:
58
64
  return round(node.value, prec) + node.unit;
59
65
  }
@@ -73,8 +79,10 @@ module.exports = function (calc, node, originalValue, options, result, item) {
73
79
  let str = stringify(node, options.precision);
74
80
 
75
81
  const shouldPrintCalc =
76
- node.type === 'MathExpression' || node.type === 'Function' ||
77
- node.type === 'ParenthesizedExpression';
82
+ node.type === 'MathExpression' ||
83
+ node.type === 'Function' ||
84
+ node.type === 'ParenthesizedExpression' ||
85
+ node.type === 'CalcKeyword';
78
86
 
79
87
  if (shouldPrintCalc) {
80
88
  // if calc expression couldn't be resolved to a single value, re-wrap it as
@@ -7,7 +7,7 @@ const { parser } = require('../parser.js');
7
7
  const reducer = require('./reducer.js');
8
8
  const stringifier = require('./stringifier.js');
9
9
 
10
- const MATCH_CALC = /((?:-(moz|webkit)-)?calc)/i;
10
+ const MATCH_CALC = /((?:-(moz|webkit)-)?calc(?!-))/i;
11
11
 
12
12
  /**
13
13
  * @param {string} value
package/src/parser.d.ts CHANGED
@@ -51,7 +51,9 @@ export interface DimensionExpression {
51
51
  | 'CqbValue'
52
52
  | 'CqiValue'
53
53
  | 'CqminValue'
54
- | 'CqmaxValue';
54
+ | 'CqmaxValue'
55
+ | 'LhValue'
56
+ | 'RlhValue';
55
57
  value: number;
56
58
  unit: string;
57
59
  }
@@ -66,9 +68,19 @@ export interface FunctionExpression {
66
68
  value: string;
67
69
  }
68
70
 
71
+ export interface CalcKeywordExpression {
72
+ type: 'CalcKeyword';
73
+ value: string;
74
+ }
75
+
69
76
  export type ValueExpression = DimensionExpression | NumberExpression;
70
77
 
71
- export type CalcNode = MathExpression | ValueExpression | FunctionExpression | ParenthesizedExpression;
78
+ export type CalcNode =
79
+ | MathExpression
80
+ | ValueExpression
81
+ | FunctionExpression
82
+ | ParenthesizedExpression
83
+ | CalcKeywordExpression;
72
84
 
73
85
  export interface Parser {
74
86
  parse: (arg: string) => CalcNode;
package/src/parser.js CHANGED
@@ -612,6 +612,7 @@ symbols_: {
612
612
  "ADD": 6,
613
613
  "ANGLE": 12,
614
614
  "CALC": 3,
615
+ "CALC_KEYWORD": 54,
615
616
  "CHS": 19,
616
617
  "CQBS": 48,
617
618
  "CQHS": 46,
@@ -632,6 +633,7 @@ symbols_: {
632
633
  "FREQ": 14,
633
634
  "FUNCTION": 10,
634
635
  "LENGTH": 11,
636
+ "LHS": 51,
635
637
  "LPAREN": 4,
636
638
  "LVBS": 39,
637
639
  "LVHS": 23,
@@ -640,10 +642,11 @@ symbols_: {
640
642
  "LVMINS": 31,
641
643
  "LVWS": 27,
642
644
  "MUL": 8,
643
- "NUMBER": 52,
644
- "PERCENTAGE": 51,
645
+ "NUMBER": 55,
646
+ "PERCENTAGE": 53,
645
647
  "REMS": 20,
646
648
  "RES": 15,
649
+ "RLHS": 52,
647
650
  "RPAREN": 5,
648
651
  "SUB": 7,
649
652
  "SVBS": 38,
@@ -660,12 +663,13 @@ symbols_: {
660
663
  "VMAXS": 33,
661
664
  "VMINS": 29,
662
665
  "VWS": 25,
663
- "dimension": 56,
666
+ "calc_keyword": 60,
667
+ "dimension": 59,
664
668
  "error": 2,
665
- "expression": 53,
666
- "function": 55,
667
- "math_expression": 54,
668
- "number": 57
669
+ "expression": 56,
670
+ "function": 58,
671
+ "math_expression": 57,
672
+ "number": 61
669
673
  },
670
674
  terminals_: {
671
675
  1: "EOF",
@@ -718,8 +722,11 @@ terminals_: {
718
722
  48: "CQBS",
719
723
  49: "CQMINS",
720
724
  50: "CQMAXS",
721
- 51: "PERCENTAGE",
722
- 52: "NUMBER"
725
+ 51: "LHS",
726
+ 52: "RLHS",
727
+ 53: "PERCENTAGE",
728
+ 54: "CALC_KEYWORD",
729
+ 55: "NUMBER"
723
730
  },
724
731
  TERROR: 2,
725
732
  EOF: 1,
@@ -825,14 +832,15 @@ TERROR: 2,
825
832
  },
826
833
  productions_: bp({
827
834
  pop: u([
828
- 53,
835
+ 56,
829
836
  s,
830
- [54, 9],
831
- 55,
837
+ [57, 10],
838
+ 58,
832
839
  s,
833
- [56, 43],
840
+ [59, 45],
841
+ 60,
834
842
  s,
835
- [57, 3]
843
+ [61, 3]
836
844
  ]),
837
845
  rule: u([
838
846
  2,
@@ -840,11 +848,11 @@ productions_: bp({
840
848
  s,
841
849
  [3, 5],
842
850
  s,
843
- [1, 45],
851
+ [1, 48],
844
852
  2,
845
853
  2,
846
854
  c,
847
- [3, 3]
855
+ [4, 4]
848
856
  ])
849
857
  }),
850
858
  performAction: function parser__PerformAction(yystate /* action[1] */, yysp, yyvstack) {
@@ -908,283 +916,303 @@ case 9:
908
916
  /*! Production:: math_expression : dimension */
909
917
  case 10:
910
918
  /*! Production:: math_expression : number */
919
+ case 11:
920
+ /*! Production:: math_expression : calc_keyword */
911
921
 
912
922
  this.$ = yyvstack[yysp];
913
923
  break;
914
924
 
915
- case 11:
925
+ case 12:
916
926
  /*! Production:: function : FUNCTION */
917
927
 
918
928
  this.$ = { type: 'Function', value: yyvstack[yysp] };
919
929
  break;
920
930
 
921
- case 12:
931
+ case 13:
922
932
  /*! Production:: dimension : LENGTH */
923
933
 
924
934
  this.$ = { type: 'LengthValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
925
935
  break;
926
936
 
927
- case 13:
937
+ case 14:
928
938
  /*! Production:: dimension : ANGLE */
929
939
 
930
940
  this.$ = { type: 'AngleValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
931
941
  break;
932
942
 
933
- case 14:
943
+ case 15:
934
944
  /*! Production:: dimension : TIME */
935
945
 
936
946
  this.$ = { type: 'TimeValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
937
947
  break;
938
948
 
939
- case 15:
949
+ case 16:
940
950
  /*! Production:: dimension : FREQ */
941
951
 
942
952
  this.$ = { type: 'FrequencyValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
943
953
  break;
944
954
 
945
- case 16:
955
+ case 17:
946
956
  /*! Production:: dimension : RES */
947
957
 
948
958
  this.$ = { type: 'ResolutionValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
949
959
  break;
950
960
 
951
- case 17:
961
+ case 18:
952
962
  /*! Production:: dimension : UNKNOWN_DIMENSION */
953
963
 
954
964
  this.$ = { type: 'UnknownDimension', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
955
965
  break;
956
966
 
957
- case 18:
967
+ case 19:
958
968
  /*! Production:: dimension : EMS */
959
969
 
960
970
  this.$ = { type: 'EmValue', value: parseFloat(yyvstack[yysp]), unit: 'em' };
961
971
  break;
962
972
 
963
- case 19:
973
+ case 20:
964
974
  /*! Production:: dimension : EXS */
965
975
 
966
976
  this.$ = { type: 'ExValue', value: parseFloat(yyvstack[yysp]), unit: 'ex' };
967
977
  break;
968
978
 
969
- case 20:
979
+ case 21:
970
980
  /*! Production:: dimension : CHS */
971
981
 
972
982
  this.$ = { type: 'ChValue', value: parseFloat(yyvstack[yysp]), unit: 'ch' };
973
983
  break;
974
984
 
975
- case 21:
985
+ case 22:
976
986
  /*! Production:: dimension : REMS */
977
987
 
978
988
  this.$ = { type: 'RemValue', value: parseFloat(yyvstack[yysp]), unit: 'rem' };
979
989
  break;
980
990
 
981
- case 22:
991
+ case 23:
982
992
  /*! Production:: dimension : VHS */
983
993
 
984
994
  this.$ = { type: 'VhValue', value: parseFloat(yyvstack[yysp]), unit: 'vh' };
985
995
  break;
986
996
 
987
- case 23:
997
+ case 24:
988
998
  /*! Production:: dimension : SVHS */
989
999
 
990
1000
  this.$ = { type: 'SvhValue', value: parseFloat(yyvstack[yysp]), unit: 'svh' };
991
1001
  break;
992
1002
 
993
- case 24:
1003
+ case 25:
994
1004
  /*! Production:: dimension : LVHS */
995
1005
 
996
1006
  this.$ = { type: 'LvhValue', value: parseFloat(yyvstack[yysp]), unit: 'lvh' };
997
1007
  break;
998
1008
 
999
- case 25:
1009
+ case 26:
1000
1010
  /*! Production:: dimension : DVHS */
1001
1011
 
1002
1012
  this.$ = { type: 'DvhValue', value: parseFloat(yyvstack[yysp]), unit: 'dvh' };
1003
1013
  break;
1004
1014
 
1005
- case 26:
1015
+ case 27:
1006
1016
  /*! Production:: dimension : VWS */
1007
1017
 
1008
1018
  this.$ = { type: 'VwValue', value: parseFloat(yyvstack[yysp]), unit: 'vw' };
1009
1019
  break;
1010
1020
 
1011
- case 27:
1021
+ case 28:
1012
1022
  /*! Production:: dimension : SVWS */
1013
1023
 
1014
1024
  this.$ = { type: 'SvwValue', value: parseFloat(yyvstack[yysp]), unit: 'svw' };
1015
1025
  break;
1016
1026
 
1017
- case 28:
1027
+ case 29:
1018
1028
  /*! Production:: dimension : LVWS */
1019
1029
 
1020
1030
  this.$ = { type: 'LvwValue', value: parseFloat(yyvstack[yysp]), unit: 'lvw' };
1021
1031
  break;
1022
1032
 
1023
- case 29:
1033
+ case 30:
1024
1034
  /*! Production:: dimension : DVWS */
1025
1035
 
1026
1036
  this.$ = { type: 'DvwValue', value: parseFloat(yyvstack[yysp]), unit: 'dvw' };
1027
1037
  break;
1028
1038
 
1029
- case 30:
1039
+ case 31:
1030
1040
  /*! Production:: dimension : VMINS */
1031
1041
 
1032
1042
  this.$ = { type: 'VminValue', value: parseFloat(yyvstack[yysp]), unit: 'vmin' };
1033
1043
  break;
1034
1044
 
1035
- case 31:
1045
+ case 32:
1036
1046
  /*! Production:: dimension : SVMINS */
1037
1047
 
1038
1048
  this.$ = { type: 'SvminValue', value: parseFloat(yyvstack[yysp]), unit: 'svmin' };
1039
1049
  break;
1040
1050
 
1041
- case 32:
1051
+ case 33:
1042
1052
  /*! Production:: dimension : LVMINS */
1043
1053
 
1044
1054
  this.$ = { type: 'LvminValue', value: parseFloat(yyvstack[yysp]), unit: 'lvmin' };
1045
1055
  break;
1046
1056
 
1047
- case 33:
1057
+ case 34:
1048
1058
  /*! Production:: dimension : DVMINS */
1049
1059
 
1050
1060
  this.$ = { type: 'DvminValue', value: parseFloat(yyvstack[yysp]), unit: 'dvmin' };
1051
1061
  break;
1052
1062
 
1053
- case 34:
1063
+ case 35:
1054
1064
  /*! Production:: dimension : VMAXS */
1055
1065
 
1056
1066
  this.$ = { type: 'VmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'vmax' };
1057
1067
  break;
1058
1068
 
1059
- case 35:
1069
+ case 36:
1060
1070
  /*! Production:: dimension : SVMAXS */
1061
1071
 
1062
1072
  this.$ = { type: 'SvmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'svmax' };
1063
1073
  break;
1064
1074
 
1065
- case 36:
1075
+ case 37:
1066
1076
  /*! Production:: dimension : LVMAXS */
1067
1077
 
1068
1078
  this.$ = { type: 'LvmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'lvmax' };
1069
1079
  break;
1070
1080
 
1071
- case 37:
1081
+ case 38:
1072
1082
  /*! Production:: dimension : DVMAXS */
1073
1083
 
1074
1084
  this.$ = { type: 'DvmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'dvmax' };
1075
1085
  break;
1076
1086
 
1077
- case 38:
1087
+ case 39:
1078
1088
  /*! Production:: dimension : VBS */
1079
1089
 
1080
1090
  this.$ = { type: 'VbValue', value: parseFloat(yyvstack[yysp]), unit: 'vb' };
1081
1091
  break;
1082
1092
 
1083
- case 39:
1093
+ case 40:
1084
1094
  /*! Production:: dimension : SVBS */
1085
1095
 
1086
1096
  this.$ = { type: 'SvbValue', value: parseFloat(yyvstack[yysp]), unit: 'svb' };
1087
1097
  break;
1088
1098
 
1089
- case 40:
1099
+ case 41:
1090
1100
  /*! Production:: dimension : LVBS */
1091
1101
 
1092
1102
  this.$ = { type: 'LvbValue', value: parseFloat(yyvstack[yysp]), unit: 'lvb' };
1093
1103
  break;
1094
1104
 
1095
- case 41:
1105
+ case 42:
1096
1106
  /*! Production:: dimension : DVBS */
1097
1107
 
1098
1108
  this.$ = { type: 'DvbValue', value: parseFloat(yyvstack[yysp]), unit: 'dvb' };
1099
1109
  break;
1100
1110
 
1101
- case 42:
1111
+ case 43:
1102
1112
  /*! Production:: dimension : VIS */
1103
1113
 
1104
1114
  this.$ = { type: 'VhValue', value: parseFloat(yyvstack[yysp]), unit: 'vi' };
1105
1115
  break;
1106
1116
 
1107
- case 43:
1117
+ case 44:
1108
1118
  /*! Production:: dimension : SVIS */
1109
1119
 
1110
1120
  this.$ = { type: 'SvhValue', value: parseFloat(yyvstack[yysp]), unit: 'svi' };
1111
1121
  break;
1112
1122
 
1113
- case 44:
1123
+ case 45:
1114
1124
  /*! Production:: dimension : LVIS */
1115
1125
 
1116
1126
  this.$ = { type: 'LvhValue', value: parseFloat(yyvstack[yysp]), unit: 'lvi' };
1117
1127
  break;
1118
1128
 
1119
- case 45:
1129
+ case 46:
1120
1130
  /*! Production:: dimension : DVIS */
1121
1131
 
1122
1132
  this.$ = { type: 'DvhValue', value: parseFloat(yyvstack[yysp]), unit: 'dvi' };
1123
1133
  break;
1124
1134
 
1125
- case 46:
1135
+ case 47:
1126
1136
  /*! Production:: dimension : CQWS */
1127
1137
 
1128
1138
  this.$ = { type: 'CqwValue', value: parseFloat(yyvstack[yysp]), unit: 'cqw' };
1129
1139
  break;
1130
1140
 
1131
- case 47:
1141
+ case 48:
1132
1142
  /*! Production:: dimension : CQHS */
1133
1143
 
1134
1144
  this.$ = { type: 'CqhValue', value: parseFloat(yyvstack[yysp]), unit: 'cqh' };
1135
1145
  break;
1136
1146
 
1137
- case 48:
1147
+ case 49:
1138
1148
  /*! Production:: dimension : CQIS */
1139
1149
 
1140
1150
  this.$ = { type: 'CqiValue', value: parseFloat(yyvstack[yysp]), unit: 'cqi' };
1141
1151
  break;
1142
1152
 
1143
- case 49:
1153
+ case 50:
1144
1154
  /*! Production:: dimension : CQBS */
1145
1155
 
1146
1156
  this.$ = { type: 'CqbValue', value: parseFloat(yyvstack[yysp]), unit: 'cqb' };
1147
1157
  break;
1148
1158
 
1149
- case 50:
1159
+ case 51:
1150
1160
  /*! Production:: dimension : CQMINS */
1151
1161
 
1152
1162
  this.$ = { type: 'CqminValue', value: parseFloat(yyvstack[yysp]), unit: 'cqmin' };
1153
1163
  break;
1154
1164
 
1155
- case 51:
1165
+ case 52:
1156
1166
  /*! Production:: dimension : CQMAXS */
1157
1167
 
1158
1168
  this.$ = { type: 'CqmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'cqmax' };
1159
1169
  break;
1160
1170
 
1161
- case 52:
1171
+ case 53:
1172
+ /*! Production:: dimension : LHS */
1173
+
1174
+ this.$ = { type: 'LhValue', value: parseFloat(yyvstack[yysp]), unit: 'lh' };
1175
+ break;
1176
+
1177
+ case 54:
1178
+ /*! Production:: dimension : RLHS */
1179
+
1180
+ this.$ = { type: 'RlhValue', value: parseFloat(yyvstack[yysp]), unit: 'rlh' };
1181
+ break;
1182
+
1183
+ case 55:
1162
1184
  /*! Production:: dimension : PERCENTAGE */
1163
1185
 
1164
1186
  this.$ = { type: 'PercentageValue', value: parseFloat(yyvstack[yysp]), unit: '%' };
1165
1187
  break;
1166
1188
 
1167
- case 53:
1189
+ case 56:
1168
1190
  /*! Production:: dimension : ADD dimension */
1169
1191
 
1170
1192
  var prev = yyvstack[yysp]; this.$ = prev;
1171
1193
  break;
1172
1194
 
1173
- case 54:
1195
+ case 57:
1174
1196
  /*! Production:: dimension : SUB dimension */
1175
1197
 
1176
1198
  var prev = yyvstack[yysp]; prev.value *= -1; this.$ = prev;
1177
1199
  break;
1178
1200
 
1179
- case 55:
1201
+ case 58:
1202
+ /*! Production:: calc_keyword : CALC_KEYWORD */
1203
+
1204
+ this.$ = { type: 'CalcKeyword', value: yyvstack[yysp] };
1205
+ break;
1206
+
1207
+ case 59:
1180
1208
  /*! Production:: number : NUMBER */
1181
- case 56:
1209
+ case 60:
1182
1210
  /*! Production:: number : ADD NUMBER */
1183
1211
 
1184
1212
  this.$ = { type: 'Number', value: parseFloat(yyvstack[yysp]) };
1185
1213
  break;
1186
1214
 
1187
- case 57:
1215
+ case 61:
1188
1216
  /*! Production:: number : SUB NUMBER */
1189
1217
 
1190
1218
  this.$ = { type: 'Number', value: parseFloat(yyvstack[yysp]) * -1 };
@@ -1194,24 +1222,24 @@ case 57:
1194
1222
  },
1195
1223
  table: bt({
1196
1224
  len: u([
1197
- 52,
1225
+ 56,
1198
1226
  1,
1199
1227
  5,
1200
1228
  1,
1201
- 51,
1229
+ 55,
1202
1230
  s,
1203
- [0, 45],
1204
- 45,
1205
- 45,
1206
- 0,
1207
- 0,
1231
+ [0, 48],
1232
+ 47,
1233
+ 47,
1208
1234
  s,
1209
- [51, 5],
1235
+ [0, 3],
1236
+ s,
1237
+ [55, 5],
1210
1238
  5,
1211
1239
  0,
1212
1240
  0,
1213
- 44,
1214
- 44,
1241
+ 46,
1242
+ 46,
1215
1243
  0,
1216
1244
  0,
1217
1245
  6,
@@ -1227,37 +1255,38 @@ table: bt({
1227
1255
  6,
1228
1256
  7,
1229
1257
  s,
1230
- [10, 48, 1],
1258
+ [10, 52, 1],
1231
1259
  1,
1232
1260
  1,
1233
1261
  s,
1234
1262
  [6, 4, 1],
1235
1263
  4,
1236
1264
  c,
1237
- [59, 47],
1265
+ [63, 50],
1238
1266
  c,
1239
- [58, 4],
1267
+ [62, 5],
1240
1268
  6,
1241
1269
  7,
1242
1270
  c,
1243
- [48, 42],
1244
- 56,
1271
+ [52, 43],
1272
+ 55,
1273
+ 59,
1245
1274
  c,
1246
- [45, 45],
1275
+ [47, 47],
1247
1276
  c,
1248
- [141, 51],
1277
+ [149, 55],
1249
1278
  c,
1250
- [51, 204],
1279
+ [55, 220],
1251
1280
  s,
1252
1281
  [5, 5, 1],
1253
1282
  c,
1254
- [305, 43],
1283
+ [327, 45],
1255
1284
  c,
1256
- [349, 44],
1257
- 56,
1285
+ [373, 46],
1286
+ 59,
1258
1287
  1,
1259
1288
  c,
1260
- [94, 5],
1289
+ [98, 5],
1261
1290
  c,
1262
1291
  [6, 6],
1263
1292
  c,
@@ -1265,57 +1294,56 @@ table: bt({
1265
1294
  ]),
1266
1295
  type: u([
1267
1296
  s,
1268
- [2, 47],
1297
+ [2, 50],
1269
1298
  s,
1270
- [0, 5],
1299
+ [0, 6],
1271
1300
  1,
1272
1301
  s,
1273
- [2, 53],
1302
+ [2, 56],
1274
1303
  s,
1275
- [0, 4],
1276
- c,
1277
- [48, 45],
1304
+ [0, 5],
1278
1305
  c,
1279
- [45, 89],
1306
+ [51, 47],
1280
1307
  c,
1281
- [141, 51],
1308
+ [47, 93],
1282
1309
  c,
1283
- [51, 207],
1310
+ [149, 55],
1284
1311
  c,
1285
- [304, 45],
1312
+ [55, 225],
1286
1313
  c,
1287
- [44, 18]
1314
+ [46, 63]
1288
1315
  ]),
1289
1316
  state: u([
1290
1317
  1,
1291
1318
  2,
1292
1319
  5,
1293
1320
  6,
1321
+ 8,
1294
1322
  7,
1295
- 59,
1323
+ 63,
1296
1324
  c,
1297
- [4, 3],
1298
- 60,
1325
+ [5, 4],
1299
1326
  64,
1300
- 66,
1327
+ 68,
1328
+ 70,
1301
1329
  c,
1302
- [6, 3],
1303
- 67,
1330
+ [7, 4],
1331
+ 71,
1304
1332
  c,
1305
- [4, 3],
1306
- 68,
1333
+ [5, 4],
1334
+ 72,
1307
1335
  c,
1308
- [4, 3],
1309
- 69,
1336
+ [5, 4],
1337
+ 73,
1310
1338
  c,
1311
- [4, 3],
1312
- 70,
1339
+ [5, 4],
1340
+ 74,
1313
1341
  c,
1314
- [22, 5]
1342
+ [27, 6]
1315
1343
  ]),
1316
1344
  mode: u([
1317
1345
  s,
1318
- [1, 514],
1346
+ [1, 543],
1319
1347
  s,
1320
1348
  [2, 4],
1321
1349
  c,
@@ -1326,70 +1354,74 @@ table: bt({
1326
1354
  goto: u([
1327
1355
  3,
1328
1356
  4,
1329
- 50,
1330
- 51,
1357
+ 53,
1358
+ 54,
1331
1359
  s,
1332
- [8, 42, 1],
1360
+ [9, 44, 1],
1361
+ 56,
1362
+ 55,
1333
1363
  s,
1334
- [52, 7, 1],
1335
- c,
1336
- [53, 47],
1337
- 62,
1338
- 63,
1364
+ [57, 6, 1],
1339
1365
  c,
1340
- [44, 41],
1341
- 61,
1366
+ [56, 50],
1367
+ 66,
1368
+ 67,
1342
1369
  c,
1343
- [44, 43],
1370
+ [47, 43],
1344
1371
  65,
1345
1372
  c,
1346
- [135, 47],
1373
+ [46, 45],
1374
+ 69,
1347
1375
  c,
1348
- [47, 188],
1349
- 71,
1376
+ [142, 50],
1350
1377
  c,
1351
- [376, 4],
1378
+ [50, 200],
1379
+ 75,
1352
1380
  c,
1353
- [284, 43],
1381
+ [398, 4],
1354
1382
  c,
1355
- [43, 43],
1383
+ [301, 45],
1384
+ c,
1385
+ [45, 45],
1356
1386
  s,
1357
1387
  [3, 4],
1358
- 56,
1359
- 57,
1388
+ 60,
1389
+ 61,
1360
1390
  s,
1361
1391
  [4, 4],
1362
- 56,
1363
- 57,
1364
- 72,
1392
+ 60,
1393
+ 61,
1394
+ 76,
1365
1395
  c,
1366
- [103, 4]
1396
+ [107, 4]
1367
1397
  ])
1368
1398
  }),
1369
1399
  defaultActions: bda({
1370
1400
  idx: u([
1371
1401
  s,
1372
- [5, 45, 1],
1373
- 52,
1374
- 53,
1375
- 60,
1376
- 61,
1402
+ [5, 48, 1],
1403
+ 55,
1404
+ 56,
1405
+ 57,
1377
1406
  64,
1378
1407
  65,
1379
1408
  68,
1380
1409
  69,
1381
- 71,
1382
- 72
1410
+ 72,
1411
+ 73,
1412
+ 75,
1413
+ 76
1383
1414
  ]),
1384
1415
  goto: u([
1385
1416
  s,
1386
- [8, 45, 1],
1387
- 55,
1417
+ [8, 48, 1],
1418
+ 59,
1419
+ 58,
1388
1420
  1,
1389
- 53,
1390
1421
  56,
1391
- 54,
1422
+ 60,
1392
1423
  57,
1424
+ 61,
1393
1425
  5,
1394
1426
  6,
1395
1427
  7,
@@ -1433,7 +1465,7 @@ parse: function parse(input) {
1433
1465
  var TERROR = this.TERROR;
1434
1466
  var EOF = this.EOF;
1435
1467
  var ERROR_RECOVERY_TOKEN_DISCARD_COUNT = (this.options.errorRecoveryTokenDiscardCount | 0) || 3;
1436
- var NO_ACTION = [0, 73 /* === table.length :: ensures that anyone using this new state will fail dramatically! */];
1468
+ var NO_ACTION = [0, 77 /* === table.length :: ensures that anyone using this new state will fail dramatically! */];
1437
1469
 
1438
1470
  var lexer;
1439
1471
  if (this.__lexer__) {
@@ -3904,101 +3936,113 @@ EOF: 1,
3904
3936
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)cqmax\b */
3905
3937
  40: 50,
3906
3938
 
3939
+ /*! Conditions:: INITIAL */
3940
+ /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)lh\b */
3941
+ 41: 51,
3942
+
3943
+ /*! Conditions:: INITIAL */
3944
+ /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)rlh\b */
3945
+ 42: 52,
3946
+
3907
3947
  /*! Conditions:: INITIAL */
3908
3948
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)cm\b */
3909
- 41: 11,
3949
+ 43: 11,
3910
3950
 
3911
3951
  /*! Conditions:: INITIAL */
3912
3952
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)mm\b */
3913
- 42: 11,
3953
+ 44: 11,
3914
3954
 
3915
3955
  /*! Conditions:: INITIAL */
3916
3956
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)Q\b */
3917
- 43: 11,
3957
+ 45: 11,
3918
3958
 
3919
3959
  /*! Conditions:: INITIAL */
3920
3960
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)in\b */
3921
- 44: 11,
3961
+ 46: 11,
3922
3962
 
3923
3963
  /*! Conditions:: INITIAL */
3924
3964
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)pt\b */
3925
- 45: 11,
3965
+ 47: 11,
3926
3966
 
3927
3967
  /*! Conditions:: INITIAL */
3928
3968
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)pc\b */
3929
- 46: 11,
3969
+ 48: 11,
3930
3970
 
3931
3971
  /*! Conditions:: INITIAL */
3932
3972
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)px\b */
3933
- 47: 11,
3973
+ 49: 11,
3934
3974
 
3935
3975
  /*! Conditions:: INITIAL */
3936
3976
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)deg\b */
3937
- 48: 12,
3977
+ 50: 12,
3938
3978
 
3939
3979
  /*! Conditions:: INITIAL */
3940
3980
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)grad\b */
3941
- 49: 12,
3981
+ 51: 12,
3942
3982
 
3943
3983
  /*! Conditions:: INITIAL */
3944
3984
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)rad\b */
3945
- 50: 12,
3985
+ 52: 12,
3946
3986
 
3947
3987
  /*! Conditions:: INITIAL */
3948
3988
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)turn\b */
3949
- 51: 12,
3989
+ 53: 12,
3950
3990
 
3951
3991
  /*! Conditions:: INITIAL */
3952
3992
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)s\b */
3953
- 52: 13,
3993
+ 54: 13,
3954
3994
 
3955
3995
  /*! Conditions:: INITIAL */
3956
3996
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)ms\b */
3957
- 53: 13,
3997
+ 55: 13,
3958
3998
 
3959
3999
  /*! Conditions:: INITIAL */
3960
4000
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)Hz\b */
3961
- 54: 14,
4001
+ 56: 14,
3962
4002
 
3963
4003
  /*! Conditions:: INITIAL */
3964
4004
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)kHz\b */
3965
- 55: 14,
4005
+ 57: 14,
3966
4006
 
3967
4007
  /*! Conditions:: INITIAL */
3968
4008
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)dpi\b */
3969
- 56: 15,
4009
+ 58: 15,
3970
4010
 
3971
4011
  /*! Conditions:: INITIAL */
3972
4012
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)dpcm\b */
3973
- 57: 15,
4013
+ 59: 15,
3974
4014
 
3975
4015
  /*! Conditions:: INITIAL */
3976
4016
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)dppx\b */
3977
- 58: 15,
4017
+ 60: 15,
3978
4018
 
3979
4019
  /*! Conditions:: INITIAL */
3980
4020
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)% */
3981
- 59: 51,
4021
+ 61: 53,
3982
4022
 
3983
4023
  /*! Conditions:: INITIAL */
3984
4024
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)\b */
3985
- 60: 52,
4025
+ 62: 55,
4026
+
4027
+ /*! Conditions:: INITIAL */
4028
+ /*! Rule:: (infinity|pi|e)\b */
4029
+ 63: 54,
3986
4030
 
3987
4031
  /*! Conditions:: INITIAL */
3988
4032
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)-?([a-zA-Z_]|[\240-\377]|(\\[0-9a-fA-F]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-fA-F]))([a-zA-Z0-9_-]|[\240-\377]|(\\[0-9a-fA-F]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-fA-F]))*\b */
3989
- 61: 16,
4033
+ 64: 16,
3990
4034
 
3991
4035
  /*! Conditions:: INITIAL */
3992
4036
  /*! Rule:: \( */
3993
- 62: 4,
4037
+ 65: 4,
3994
4038
 
3995
4039
  /*! Conditions:: INITIAL */
3996
4040
  /*! Rule:: \) */
3997
- 63: 5,
4041
+ 66: 5,
3998
4042
 
3999
4043
  /*! Conditions:: INITIAL */
4000
4044
  /*! Rule:: $ */
4001
- 64: 1
4045
+ 67: 1
4002
4046
  },
4003
4047
 
4004
4048
  rules: [
@@ -4043,30 +4087,33 @@ EOF: 1,
4043
4087
  /* 38: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)cqb\b)/i,
4044
4088
  /* 39: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)cqmin\b)/i,
4045
4089
  /* 40: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)cqmax\b)/i,
4046
- /* 41: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)cm\b)/i,
4047
- /* 42: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)mm\b)/i,
4048
- /* 43: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)Q\b)/i,
4049
- /* 44: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)in\b)/i,
4050
- /* 45: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)pt\b)/i,
4051
- /* 46: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)pc\b)/i,
4052
- /* 47: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)px\b)/i,
4053
- /* 48: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)deg\b)/i,
4054
- /* 49: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)grad\b)/i,
4055
- /* 50: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)rad\b)/i,
4056
- /* 51: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)turn\b)/i,
4057
- /* 52: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)s\b)/i,
4058
- /* 53: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)ms\b)/i,
4059
- /* 54: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)Hz\b)/i,
4060
- /* 55: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)kHz\b)/i,
4061
- /* 56: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dpi\b)/i,
4062
- /* 57: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dpcm\b)/i,
4063
- /* 58: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dppx\b)/i,
4064
- /* 59: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)%)/i,
4065
- /* 60: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)\b)/i,
4066
- /* 61: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)-?([^\W\d]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))([\w\-]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))*\b)/i,
4067
- /* 62: */ /^(?:\()/i,
4068
- /* 63: */ /^(?:\))/i,
4069
- /* 64: */ /^(?:$)/i
4090
+ /* 41: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)lh\b)/i,
4091
+ /* 42: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)rlh\b)/i,
4092
+ /* 43: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)cm\b)/i,
4093
+ /* 44: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)mm\b)/i,
4094
+ /* 45: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)Q\b)/i,
4095
+ /* 46: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)in\b)/i,
4096
+ /* 47: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)pt\b)/i,
4097
+ /* 48: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)pc\b)/i,
4098
+ /* 49: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)px\b)/i,
4099
+ /* 50: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)deg\b)/i,
4100
+ /* 51: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)grad\b)/i,
4101
+ /* 52: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)rad\b)/i,
4102
+ /* 53: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)turn\b)/i,
4103
+ /* 54: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)s\b)/i,
4104
+ /* 55: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)ms\b)/i,
4105
+ /* 56: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)Hz\b)/i,
4106
+ /* 57: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)kHz\b)/i,
4107
+ /* 58: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dpi\b)/i,
4108
+ /* 59: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dpcm\b)/i,
4109
+ /* 60: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dppx\b)/i,
4110
+ /* 61: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)%)/i,
4111
+ /* 62: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)\b)/i,
4112
+ /* 63: */ /^(?:(infinity|pi|e)\b)/i,
4113
+ /* 64: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)-?([^\W\d]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))([\w\-]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))*\b)/i,
4114
+ /* 65: */ /^(?:\()/i,
4115
+ /* 66: */ /^(?:\))/i,
4116
+ /* 67: */ /^(?:$)/i
4070
4117
  ],
4071
4118
 
4072
4119
  conditions: {
@@ -4136,7 +4183,10 @@ EOF: 1,
4136
4183
  61,
4137
4184
  62,
4138
4185
  63,
4139
- 64
4186
+ 64,
4187
+ 65,
4188
+ 66,
4189
+ 67
4140
4190
  ],
4141
4191
 
4142
4192
  inclusive: true