less 3.9.0 → 3.10.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.
Files changed (511) hide show
  1. package/.DS_Store +0 -0
  2. package/.eslintignore +4 -1
  3. package/.eslintrc.json +69 -87
  4. package/CHANGELOG.md +7 -0
  5. package/Gruntfile.js +336 -330
  6. package/bin/lessc +13110 -481
  7. package/dist/less.cjs.js +12571 -0
  8. package/dist/less.js +12878 -11507
  9. package/dist/less.min.js +7 -14
  10. package/dist/less.min.js.map +1 -0
  11. package/index.js +1 -1
  12. package/lib/less/constants.js +12 -12
  13. package/lib/less/contexts.js +93 -95
  14. package/lib/less/data/colors.js +1 -1
  15. package/lib/less/data/index.js +4 -4
  16. package/lib/less/data/unit-conversions.js +1 -1
  17. package/lib/less/default-options.js +53 -58
  18. package/lib/less/environment/abstract-file-manager.js +114 -110
  19. package/lib/less/environment/abstract-plugin-loader.js +139 -141
  20. package/lib/less/environment/environment-api.js +1 -1
  21. package/lib/less/environment/environment.js +44 -41
  22. package/lib/less/environment/file-manager-api.js +1 -1
  23. package/lib/less/functions/boolean.js +10 -12
  24. package/lib/less/functions/color-blending.js +20 -10
  25. package/lib/less/functions/color.js +63 -49
  26. package/lib/less/functions/data-uri.js +25 -39
  27. package/lib/less/functions/default.js +5 -7
  28. package/lib/less/functions/function-caller.js +42 -39
  29. package/lib/less/functions/function-registry.js +3 -3
  30. package/lib/less/functions/index.js +28 -16
  31. package/lib/less/functions/list.js +34 -28
  32. package/lib/less/functions/math-helper.js +4 -5
  33. package/lib/less/functions/math.js +8 -9
  34. package/lib/less/functions/number.js +26 -18
  35. package/lib/less/functions/string.js +13 -13
  36. package/lib/less/functions/svg.js +25 -25
  37. package/lib/less/functions/types.js +23 -27
  38. package/lib/less/import-manager.js +140 -138
  39. package/lib/less/index.js +72 -35
  40. package/lib/less/less-error.js +29 -30
  41. package/lib/less/logger.js +4 -4
  42. package/lib/less/parse-tree.js +53 -47
  43. package/lib/less/parse.js +23 -25
  44. package/lib/less/parser/chunker.js +17 -7
  45. package/lib/less/parser/parser-input.js +100 -93
  46. package/lib/less/parser/parser.js +310 -170
  47. package/lib/less/plugin-manager.js +146 -133
  48. package/lib/less/render.js +10 -13
  49. package/lib/less/source-map-builder.js +62 -57
  50. package/lib/less/source-map-output.js +118 -112
  51. package/lib/less/transform-tree.js +21 -18
  52. package/lib/less/tree/anonymous.js +35 -27
  53. package/lib/less/tree/assignment.js +29 -23
  54. package/lib/less/tree/atrule.js +150 -121
  55. package/lib/less/tree/attribute.js +32 -25
  56. package/lib/less/tree/call.js +87 -79
  57. package/lib/less/tree/color.js +202 -185
  58. package/lib/less/tree/combinator.js +25 -19
  59. package/lib/less/tree/comment.js +27 -21
  60. package/lib/less/tree/condition.js +41 -35
  61. package/lib/less/tree/debug-info.js +13 -17
  62. package/lib/less/tree/declaration.js +101 -88
  63. package/lib/less/tree/detached-ruleset.js +27 -20
  64. package/lib/less/tree/dimension.js +142 -124
  65. package/lib/less/tree/element.js +67 -58
  66. package/lib/less/tree/expression.js +66 -57
  67. package/lib/less/tree/extend.js +61 -53
  68. package/lib/less/tree/import.js +144 -141
  69. package/lib/less/tree/index.js +52 -40
  70. package/lib/less/tree/javascript.js +29 -25
  71. package/lib/less/tree/js-eval-node.js +50 -53
  72. package/lib/less/tree/keyword.js +15 -8
  73. package/lib/less/tree/media.js +137 -124
  74. package/lib/less/tree/mixin-call.js +178 -149
  75. package/lib/less/tree/mixin-definition.js +198 -178
  76. package/lib/less/tree/namespace-value.js +75 -67
  77. package/lib/less/tree/negative.js +24 -18
  78. package/lib/less/tree/node.js +138 -117
  79. package/lib/less/tree/operation.js +57 -49
  80. package/lib/less/tree/paren.js +20 -14
  81. package/lib/less/tree/property.js +65 -58
  82. package/lib/less/tree/quoted.js +62 -53
  83. package/lib/less/tree/ruleset.js +739 -680
  84. package/lib/less/tree/selector.js +129 -114
  85. package/lib/less/tree/unicode-descriptor.js +10 -6
  86. package/lib/less/tree/unit.js +117 -97
  87. package/lib/less/tree/url.js +54 -47
  88. package/lib/less/tree/value.js +38 -33
  89. package/lib/less/tree/variable-call.js +41 -34
  90. package/lib/less/tree/variable.js +58 -51
  91. package/lib/less/utils.js +110 -108
  92. package/lib/less/visitors/extend-visitor.js +157 -114
  93. package/lib/less/visitors/import-sequencer.js +47 -43
  94. package/lib/less/visitors/import-visitor.js +22 -23
  95. package/lib/less/visitors/index.js +14 -9
  96. package/lib/less/visitors/join-selector-visitor.js +32 -26
  97. package/lib/less/visitors/set-tree-visibility-visitor.js +37 -30
  98. package/lib/less/visitors/to-css-visitor.js +60 -57
  99. package/lib/less/visitors/visitor.js +44 -35
  100. package/lib/less-browser/add-default-options.js +4 -4
  101. package/lib/less-browser/bootstrap.js +11 -9
  102. package/lib/less-browser/browser.js +13 -12
  103. package/lib/less-browser/cache.js +9 -9
  104. package/lib/less-browser/error-reporting.js +27 -27
  105. package/lib/less-browser/file-manager.js +37 -35
  106. package/lib/less-browser/image-size.js +3 -3
  107. package/lib/less-browser/index.js +78 -73
  108. package/lib/less-browser/log-listener.js +6 -7
  109. package/lib/less-browser/plugin-loader.js +15 -13
  110. package/lib/less-browser/utils.js +20 -20
  111. package/lib/less-node/environment.js +4 -2
  112. package/lib/less-node/file-manager.js +128 -127
  113. package/lib/less-node/fs.js +2 -2
  114. package/lib/less-node/image-size.js +19 -18
  115. package/lib/less-node/index.js +16 -12
  116. package/lib/less-node/lessc-helper.js +4 -5
  117. package/lib/less-node/plugin-loader.js +41 -40
  118. package/lib/less-node/url-file-manager.js +41 -48
  119. package/lib/lessc.js +557 -0
  120. package/package.json +21 -11
  121. package/test/.DS_Store +0 -0
  122. package/test/browser/common.js +34 -30
  123. package/test/browser/css/urls.css +0 -3
  124. package/test/browser/less/plugin/plugin.js +4 -7
  125. package/test/browser/less/urls.less +0 -3
  126. package/test/browser/less.min.js +11 -0
  127. package/test/browser/less.min.js.map +1 -0
  128. package/test/browser/onload.js +13 -0
  129. package/test/browser/runner-browser-options.js +0 -5
  130. package/test/browser/test-runner-template.tmpl +39 -52
  131. package/test/browser/vendor/boot.js +148 -0
  132. package/test/browser/{jasmine-jsreporter.js → vendor/jasmine-jsreporter.js} +0 -0
  133. package/test/copy-bom.js +2 -1
  134. package/test/css/.DS_Store +0 -0
  135. package/test/css/functions-each.css +10 -0
  136. package/test/css/math/.DS_Store +0 -0
  137. package/test/css/namespacing/namespacing-1.css +4 -0
  138. package/test/css/urls.css +0 -1
  139. package/test/index.js +2 -5
  140. package/test/less/.DS_Store +0 -0
  141. package/test/less/colors.less +1 -1
  142. package/test/less/errors/color-func-invalid-color-2.less +2 -0
  143. package/test/less/errors/color-func-invalid-color-2.txt +3 -0
  144. package/test/less/functions-each.less +32 -0
  145. package/test/less/math/.DS_Store +0 -0
  146. package/test/less/namespacing/namespacing-1.less +10 -0
  147. package/test/less/urls.less +0 -1
  148. package/test/less-test.js +20 -11
  149. package/test/modify-vars.js +11 -2
  150. package/.travis.yml +0 -33
  151. package/appveyor.yml +0 -32
  152. package/browser.js +0 -1
  153. package/test/browser/less.js +0 -12956
  154. package/test/less-bom/3rd-party/bootstrap4.less +0 -1
  155. package/test/less-bom/3rd-party/uikit.less +0 -1
  156. package/test/less-bom/calc.less +0 -30
  157. package/test/less-bom/charsets.less +0 -3
  158. package/test/less-bom/colors.less +0 -116
  159. package/test/less-bom/comments.less +0 -102
  160. package/test/less-bom/comments2.less +0 -31
  161. package/test/less-bom/compression/compression.less +0 -36
  162. package/test/less-bom/css-3.less +0 -153
  163. package/test/less-bom/css-escapes.less +0 -42
  164. package/test/less-bom/css-grid.less +0 -30
  165. package/test/less-bom/css-guards.less +0 -103
  166. package/test/less-bom/debug/import/test.less +0 -25
  167. package/test/less-bom/debug/linenumbers.less +0 -33
  168. package/test/less-bom/detached-rulesets.less +0 -112
  169. package/test/less-bom/directives-bubling.less +0 -142
  170. package/test/less-bom/empty.less +0 -1
  171. package/test/less-bom/errors/add-mixed-units.less +0 -3
  172. package/test/less-bom/errors/add-mixed-units.txt +0 -4
  173. package/test/less-bom/errors/add-mixed-units2.less +0 -3
  174. package/test/less-bom/errors/add-mixed-units2.txt +0 -4
  175. package/test/less-bom/errors/at-rules-undefined-var.less +0 -4
  176. package/test/less-bom/errors/at-rules-undefined-var.txt +0 -4
  177. package/test/less-bom/errors/at-rules-unmatching-block.less +0 -4
  178. package/test/less-bom/errors/at-rules-unmatching-block.txt +0 -3
  179. package/test/less-bom/errors/bad-variable-declaration1.less +0 -1
  180. package/test/less-bom/errors/bad-variable-declaration1.txt +0 -2
  181. package/test/less-bom/errors/color-func-invalid-color.less +0 -3
  182. package/test/less-bom/errors/color-func-invalid-color.txt +0 -4
  183. package/test/less-bom/errors/css-guard-default-func.less +0 -4
  184. package/test/less-bom/errors/css-guard-default-func.txt +0 -4
  185. package/test/less-bom/errors/custom-property-unmatched-block-1.less +0 -6
  186. package/test/less-bom/errors/custom-property-unmatched-block-1.txt +0 -4
  187. package/test/less-bom/errors/custom-property-unmatched-block-2.less +0 -6
  188. package/test/less-bom/errors/custom-property-unmatched-block-2.txt +0 -4
  189. package/test/less-bom/errors/custom-property-unmatched-block-3.less +0 -6
  190. package/test/less-bom/errors/custom-property-unmatched-block-3.txt +0 -4
  191. package/test/less-bom/errors/detached-ruleset-1.less +0 -6
  192. package/test/less-bom/errors/detached-ruleset-1.txt +0 -4
  193. package/test/less-bom/errors/detached-ruleset-2.less +0 -6
  194. package/test/less-bom/errors/detached-ruleset-2.txt +0 -4
  195. package/test/less-bom/errors/detached-ruleset-3.less +0 -4
  196. package/test/less-bom/errors/detached-ruleset-3.txt +0 -4
  197. package/test/less-bom/errors/detached-ruleset-5.less +0 -4
  198. package/test/less-bom/errors/detached-ruleset-5.txt +0 -3
  199. package/test/less-bom/errors/detached-ruleset-6.less +0 -5
  200. package/test/less-bom/errors/detached-ruleset-6.txt +0 -4
  201. package/test/less-bom/errors/divide-mixed-units.less +0 -3
  202. package/test/less-bom/errors/divide-mixed-units.txt +0 -4
  203. package/test/less-bom/errors/extend-no-selector.less +0 -3
  204. package/test/less-bom/errors/extend-no-selector.txt +0 -3
  205. package/test/less-bom/errors/extend-not-at-end.less +0 -3
  206. package/test/less-bom/errors/extend-not-at-end.txt +0 -3
  207. package/test/less-bom/errors/functions-1.less +0 -2
  208. package/test/less-bom/errors/functions-1.txt +0 -3
  209. package/test/less-bom/errors/functions-10-keyword.less +0 -2
  210. package/test/less-bom/errors/functions-10-keyword.txt +0 -3
  211. package/test/less-bom/errors/functions-11-operation.less +0 -2
  212. package/test/less-bom/errors/functions-11-operation.txt +0 -3
  213. package/test/less-bom/errors/functions-12-quoted.less +0 -2
  214. package/test/less-bom/errors/functions-12-quoted.txt +0 -3
  215. package/test/less-bom/errors/functions-13-selector.less +0 -2
  216. package/test/less-bom/errors/functions-13-selector.txt +0 -3
  217. package/test/less-bom/errors/functions-14-url.less +0 -2
  218. package/test/less-bom/errors/functions-14-url.txt +0 -3
  219. package/test/less-bom/errors/functions-15-value.less +0 -2
  220. package/test/less-bom/errors/functions-15-value.txt +0 -3
  221. package/test/less-bom/errors/functions-3-assignment.less +0 -2
  222. package/test/less-bom/errors/functions-3-assignment.txt +0 -3
  223. package/test/less-bom/errors/functions-4-call.less +0 -2
  224. package/test/less-bom/errors/functions-4-call.txt +0 -3
  225. package/test/less-bom/errors/functions-5-color-2.less +0 -1
  226. package/test/less-bom/errors/functions-5-color-2.txt +0 -2
  227. package/test/less-bom/errors/functions-5-color.less +0 -2
  228. package/test/less-bom/errors/functions-5-color.txt +0 -3
  229. package/test/less-bom/errors/functions-6-condition.less +0 -2
  230. package/test/less-bom/errors/functions-6-condition.txt +0 -3
  231. package/test/less-bom/errors/functions-7-dimension.less +0 -2
  232. package/test/less-bom/errors/functions-7-dimension.txt +0 -3
  233. package/test/less-bom/errors/functions-8-element.less +0 -2
  234. package/test/less-bom/errors/functions-8-element.txt +0 -3
  235. package/test/less-bom/errors/functions-9-expression.less +0 -2
  236. package/test/less-bom/errors/functions-9-expression.txt +0 -3
  237. package/test/less-bom/errors/import-malformed.less +0 -1
  238. package/test/less-bom/errors/import-malformed.txt +0 -3
  239. package/test/less-bom/errors/import-missing.less +0 -6
  240. package/test/less-bom/errors/import-missing.txt +0 -3
  241. package/test/less-bom/errors/import-no-semi.less +0 -1
  242. package/test/less-bom/errors/import-no-semi.txt +0 -2
  243. package/test/less-bom/errors/import-subfolder1.less +0 -1
  244. package/test/less-bom/errors/import-subfolder1.txt +0 -3
  245. package/test/less-bom/errors/import-subfolder2.less +0 -1
  246. package/test/less-bom/errors/import-subfolder2.txt +0 -4
  247. package/test/less-bom/errors/imports/import-subfolder1.less +0 -1
  248. package/test/less-bom/errors/imports/import-subfolder2.less +0 -1
  249. package/test/less-bom/errors/imports/import-test.less +0 -4
  250. package/test/less-bom/errors/imports/subfolder/mixin-not-defined.less +0 -1
  251. package/test/less-bom/errors/imports/subfolder/parse-error-curly-bracket.less +0 -1
  252. package/test/less-bom/errors/javascript-error.less +0 -3
  253. package/test/less-bom/errors/javascript-error.txt +0 -4
  254. package/test/less-bom/errors/javascript-undefined-var.less +0 -3
  255. package/test/less-bom/errors/javascript-undefined-var.txt +0 -4
  256. package/test/less-bom/errors/mixed-mixin-definition-args-1.less +0 -6
  257. package/test/less-bom/errors/mixed-mixin-definition-args-1.txt +0 -4
  258. package/test/less-bom/errors/mixed-mixin-definition-args-2.less +0 -6
  259. package/test/less-bom/errors/mixed-mixin-definition-args-2.txt +0 -4
  260. package/test/less-bom/errors/mixin-not-defined-2.less +0 -7
  261. package/test/less-bom/errors/mixin-not-defined-2.txt +0 -4
  262. package/test/less-bom/errors/mixin-not-defined.less +0 -11
  263. package/test/less-bom/errors/mixin-not-defined.txt +0 -3
  264. package/test/less-bom/errors/mixin-not-matched.less +0 -6
  265. package/test/less-bom/errors/mixin-not-matched.txt +0 -3
  266. package/test/less-bom/errors/mixin-not-matched2.less +0 -6
  267. package/test/less-bom/errors/mixin-not-matched2.txt +0 -3
  268. package/test/less-bom/errors/mixin-not-visible-in-scope-1.less +0 -9
  269. package/test/less-bom/errors/mixin-not-visible-in-scope-1.txt +0 -4
  270. package/test/less-bom/errors/mixins-guards-cond-expected.less +0 -5
  271. package/test/less-bom/errors/mixins-guards-cond-expected.txt +0 -3
  272. package/test/less-bom/errors/mixins-guards-default-func-1.less +0 -9
  273. package/test/less-bom/errors/mixins-guards-default-func-1.txt +0 -4
  274. package/test/less-bom/errors/mixins-guards-default-func-2.less +0 -9
  275. package/test/less-bom/errors/mixins-guards-default-func-2.txt +0 -4
  276. package/test/less-bom/errors/mixins-guards-default-func-3.less +0 -9
  277. package/test/less-bom/errors/mixins-guards-default-func-3.txt +0 -4
  278. package/test/less-bom/errors/multiple-guards-on-css-selectors.less +0 -4
  279. package/test/less-bom/errors/multiple-guards-on-css-selectors.txt +0 -4
  280. package/test/less-bom/errors/multiple-guards-on-css-selectors2.less +0 -4
  281. package/test/less-bom/errors/multiple-guards-on-css-selectors2.txt +0 -4
  282. package/test/less-bom/errors/multiply-mixed-units.less +0 -7
  283. package/test/less-bom/errors/multiply-mixed-units.txt +0 -4
  284. package/test/less-bom/errors/namespacing-2.less +0 -7
  285. package/test/less-bom/errors/namespacing-2.txt +0 -4
  286. package/test/less-bom/errors/namespacing-3.less +0 -8
  287. package/test/less-bom/errors/namespacing-3.txt +0 -4
  288. package/test/less-bom/errors/namespacing-4.less +0 -7
  289. package/test/less-bom/errors/namespacing-4.txt +0 -4
  290. package/test/less-bom/errors/parens-error-1.less +0 -3
  291. package/test/less-bom/errors/parens-error-1.txt +0 -4
  292. package/test/less-bom/errors/parens-error-2.less +0 -3
  293. package/test/less-bom/errors/parens-error-2.txt +0 -4
  294. package/test/less-bom/errors/parens-error-3.less +0 -3
  295. package/test/less-bom/errors/parens-error-3.txt +0 -4
  296. package/test/less-bom/errors/parse-error-curly-bracket.less +0 -4
  297. package/test/less-bom/errors/parse-error-curly-bracket.txt +0 -4
  298. package/test/less-bom/errors/parse-error-media-no-block-1.less +0 -5
  299. package/test/less-bom/errors/parse-error-media-no-block-1.txt +0 -3
  300. package/test/less-bom/errors/parse-error-media-no-block-2.less +0 -1
  301. package/test/less-bom/errors/parse-error-media-no-block-2.txt +0 -2
  302. package/test/less-bom/errors/parse-error-media-no-block-3.less +0 -4
  303. package/test/less-bom/errors/parse-error-media-no-block-3.txt +0 -3
  304. package/test/less-bom/errors/parse-error-missing-bracket.less +0 -2
  305. package/test/less-bom/errors/parse-error-missing-bracket.txt +0 -3
  306. package/test/less-bom/errors/parse-error-missing-parens.less +0 -5
  307. package/test/less-bom/errors/parse-error-missing-parens.txt +0 -3
  308. package/test/less-bom/errors/parse-error-with-import.less +0 -13
  309. package/test/less-bom/errors/parse-error-with-import.txt +0 -4
  310. package/test/less-bom/errors/percentage-missing-space.less +0 -3
  311. package/test/less-bom/errors/percentage-missing-space.txt +0 -4
  312. package/test/less-bom/errors/percentage-non-number-argument.less +0 -3
  313. package/test/less-bom/errors/percentage-non-number-argument.txt +0 -4
  314. package/test/less-bom/errors/plugin/plugin-error-2.js +0 -5
  315. package/test/less-bom/errors/plugin/plugin-error-3.js +0 -5
  316. package/test/less-bom/errors/plugin/plugin-error.js +0 -1
  317. package/test/less-bom/errors/plugin-1.less +0 -1
  318. package/test/less-bom/errors/plugin-1.txt +0 -2
  319. package/test/less-bom/errors/plugin-2.less +0 -1
  320. package/test/less-bom/errors/plugin-2.txt +0 -5
  321. package/test/less-bom/errors/plugin-3.less +0 -1
  322. package/test/less-bom/errors/plugin-3.txt +0 -5
  323. package/test/less-bom/errors/property-asterisk-only-name.less +0 -3
  324. package/test/less-bom/errors/property-asterisk-only-name.txt +0 -4
  325. package/test/less-bom/errors/property-ie5-hack.less +0 -3
  326. package/test/less-bom/errors/property-ie5-hack.txt +0 -3
  327. package/test/less-bom/errors/property-in-root.less +0 -4
  328. package/test/less-bom/errors/property-in-root.txt +0 -4
  329. package/test/less-bom/errors/property-in-root2.less +0 -1
  330. package/test/less-bom/errors/property-in-root2.txt +0 -4
  331. package/test/less-bom/errors/property-in-root3.less +0 -4
  332. package/test/less-bom/errors/property-in-root3.txt +0 -3
  333. package/test/less-bom/errors/property-interp-not-defined.less +0 -1
  334. package/test/less-bom/errors/property-interp-not-defined.txt +0 -2
  335. package/test/less-bom/errors/recursive-variable.less +0 -1
  336. package/test/less-bom/errors/recursive-variable.txt +0 -2
  337. package/test/less-bom/errors/root-func-undefined-1.less +0 -1
  338. package/test/less-bom/errors/root-func-undefined-1.txt +0 -2
  339. package/test/less-bom/errors/root-func-undefined-2.less +0 -2
  340. package/test/less-bom/errors/root-func-undefined-2.txt +0 -3
  341. package/test/less-bom/errors/single-character.less +0 -1
  342. package/test/less-bom/errors/single-character.txt +0 -2
  343. package/test/less-bom/errors/svg-gradient1.less +0 -3
  344. package/test/less-bom/errors/svg-gradient1.txt +0 -4
  345. package/test/less-bom/errors/svg-gradient2.less +0 -3
  346. package/test/less-bom/errors/svg-gradient2.txt +0 -4
  347. package/test/less-bom/errors/svg-gradient3.less +0 -3
  348. package/test/less-bom/errors/svg-gradient3.txt +0 -4
  349. package/test/less-bom/errors/svg-gradient4.less +0 -4
  350. package/test/less-bom/errors/svg-gradient4.txt +0 -4
  351. package/test/less-bom/errors/svg-gradient5.less +0 -4
  352. package/test/less-bom/errors/svg-gradient5.txt +0 -4
  353. package/test/less-bom/errors/svg-gradient6.less +0 -4
  354. package/test/less-bom/errors/svg-gradient6.txt +0 -4
  355. package/test/less-bom/errors/unit-function.less +0 -3
  356. package/test/less-bom/errors/unit-function.txt +0 -4
  357. package/test/less-bom/extend-chaining.less +0 -91
  358. package/test/less-bom/extend-clearfix.less +0 -19
  359. package/test/less-bom/extend-exact.less +0 -46
  360. package/test/less-bom/extend-media.less +0 -24
  361. package/test/less-bom/extend-nest.less +0 -65
  362. package/test/less-bom/extend-selector.less +0 -110
  363. package/test/less-bom/extend.less +0 -81
  364. package/test/less-bom/extract-and-length.less +0 -146
  365. package/test/less-bom/filemanagerPlugin/colors.test +0 -1
  366. package/test/less-bom/filemanagerPlugin/filemanager.less +0 -4
  367. package/test/less-bom/functions-each.less +0 -131
  368. package/test/less-bom/functions.less +0 -279
  369. package/test/less-bom/globalVars/extended.json +0 -5
  370. package/test/less-bom/globalVars/extended.less +0 -10
  371. package/test/less-bom/globalVars/simple.json +0 -3
  372. package/test/less-bom/globalVars/simple.less +0 -3
  373. package/test/less-bom/ie-filters.less +0 -15
  374. package/test/less-bom/import/css-import.less +0 -1
  375. package/test/less-bom/import/deeper/deeper-2/url-import-2.less +0 -3
  376. package/test/less-bom/import/deeper/deeper-2/url-import.less +0 -1
  377. package/test/less-bom/import/deeper/import-once-test-a.less +0 -1
  378. package/test/less-bom/import/deeper/url-import.less +0 -1
  379. package/test/less-bom/import/import-and-relative-paths-test.less +0 -17
  380. package/test/less-bom/import/import-charset-test.less +0 -1
  381. package/test/less-bom/import/import-inline-invalid-css.less +0 -1
  382. package/test/less-bom/import/import-interpolation.less +0 -2
  383. package/test/less-bom/import/import-interpolation2.less +0 -5
  384. package/test/less-bom/import/import-once-test-c.less +0 -6
  385. package/test/less-bom/import/import-reference.less +0 -98
  386. package/test/less-bom/import/import-test-a.less +0 -5
  387. package/test/less-bom/import/import-test-b.less +0 -8
  388. package/test/less-bom/import/import-test-c.less +0 -6
  389. package/test/less-bom/import/import-test-d.css +0 -1
  390. package/test/less-bom/import/import-test-e.less +0 -2
  391. package/test/less-bom/import/import-test-f.less +0 -5
  392. package/test/less-bom/import/imports/font.less +0 -8
  393. package/test/less-bom/import/imports/logo.less +0 -6
  394. package/test/less-bom/import/interpolation-vars.less +0 -6
  395. package/test/less-bom/import/invalid-css.less +0 -1
  396. package/test/less-bom/import/urls.less +0 -1
  397. package/test/less-bom/import-inline.less +0 -3
  398. package/test/less-bom/import-interpolation.less +0 -8
  399. package/test/less-bom/import-module.less +0 -3
  400. package/test/less-bom/import-once.less +0 -6
  401. package/test/less-bom/import-reference-issues/appender-reference-1968.less +0 -6
  402. package/test/less-bom/import-reference-issues/global-scope-import.less +0 -13
  403. package/test/less-bom/import-reference-issues/global-scope-nested.less +0 -3
  404. package/test/less-bom/import-reference-issues/mixin-1968.less +0 -8
  405. package/test/less-bom/import-reference-issues/multiple-import-nested.less +0 -12
  406. package/test/less-bom/import-reference-issues/multiple-import.less +0 -10
  407. package/test/less-bom/import-reference-issues/simple-mixin.css +0 -3
  408. package/test/less-bom/import-reference-issues/simple-ruleset-2162.less +0 -3
  409. package/test/less-bom/import-reference-issues.less +0 -50
  410. package/test/less-bom/import-reference.less +0 -26
  411. package/test/less-bom/import.less +0 -29
  412. package/test/less-bom/include-path/include-path.less +0 -8
  413. package/test/less-bom/include-path-string/include-path-string.less +0 -3
  414. package/test/less-bom/javascript.less +0 -39
  415. package/test/less-bom/lazy-eval.less +0 -6
  416. package/test/less-bom/legacy/legacy.less +0 -21
  417. package/test/less-bom/math/parens-division/media-math.less +0 -9
  418. package/test/less-bom/math/parens-division/mixins-args.less +0 -264
  419. package/test/less-bom/math/parens-division/new-division.less +0 -17
  420. package/test/less-bom/math/parens-division/parens.less +0 -46
  421. package/test/less-bom/math/strict/css.less +0 -108
  422. package/test/less-bom/math/strict/media-math.less +0 -9
  423. package/test/less-bom/math/strict/mixins-args.less +0 -264
  424. package/test/less-bom/math/strict/parens.less +0 -46
  425. package/test/less-bom/math/strict-legacy/css.less +0 -108
  426. package/test/less-bom/math/strict-legacy/media-math.less +0 -9
  427. package/test/less-bom/math/strict-legacy/mixins-args.less +0 -263
  428. package/test/less-bom/math/strict-legacy/parens.less +0 -50
  429. package/test/less-bom/media.less +0 -241
  430. package/test/less-bom/merge.less +0 -81
  431. package/test/less-bom/mixins-closure.less +0 -26
  432. package/test/less-bom/mixins-guards-default-func.less +0 -195
  433. package/test/less-bom/mixins-guards.less +0 -358
  434. package/test/less-bom/mixins-important.less +0 -53
  435. package/test/less-bom/mixins-interpolated.less +0 -75
  436. package/test/less-bom/mixins-named-args.less +0 -36
  437. package/test/less-bom/mixins-nested.less +0 -22
  438. package/test/less-bom/mixins-pattern.less +0 -102
  439. package/test/less-bom/mixins.less +0 -145
  440. package/test/less-bom/modifyVars/extended.json +0 -5
  441. package/test/less-bom/modifyVars/extended.less +0 -11
  442. package/test/less-bom/namespacing/imports/a-better-bootstrap.less +0 -13
  443. package/test/less-bom/namespacing/imports/library.less +0 -14
  444. package/test/less-bom/namespacing/namespacing-1.less +0 -42
  445. package/test/less-bom/namespacing/namespacing-2.less +0 -27
  446. package/test/less-bom/namespacing/namespacing-3.less +0 -28
  447. package/test/less-bom/namespacing/namespacing-4.less +0 -33
  448. package/test/less-bom/namespacing/namespacing-5.less +0 -32
  449. package/test/less-bom/namespacing/namespacing-6.less +0 -26
  450. package/test/less-bom/namespacing/namespacing-7.less +0 -48
  451. package/test/less-bom/namespacing/namespacing-functions.less +0 -11
  452. package/test/less-bom/namespacing/namespacing-media.less +0 -26
  453. package/test/less-bom/namespacing/namespacing-operations.less +0 -15
  454. package/test/less-bom/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
  455. package/test/less-bom/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
  456. package/test/less-bom/no-js-errors/no-js-errors.less +0 -3
  457. package/test/less-bom/no-js-errors/no-js-errors.txt +0 -4
  458. package/test/less-bom/no-output.less +0 -2
  459. package/test/less-bom/no-strict-math/mixins-guards.less +0 -25
  460. package/test/less-bom/no-strict-math/no-sm-operations.less +0 -16
  461. package/test/less-bom/operations.less +0 -63
  462. package/test/less-bom/parse-interpolation.less +0 -53
  463. package/test/less-bom/permissive-parse.less +0 -50
  464. package/test/less-bom/plugin/plugin-collection.js +0 -9
  465. package/test/less-bom/plugin/plugin-global.js +0 -9
  466. package/test/less-bom/plugin/plugin-local.js +0 -14
  467. package/test/less-bom/plugin/plugin-preeval.js +0 -27
  468. package/test/less-bom/plugin/plugin-scope1.js +0 -3
  469. package/test/less-bom/plugin/plugin-scope2.js +0 -3
  470. package/test/less-bom/plugin/plugin-set-options-v2.js +0 -33
  471. package/test/less-bom/plugin/plugin-set-options-v3.js +0 -31
  472. package/test/less-bom/plugin/plugin-set-options.js +0 -32
  473. package/test/less-bom/plugin/plugin-simple.js +0 -7
  474. package/test/less-bom/plugin/plugin-transitive.js +0 -6
  475. package/test/less-bom/plugin/plugin-transitive.less +0 -5
  476. package/test/less-bom/plugin/plugin-tree-nodes.js +0 -82
  477. package/test/less-bom/plugin-module.less +0 -7
  478. package/test/less-bom/plugin-preeval.less +0 -15
  479. package/test/less-bom/plugin.less +0 -142
  480. package/test/less-bom/postProcessorPlugin/postProcessor.less +0 -4
  481. package/test/less-bom/preProcessorPlugin/preProcessor.less +0 -3
  482. package/test/less-bom/property-accessors.less +0 -67
  483. package/test/less-bom/property-name-interp.less +0 -56
  484. package/test/less-bom/rewrite-urls-all/folder/file.less +0 -8
  485. package/test/less-bom/rewrite-urls-all/rewrite-urls-all.less +0 -11
  486. package/test/less-bom/rewrite-urls-local/folder/file.less +0 -8
  487. package/test/less-bom/rewrite-urls-local/rewrite-urls-local.less +0 -11
  488. package/test/less-bom/root-registry/file.less +0 -1
  489. package/test/less-bom/root-registry/root.less +0 -3
  490. package/test/less-bom/rootpath-rewrite-urls-all/folder/file.less +0 -8
  491. package/test/less-bom/rootpath-rewrite-urls-all/rootpath-rewrite-urls-all.less +0 -11
  492. package/test/less-bom/rootpath-rewrite-urls-local/folder/file.less +0 -8
  493. package/test/less-bom/rootpath-rewrite-urls-local/rootpath-rewrite-urls-local.less +0 -11
  494. package/test/less-bom/rulesets.less +0 -30
  495. package/test/less-bom/scope.less +0 -104
  496. package/test/less-bom/selectors.less +0 -184
  497. package/test/less-bom/sourcemaps/basic.json +0 -3
  498. package/test/less-bom/sourcemaps/basic.less +0 -27
  499. package/test/less-bom/sourcemaps/custom-props.less +0 -8
  500. package/test/less-bom/sourcemaps/imported.css +0 -7
  501. package/test/less-bom/sourcemaps-empty/empty.less +0 -1
  502. package/test/less-bom/sourcemaps-empty/var-defs.less +0 -1
  503. package/test/less-bom/static-urls/urls.less +0 -33
  504. package/test/less-bom/strict-units/strict-units.less +0 -4
  505. package/test/less-bom/strings.less +0 -73
  506. package/test/less-bom/url-args/urls.less +0 -63
  507. package/test/less-bom/urls.less +0 -94
  508. package/test/less-bom/variables-in-at-rules.less +0 -20
  509. package/test/less-bom/variables.less +0 -127
  510. package/test/less-bom/visitorPlugin/visitor.less +0 -4
  511. package/test/less-bom/whitespace.less +0 -44
@@ -1,60 +1,66 @@
1
- var LessError = require('./less-error'),
2
- transformTree = require('./transform-tree'),
3
- logger = require('./logger');
4
-
5
- module.exports = function(SourceMapBuilder) {
6
- var ParseTree = function(root, imports) {
7
- this.root = root;
8
- this.imports = imports;
9
- };
10
-
11
- ParseTree.prototype.toCSS = function(options) {
12
- var evaldRoot, result = {}, sourceMapBuilder;
13
- try {
14
- evaldRoot = transformTree(this.root, options);
15
- } catch (e) {
16
- throw new LessError(e, this.imports);
1
+ import LessError from './less-error';
2
+ import transformTree from './transform-tree';
3
+ import logger from './logger';
4
+
5
+ export default SourceMapBuilder => {
6
+ class ParseTree {
7
+ constructor(root, imports) {
8
+ this.root = root;
9
+ this.imports = imports;
17
10
  }
18
11
 
19
- try {
20
- var compress = Boolean(options.compress);
21
- if (compress) {
22
- logger.warn('The compress option has been deprecated. We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.');
12
+ toCSS(options) {
13
+ let evaldRoot;
14
+ const result = {};
15
+ let sourceMapBuilder;
16
+ try {
17
+ evaldRoot = transformTree(this.root, options);
18
+ } catch (e) {
19
+ throw new LessError(e, this.imports);
23
20
  }
24
21
 
25
- var toCSSOptions = {
26
- compress: compress,
27
- dumpLineNumbers: options.dumpLineNumbers,
28
- strictUnits: Boolean(options.strictUnits),
29
- numPrecision: 8};
22
+ try {
23
+ const compress = Boolean(options.compress);
24
+ if (compress) {
25
+ logger.warn('The compress option has been deprecated. ' +
26
+ 'We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.');
27
+ }
30
28
 
31
- if (options.sourceMap) {
32
- sourceMapBuilder = new SourceMapBuilder(options.sourceMap);
33
- result.css = sourceMapBuilder.toCSS(evaldRoot, toCSSOptions, this.imports);
34
- } else {
35
- result.css = evaldRoot.toCSS(toCSSOptions);
29
+ const toCSSOptions = {
30
+ compress,
31
+ dumpLineNumbers: options.dumpLineNumbers,
32
+ strictUnits: Boolean(options.strictUnits),
33
+ numPrecision: 8};
34
+
35
+ if (options.sourceMap) {
36
+ sourceMapBuilder = new SourceMapBuilder(options.sourceMap);
37
+ result.css = sourceMapBuilder.toCSS(evaldRoot, toCSSOptions, this.imports);
38
+ } else {
39
+ result.css = evaldRoot.toCSS(toCSSOptions);
40
+ }
41
+ } catch (e) {
42
+ throw new LessError(e, this.imports);
36
43
  }
37
- } catch (e) {
38
- throw new LessError(e, this.imports);
39
- }
40
44
 
41
- if (options.pluginManager) {
42
- var postProcessors = options.pluginManager.getPostProcessors();
43
- for (var i = 0; i < postProcessors.length; i++) {
44
- result.css = postProcessors[i].process(result.css, { sourceMap: sourceMapBuilder, options: options, imports: this.imports });
45
+ if (options.pluginManager) {
46
+ const postProcessors = options.pluginManager.getPostProcessors();
47
+ for (let i = 0; i < postProcessors.length; i++) {
48
+ result.css = postProcessors[i].process(result.css, { sourceMap: sourceMapBuilder, options, imports: this.imports });
49
+ }
50
+ }
51
+ if (options.sourceMap) {
52
+ result.map = sourceMapBuilder.getExternalSourceMap();
45
53
  }
46
- }
47
- if (options.sourceMap) {
48
- result.map = sourceMapBuilder.getExternalSourceMap();
49
- }
50
54
 
51
- result.imports = [];
52
- for (var file in this.imports.files) {
53
- if (this.imports.files.hasOwnProperty(file) && file !== this.imports.rootFilename) {
54
- result.imports.push(file);
55
+ result.imports = [];
56
+ for (const file in this.imports.files) {
57
+ if (this.imports.files.hasOwnProperty(file) && file !== this.imports.rootFilename) {
58
+ result.imports.push(file);
59
+ }
55
60
  }
61
+ return result;
56
62
  }
57
- return result;
58
- };
63
+ }
64
+
59
65
  return ParseTree;
60
66
  };
package/lib/less/parse.js CHANGED
@@ -1,12 +1,12 @@
1
- var PromiseConstructor,
2
- contexts = require('./contexts'),
3
- Parser = require('./parser/parser'),
4
- PluginManager = require('./plugin-manager'),
5
- LessError = require('./less-error'),
6
- utils = require('./utils');
1
+ let PromiseConstructor;
2
+ import contexts from './contexts';
3
+ import Parser from './parser/parser';
4
+ import PluginManager from './plugin-manager';
5
+ import LessError from './less-error';
6
+ import * as utils from './utils';
7
7
 
8
- module.exports = function(environment, ParseTree, ImportManager) {
9
- var parse = function (input, options, callback) {
8
+ export default (environment, ParseTree, ImportManager) => {
9
+ const parse = function (input, options, callback) {
10
10
 
11
11
  if (typeof options === 'function') {
12
12
  callback = options;
@@ -17,12 +17,9 @@ module.exports = function(environment, ParseTree, ImportManager) {
17
17
  }
18
18
 
19
19
  if (!callback) {
20
- if (!PromiseConstructor) {
21
- PromiseConstructor = typeof Promise === 'undefined' ? require('promise') : Promise;
22
- }
23
- var self = this;
24
- return new PromiseConstructor(function (resolve, reject) {
25
- parse.call(self, input, options, function(err, output) {
20
+ const self = this;
21
+ return new Promise((resolve, reject) => {
22
+ parse.call(self, input, options, (err, output) => {
26
23
  if (err) {
27
24
  reject(err);
28
25
  } else {
@@ -31,9 +28,9 @@ module.exports = function(environment, ParseTree, ImportManager) {
31
28
  });
32
29
  });
33
30
  } else {
34
- var context,
35
- rootFileInfo,
36
- pluginManager = new PluginManager(this, !options.reUsePluginManager);
31
+ let context;
32
+ let rootFileInfo;
33
+ const pluginManager = new PluginManager(this, !options.reUsePluginManager);
37
34
 
38
35
  options.pluginManager = pluginManager;
39
36
 
@@ -42,14 +39,14 @@ module.exports = function(environment, ParseTree, ImportManager) {
42
39
  if (options.rootFileInfo) {
43
40
  rootFileInfo = options.rootFileInfo;
44
41
  } else {
45
- var filename = options.filename || 'input';
46
- var entryPath = filename.replace(/[^\/\\]*$/, '');
42
+ const filename = options.filename || 'input';
43
+ const entryPath = filename.replace(/[^\/\\]*$/, '');
47
44
  rootFileInfo = {
48
- filename: filename,
45
+ filename,
49
46
  rewriteUrls: context.rewriteUrls,
50
47
  rootpath: context.rootpath || '',
51
48
  currentDirectory: entryPath,
52
- entryPath: entryPath,
49
+ entryPath,
53
50
  rootFilename: filename
54
51
  };
55
52
  // add in a missing trailing slash
@@ -58,15 +55,16 @@ module.exports = function(environment, ParseTree, ImportManager) {
58
55
  }
59
56
  }
60
57
 
61
- var imports = new ImportManager(this, context, rootFileInfo);
58
+ const imports = new ImportManager(this, context, rootFileInfo);
62
59
  this.importManager = imports;
63
60
 
64
61
  // TODO: allow the plugins to be just a list of paths or names
65
62
  // Do an async plugin queue like lessc
66
63
 
67
64
  if (options.plugins) {
68
- options.plugins.forEach(function(plugin) {
69
- var evalResult, contents;
65
+ options.plugins.forEach(plugin => {
66
+ let evalResult;
67
+ let contents;
70
68
  if (plugin.fileContent) {
71
69
  contents = plugin.fileContent.replace(/^\uFEFF/, '');
72
70
  evalResult = pluginManager.Loader.evalPlugin(contents, context, imports, plugin.options, plugin.filename);
@@ -81,7 +79,7 @@ module.exports = function(environment, ParseTree, ImportManager) {
81
79
  }
82
80
 
83
81
  new Parser(context, imports, rootFileInfo)
84
- .parse(input, function (e, root) {
82
+ .parse(input, (e, root) => {
85
83
  if (e) { return callback(e); }
86
84
  callback(null, root, imports, options);
87
85
  }, options);
@@ -1,12 +1,22 @@
1
1
  // Split the input into chunks.
2
- module.exports = function (input, fail) {
3
- var len = input.length, level = 0, parenLevel = 0,
4
- lastOpening, lastOpeningParen, lastMultiComment, lastMultiCommentEndBrace,
5
- chunks = [], emitFrom = 0,
6
- chunkerCurrentIndex, currentChunkStartIndex, cc, cc2, matched;
2
+ export default (input, fail) => {
3
+ const len = input.length;
4
+ let level = 0;
5
+ let parenLevel = 0;
6
+ let lastOpening;
7
+ let lastOpeningParen;
8
+ let lastMultiComment;
9
+ let lastMultiCommentEndBrace;
10
+ const chunks = [];
11
+ let emitFrom = 0;
12
+ let chunkerCurrentIndex;
13
+ let currentChunkStartIndex;
14
+ let cc;
15
+ let cc2;
16
+ let matched;
7
17
 
8
18
  function emitChunk(force) {
9
- var len = chunkerCurrentIndex - emitFrom;
19
+ const len = chunkerCurrentIndex - emitFrom;
10
20
  if (((len < 512) && !force) || !len) {
11
21
  return;
12
22
  }
@@ -64,7 +74,7 @@ module.exports = function (input, fail) {
64
74
  }
65
75
  }
66
76
  if (matched) { continue; }
67
- return fail('unmatched `' + String.fromCharCode(cc) + '`', currentChunkStartIndex);
77
+ return fail(`unmatched \`${String.fromCharCode(cc)}\``, currentChunkStartIndex);
68
78
  case 47: // /, check for comment
69
79
  if (parenLevel || (chunkerCurrentIndex == len - 1)) { continue; }
70
80
  cc2 = input.charCodeAt(chunkerCurrentIndex + 1);
@@ -1,32 +1,50 @@
1
- var chunker = require('./chunker');
2
-
3
- module.exports = function() {
4
- var input, // Less input string
5
- j, // current chunk
6
- saveStack = [], // holds state for backtracking
7
- furthest, // furthest index the parser has gone to
8
- furthestPossibleErrorMessage, // if this is furthest we got to, this is the probably cause
9
- chunks, // chunkified input
10
- current, // current chunk
11
- currentPos, // index of current chunk, in `input`
12
- parserInput = {};
13
-
14
- var CHARCODE_SPACE = 32,
15
- CHARCODE_TAB = 9,
16
- CHARCODE_LF = 10,
17
- CHARCODE_CR = 13,
18
- CHARCODE_PLUS = 43,
19
- CHARCODE_COMMA = 44,
20
- CHARCODE_FORWARD_SLASH = 47,
21
- CHARCODE_9 = 57;
1
+ import chunker from './chunker';
2
+
3
+ export default () => {
4
+ let // Less input string
5
+ input;
6
+
7
+ let // current chunk
8
+ j;
9
+
10
+ const // holds state for backtracking
11
+ saveStack = [];
12
+
13
+ let // furthest index the parser has gone to
14
+ furthest;
15
+
16
+ let // if this is furthest we got to, this is the probably cause
17
+ furthestPossibleErrorMessage;
18
+
19
+ let // chunkified input
20
+ chunks;
21
+
22
+ let // current chunk
23
+ current;
24
+
25
+ let // index of current chunk, in `input`
26
+ currentPos;
27
+
28
+ const parserInput = {};
29
+ const CHARCODE_SPACE = 32;
30
+ const CHARCODE_TAB = 9;
31
+ const CHARCODE_LF = 10;
32
+ const CHARCODE_CR = 13;
33
+ const CHARCODE_PLUS = 43;
34
+ const CHARCODE_COMMA = 44;
35
+ const CHARCODE_FORWARD_SLASH = 47;
36
+ const CHARCODE_9 = 57;
22
37
 
23
38
  function skipWhitespace(length) {
24
- var oldi = parserInput.i, oldj = j,
25
- curr = parserInput.i - currentPos,
26
- endIndex = parserInput.i + current.length - curr,
27
- mem = (parserInput.i += length),
28
- inp = input,
29
- c, nextChar, comment;
39
+ const oldi = parserInput.i;
40
+ const oldj = j;
41
+ const curr = parserInput.i - currentPos;
42
+ const endIndex = parserInput.i + current.length - curr;
43
+ const mem = (parserInput.i += length);
44
+ const inp = input;
45
+ let c;
46
+ let nextChar;
47
+ let comment;
30
48
 
31
49
  for (; parserInput.i < endIndex; parserInput.i++) {
32
50
  c = inp.charCodeAt(parserInput.i);
@@ -35,7 +53,7 @@ module.exports = function() {
35
53
  nextChar = inp.charAt(parserInput.i + 1);
36
54
  if (nextChar === '/') {
37
55
  comment = {index: parserInput.i, isLineComment: true};
38
- var nextNewLine = inp.indexOf('\n', parserInput.i + 2);
56
+ let nextNewLine = inp.indexOf('\n', parserInput.i + 2);
39
57
  if (nextNewLine < 0) {
40
58
  nextNewLine = endIndex;
41
59
  }
@@ -44,7 +62,7 @@ module.exports = function() {
44
62
  parserInput.commentStore.push(comment);
45
63
  continue;
46
64
  } else if (nextChar === '*') {
47
- var nextStarSlash = inp.indexOf('*/', parserInput.i + 2);
65
+ const nextStarSlash = inp.indexOf('*/', parserInput.i + 2);
48
66
  if (nextStarSlash >= 0) {
49
67
  comment = {
50
68
  index: parserInput.i,
@@ -79,38 +97,38 @@ module.exports = function() {
79
97
  return oldi !== parserInput.i || oldj !== j;
80
98
  }
81
99
 
82
- parserInput.save = function() {
100
+ parserInput.save = () => {
83
101
  currentPos = parserInput.i;
84
- saveStack.push( { current: current, i: parserInput.i, j: j });
102
+ saveStack.push( { current, i: parserInput.i, j });
85
103
  };
86
- parserInput.restore = function(possibleErrorMessage) {
104
+ parserInput.restore = possibleErrorMessage => {
87
105
 
88
106
  if (parserInput.i > furthest || (parserInput.i === furthest && possibleErrorMessage && !furthestPossibleErrorMessage)) {
89
107
  furthest = parserInput.i;
90
108
  furthestPossibleErrorMessage = possibleErrorMessage;
91
109
  }
92
- var state = saveStack.pop();
110
+ const state = saveStack.pop();
93
111
  current = state.current;
94
112
  currentPos = parserInput.i = state.i;
95
113
  j = state.j;
96
114
  };
97
- parserInput.forget = function() {
115
+ parserInput.forget = () => {
98
116
  saveStack.pop();
99
117
  };
100
- parserInput.isWhitespace = function (offset) {
101
- var pos = parserInput.i + (offset || 0),
102
- code = input.charCodeAt(pos);
118
+ parserInput.isWhitespace = offset => {
119
+ const pos = parserInput.i + (offset || 0);
120
+ const code = input.charCodeAt(pos);
103
121
  return (code === CHARCODE_SPACE || code === CHARCODE_CR || code === CHARCODE_TAB || code === CHARCODE_LF);
104
122
  };
105
123
 
106
124
  // Specialization of $(tok)
107
- parserInput.$re = function(tok) {
125
+ parserInput.$re = tok => {
108
126
  if (parserInput.i > currentPos) {
109
127
  current = current.slice(parserInput.i - currentPos);
110
128
  currentPos = parserInput.i;
111
129
  }
112
130
 
113
- var m = tok.exec(current);
131
+ const m = tok.exec(current);
114
132
  if (!m) {
115
133
  return null;
116
134
  }
@@ -123,7 +141,7 @@ module.exports = function() {
123
141
  return m.length === 1 ? m[0] : m;
124
142
  };
125
143
 
126
- parserInput.$char = function(tok) {
144
+ parserInput.$char = tok => {
127
145
  if (input.charAt(parserInput.i) !== tok) {
128
146
  return null;
129
147
  }
@@ -131,11 +149,11 @@ module.exports = function() {
131
149
  return tok;
132
150
  };
133
151
 
134
- parserInput.$str = function(tok) {
135
- var tokLength = tok.length;
152
+ parserInput.$str = tok => {
153
+ const tokLength = tok.length;
136
154
 
137
155
  // https://jsperf.com/string-startswith/21
138
- for (var i = 0; i < tokLength; i++) {
156
+ for (let i = 0; i < tokLength; i++) {
139
157
  if (input.charAt(parserInput.i + i) !== tok.charAt(i)) {
140
158
  return null;
141
159
  }
@@ -145,18 +163,18 @@ module.exports = function() {
145
163
  return tok;
146
164
  };
147
165
 
148
- parserInput.$quoted = function(loc) {
149
- var pos = loc || parserInput.i,
150
- startChar = input.charAt(pos);
166
+ parserInput.$quoted = loc => {
167
+ const pos = loc || parserInput.i;
168
+ const startChar = input.charAt(pos);
151
169
 
152
170
  if (startChar !== '\'' && startChar !== '"') {
153
171
  return;
154
172
  }
155
- var length = input.length,
156
- currentPosition = pos;
173
+ const length = input.length;
174
+ const currentPosition = pos;
157
175
 
158
- for (var i = 1; i + currentPosition < length; i++) {
159
- var nextChar = input.charAt(i + currentPosition);
176
+ for (let i = 1; i + currentPosition < length; i++) {
177
+ const nextChar = input.charAt(i + currentPosition);
160
178
  switch (nextChar) {
161
179
  case '\\':
162
180
  i++;
@@ -165,7 +183,7 @@ module.exports = function() {
165
183
  case '\n':
166
184
  break;
167
185
  case startChar:
168
- var str = input.substr(currentPosition, i + 1);
186
+ const str = input.substr(currentPosition, i + 1);
169
187
  if (!loc && loc !== 0) {
170
188
  skipWhitespace(i + 1);
171
189
  return str
@@ -181,32 +199,29 @@ module.exports = function() {
181
199
  * Permissive parsing. Ignores everything except matching {} [] () and quotes
182
200
  * until matching token (outside of blocks)
183
201
  */
184
- parserInput.$parseUntil = function(tok) {
185
- var quote = '',
186
- returnVal = null,
187
- inComment = false,
188
- blockDepth = 0,
189
- blockStack = [],
190
- parseGroups = [],
191
- length = input.length,
192
- startPos = parserInput.i,
193
- lastPos = parserInput.i,
194
- i = parserInput.i,
195
- loop = true,
196
- testChar;
202
+ parserInput.$parseUntil = tok => {
203
+ let quote = '';
204
+ let returnVal = null;
205
+ let inComment = false;
206
+ let blockDepth = 0;
207
+ const blockStack = [];
208
+ const parseGroups = [];
209
+ const length = input.length;
210
+ const startPos = parserInput.i;
211
+ let lastPos = parserInput.i;
212
+ let i = parserInput.i;
213
+ let loop = true;
214
+ let testChar;
197
215
 
198
216
  if (typeof tok === 'string') {
199
- testChar = function(char) {
200
- return char === tok;
201
- }
217
+ testChar = char => char === tok
202
218
  } else {
203
- testChar = function(char) {
204
- return tok.test(char);
205
- }
219
+ testChar = char => tok.test(char)
206
220
  }
207
221
 
208
222
  do {
209
- var prevChar, nextChar = input.charAt(i);
223
+ let prevChar;
224
+ let nextChar = input.charAt(i);
210
225
  if (blockDepth === 0 && testChar(nextChar)) {
211
226
  returnVal = input.substr(lastPos, i - lastPos);
212
227
  if (returnVal) {
@@ -272,7 +287,7 @@ module.exports = function() {
272
287
  case '}':
273
288
  case ')':
274
289
  case ']':
275
- var expected = blockStack.pop();
290
+ const expected = blockStack.pop();
276
291
  if (nextChar === expected) {
277
292
  blockDepth--;
278
293
  } else {
@@ -299,10 +314,10 @@ module.exports = function() {
299
314
 
300
315
  // Same as $(), but don't change the state of the parser,
301
316
  // just return the match.
302
- parserInput.peek = function(tok) {
317
+ parserInput.peek = tok => {
303
318
  if (typeof tok === 'string') {
304
319
  // https://jsperf.com/string-startswith/21
305
- for (var i = 0; i < tok.length; i++) {
320
+ for (let i = 0; i < tok.length; i++) {
306
321
  if (input.charAt(parserInput.i + i) !== tok.charAt(i)) {
307
322
  return false;
308
323
  }
@@ -315,29 +330,21 @@ module.exports = function() {
315
330
 
316
331
  // Specialization of peek()
317
332
  // TODO remove or change some currentChar calls to peekChar
318
- parserInput.peekChar = function(tok) {
319
- return input.charAt(parserInput.i) === tok;
320
- };
333
+ parserInput.peekChar = tok => input.charAt(parserInput.i) === tok;
321
334
 
322
- parserInput.currentChar = function() {
323
- return input.charAt(parserInput.i);
324
- };
335
+ parserInput.currentChar = () => input.charAt(parserInput.i);
325
336
 
326
- parserInput.prevChar = function() {
327
- return input.charAt(parserInput.i - 1);
328
- };
337
+ parserInput.prevChar = () => input.charAt(parserInput.i - 1);
329
338
 
330
- parserInput.getInput = function() {
331
- return input;
332
- };
339
+ parserInput.getInput = () => input;
333
340
 
334
- parserInput.peekNotNumeric = function() {
335
- var c = input.charCodeAt(parserInput.i);
341
+ parserInput.peekNotNumeric = () => {
342
+ const c = input.charCodeAt(parserInput.i);
336
343
  // Is the first char of the dimension 0-9, '.', '+' or '-'
337
344
  return (c > CHARCODE_9 || c < CHARCODE_PLUS) || c === CHARCODE_FORWARD_SLASH || c === CHARCODE_COMMA;
338
345
  };
339
346
 
340
- parserInput.start = function(str, chunkInput, failFunction) {
347
+ parserInput.start = (str, chunkInput, failFunction) => {
341
348
  input = str;
342
349
  parserInput.i = j = currentPos = furthest = 0;
343
350
 
@@ -362,16 +369,16 @@ module.exports = function() {
362
369
  skipWhitespace(0);
363
370
  };
364
371
 
365
- parserInput.end = function() {
366
- var message,
367
- isFinished = parserInput.i >= input.length;
372
+ parserInput.end = () => {
373
+ let message;
374
+ const isFinished = parserInput.i >= input.length;
368
375
 
369
376
  if (parserInput.i < furthest) {
370
377
  message = furthestPossibleErrorMessage;
371
378
  parserInput.i = furthest;
372
379
  }
373
380
  return {
374
- isFinished: isFinished,
381
+ isFinished,
375
382
  furthest: parserInput.i,
376
383
  furthestPossibleErrorMessage: message,
377
384
  furthestReachedEnd: parserInput.i >= input.length - 1,