less 2.1.1 → 2.3.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/.idea/inspectionProfiles/Project_Default.xml +1 -0
- package/.idea/jsLinters/jscs.xml +4 -0
- package/.idea/jsLinters/jshint.xml +58 -4
- package/.idea/workspace.xml +451 -758
- package/.jscsrc +38 -0
- package/.jshintrc +0 -2
- package/.travis.yml +0 -1
- package/CHANGELOG.md +52 -0
- package/Gruntfile.js +37 -3
- package/bin/lessc +380 -316
- package/bower.json +1 -1
- package/dist/less.js +790 -479
- package/dist/less.min.js +7 -7
- package/lib/less/contexts.js +1 -1
- package/lib/less/data/unit-conversions.js +3 -3
- package/lib/less/environment/abstract-file-manager.js +4 -4
- package/lib/less/environment/environment.js +9 -0
- package/lib/less/functions/color-blending.js +3 -3
- package/lib/less/functions/color.js +8 -8
- package/lib/less/functions/data-uri.js +39 -31
- package/lib/less/functions/string.js +3 -1
- package/lib/less/functions/svg.js +12 -15
- package/lib/less/functions/types.js +15 -2
- package/lib/less/import-manager.js +10 -5
- package/lib/less/index.js +2 -1
- package/lib/less/parse-tree.js +8 -2
- package/lib/less/parse.js +65 -0
- package/lib/less/parser/parser-input.js +3 -2
- package/lib/less/parser/parser.js +24 -11
- package/lib/less/render.js +7 -36
- package/lib/less/source-map-output.js +3 -3
- package/lib/less/transform-tree.js +1 -1
- package/lib/less/tree/assignment.js +0 -1
- package/lib/less/tree/color.js +4 -4
- package/lib/less/tree/condition.js +1 -1
- package/lib/less/tree/debug-info.js +6 -2
- package/lib/less/tree/dimension.js +1 -1
- package/lib/less/tree/directive.js +25 -6
- package/lib/less/tree/expression.js +1 -1
- package/lib/less/tree/import.js +2 -2
- package/lib/less/tree/index.js +1 -0
- package/lib/less/tree/media.js +3 -2
- package/lib/less/tree/mixin-call.js +3 -4
- package/lib/less/tree/mixin-definition.js +4 -3
- package/lib/less/tree/quoted.js +1 -1
- package/lib/less/tree/rule.js +2 -3
- package/lib/less/tree/ruleset.js +263 -157
- package/lib/less/tree/selector.js +2 -1
- package/lib/less/tree/url.js +5 -2
- package/lib/less/tree/value.js +1 -1
- package/lib/less/tree/variable.js +1 -1
- package/lib/less/visitors/extend-visitor.js +60 -25
- package/lib/less/visitors/import-sequencer.js +20 -14
- package/lib/less/visitors/import-visitor.js +13 -10
- package/lib/less/visitors/to-css-visitor.js +37 -5
- package/lib/less-browser/add-default-options.js +5 -1
- package/lib/less-browser/bootstrap.js +10 -8
- package/lib/less-browser/cache.js +1 -1
- package/lib/less-browser/index.js +13 -12
- package/lib/less-browser/utils.js +9 -6
- package/lib/less-node/file-manager.js +51 -28
- package/lib/less-node/image-size.js +34 -0
- package/lib/less-node/index.js +3 -0
- package/lib/less-node/lessc-helper.js +3 -2
- package/lib/less-node/url-file-manager.js +2 -2
- package/lib/less-rhino/index.js +2 -4
- package/package.json +10 -7
- package/test/browser/common.js +13 -11
- package/test/browser/css/urls.css +6 -3
- package/test/browser/jasmine-jsreporter.js +2 -3
- package/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +5 -0
- package/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +15 -0
- package/test/browser/less/urls.less +1 -0
- package/test/browser/less.js +15 -9424
- package/test/browser/runner-errors-options.js +0 -1
- package/test/browser/runner-errors-spec.js +0 -1
- package/test/browser/runner-legacy-options.js +0 -1
- package/test/browser/runner-no-js-errors-spec.js +0 -1
- package/test/browser/runner-production-options.js +0 -1
- package/test/browser/runner-relative-urls-options.js +0 -1
- package/test/browser/runner-rootpath-options.js +0 -1
- package/test/browser/runner-rootpath-relative-options.js +0 -1
- package/test/browser/runner-strict-units-options.js +0 -1
- package/test/copy-bom.js +72 -0
- package/test/css/comments.css +1 -0
- package/test/css/css-3.css +2 -0
- package/test/css/functions.css +2 -0
- package/test/css/import-interpolation.css +6 -0
- package/test/css/import-reference.css +25 -0
- package/test/css/include-path/include-path.css +6 -0
- package/test/css/mixins-important.css +6 -0
- package/test/css/selectors.css +10 -1
- package/test/css/url-args/urls.css +3 -3
- package/test/css/urls.css +12 -4
- package/test/css/variables.css +7 -1
- package/test/data/image.svg +3 -0
- package/test/index.js +14 -10
- package/test/less/comments.less +1 -0
- package/test/less/css-3.less +3 -0
- package/test/less/css-guards.less +2 -1
- package/test/less/errors/detached-ruleset-2.txt +1 -1
- package/test/less/errors/import-missing.txt +1 -1
- package/test/less/errors/parens-error-1.txt +1 -1
- package/test/less/errors/parens-error-2.txt +1 -1
- package/test/less/errors/parens-error-3.txt +1 -1
- package/test/less/errors/single-character.less +1 -0
- package/test/less/errors/single-character.txt +2 -0
- package/test/less/functions.less +5 -0
- package/test/less/import/import-interpolation.less +1 -0
- package/test/less/import/import-reference.less +38 -0
- package/test/less/import-reference.less +3 -1
- package/test/less/import.less +2 -0
- package/test/less/include-path/include-path.less +6 -0
- package/test/less/mixins-important.less +12 -0
- package/test/less/nested-gradient-with-svg-gradient/mixin-consumer.less +5 -0
- package/test/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +15 -0
- package/test/less/selectors.less +19 -4
- package/test/less/urls.less +10 -1
- package/test/less/variables.less +17 -3
- package/test/less-bom/charsets.less +3 -0
- package/test/less-bom/colors.less +98 -0
- package/test/less-bom/comments.less +102 -0
- package/test/less-bom/comments2.less +20 -0
- package/test/less-bom/compression/compression.less +36 -0
- package/test/less-bom/css-3.less +154 -0
- package/test/less-bom/css-escapes.less +33 -0
- package/test/less-bom/css-guards.less +103 -0
- package/test/less-bom/css.less +108 -0
- package/test/less-bom/debug/import/test.less +25 -0
- package/test/less-bom/debug/linenumbers.less +33 -0
- package/test/less-bom/detached-rulesets.less +103 -0
- package/test/less-bom/empty.less +1 -0
- package/test/less-bom/errors/add-mixed-units.less +3 -0
- package/test/less-bom/errors/add-mixed-units.txt +4 -0
- package/test/less-bom/errors/add-mixed-units2.less +3 -0
- package/test/less-bom/errors/add-mixed-units2.txt +4 -0
- package/test/less-bom/errors/at-rules-undefined-var.less +4 -0
- package/test/less-bom/errors/at-rules-undefined-var.txt +4 -0
- package/test/less-bom/errors/bad-variable-declaration1.less +1 -0
- package/test/less-bom/errors/bad-variable-declaration1.txt +2 -0
- package/test/less-bom/errors/color-func-invalid-color.less +3 -0
- package/test/less-bom/errors/color-func-invalid-color.txt +4 -0
- package/test/less-bom/errors/color-invalid-hex-code.less +3 -0
- package/test/less-bom/errors/color-invalid-hex-code.txt +4 -0
- package/test/less-bom/errors/color-invalid-hex-code2.less +3 -0
- package/test/less-bom/errors/color-invalid-hex-code2.txt +4 -0
- package/test/less-bom/errors/css-guard-default-func.less +4 -0
- package/test/less-bom/errors/css-guard-default-func.txt +4 -0
- package/test/less-bom/errors/detached-ruleset-1.less +6 -0
- package/test/less-bom/errors/detached-ruleset-1.txt +4 -0
- package/test/less-bom/errors/detached-ruleset-2.less +6 -0
- package/test/less-bom/errors/detached-ruleset-2.txt +4 -0
- package/test/less-bom/errors/detached-ruleset-3.less +4 -0
- package/test/less-bom/errors/detached-ruleset-3.txt +4 -0
- package/test/less-bom/errors/detached-ruleset-4.less +5 -0
- package/test/less-bom/errors/detached-ruleset-4.txt +4 -0
- package/test/less-bom/errors/detached-ruleset-5.less +4 -0
- package/test/less-bom/errors/detached-ruleset-5.txt +3 -0
- package/test/less-bom/errors/detached-ruleset-6.less +5 -0
- package/test/less-bom/errors/detached-ruleset-6.txt +4 -0
- package/test/less-bom/errors/divide-mixed-units.less +3 -0
- package/test/less-bom/errors/divide-mixed-units.txt +4 -0
- package/test/less-bom/errors/extend-no-selector.less +3 -0
- package/test/less-bom/errors/extend-no-selector.txt +3 -0
- package/test/less-bom/errors/extend-not-at-end.less +3 -0
- package/test/less-bom/errors/extend-not-at-end.txt +3 -0
- package/test/less-bom/errors/import-malformed.less +1 -0
- package/test/less-bom/errors/import-malformed.txt +3 -0
- package/test/less-bom/errors/import-missing.less +6 -0
- package/test/less-bom/errors/import-missing.txt +3 -0
- package/test/less-bom/errors/import-no-semi.less +1 -0
- package/test/less-bom/errors/import-no-semi.txt +2 -0
- package/test/less-bom/errors/import-subfolder1.less +1 -0
- package/test/less-bom/errors/import-subfolder1.txt +3 -0
- package/test/less-bom/errors/import-subfolder2.less +1 -0
- package/test/less-bom/errors/import-subfolder2.txt +4 -0
- package/test/less-bom/errors/imports/import-subfolder1.less +1 -0
- package/test/less-bom/errors/imports/import-subfolder2.less +1 -0
- package/test/less-bom/errors/imports/import-test.less +4 -0
- package/test/less-bom/errors/imports/subfolder/mixin-not-defined.less +1 -0
- package/test/less-bom/errors/imports/subfolder/parse-error-curly-bracket.less +1 -0
- package/test/less-bom/errors/javascript-error.less +3 -0
- package/test/less-bom/errors/javascript-error.txt +4 -0
- package/test/less-bom/errors/javascript-undefined-var.less +3 -0
- package/test/less-bom/errors/javascript-undefined-var.txt +4 -0
- package/test/less-bom/errors/mixed-mixin-definition-args-1.less +6 -0
- package/test/less-bom/errors/mixed-mixin-definition-args-1.txt +4 -0
- package/test/less-bom/errors/mixed-mixin-definition-args-2.less +6 -0
- package/test/less-bom/errors/mixed-mixin-definition-args-2.txt +4 -0
- package/test/less-bom/errors/mixin-not-defined.less +11 -0
- package/test/less-bom/errors/mixin-not-defined.txt +3 -0
- package/test/less-bom/errors/mixin-not-matched.less +6 -0
- package/test/less-bom/errors/mixin-not-matched.txt +3 -0
- package/test/less-bom/errors/mixin-not-matched2.less +6 -0
- package/test/less-bom/errors/mixin-not-matched2.txt +3 -0
- package/test/less-bom/errors/mixin-not-visible-in-scope-1.less +9 -0
- package/test/less-bom/errors/mixin-not-visible-in-scope-1.txt +4 -0
- package/test/less-bom/errors/mixins-guards-default-func-1.less +9 -0
- package/test/less-bom/errors/mixins-guards-default-func-1.txt +4 -0
- package/test/less-bom/errors/mixins-guards-default-func-2.less +9 -0
- package/test/less-bom/errors/mixins-guards-default-func-2.txt +4 -0
- package/test/less-bom/errors/mixins-guards-default-func-3.less +9 -0
- package/test/less-bom/errors/mixins-guards-default-func-3.txt +4 -0
- package/test/less-bom/errors/multiple-guards-on-css-selectors.less +4 -0
- package/test/less-bom/errors/multiple-guards-on-css-selectors.txt +4 -0
- package/test/less-bom/errors/multiple-guards-on-css-selectors2.less +4 -0
- package/test/less-bom/errors/multiple-guards-on-css-selectors2.txt +4 -0
- package/test/less-bom/errors/multiply-mixed-units.less +7 -0
- package/test/less-bom/errors/multiply-mixed-units.txt +4 -0
- package/test/less-bom/errors/parens-error-1.less +3 -0
- package/test/less-bom/errors/parens-error-1.txt +4 -0
- package/test/less-bom/errors/parens-error-2.less +3 -0
- package/test/less-bom/errors/parens-error-2.txt +4 -0
- package/test/less-bom/errors/parens-error-3.less +3 -0
- package/test/less-bom/errors/parens-error-3.txt +4 -0
- package/test/less-bom/errors/parse-error-curly-bracket.less +4 -0
- package/test/less-bom/errors/parse-error-curly-bracket.txt +4 -0
- package/test/less-bom/errors/parse-error-extra-parens.less +5 -0
- package/test/less-bom/errors/parse-error-extra-parens.txt +3 -0
- package/test/less-bom/errors/parse-error-missing-bracket.less +2 -0
- package/test/less-bom/errors/parse-error-missing-bracket.txt +3 -0
- package/test/less-bom/errors/parse-error-missing-parens.less +5 -0
- package/test/less-bom/errors/parse-error-missing-parens.txt +3 -0
- package/test/less-bom/errors/parse-error-with-import.less +13 -0
- package/test/less-bom/errors/parse-error-with-import.txt +4 -0
- package/test/less-bom/errors/percentage-missing-space.less +3 -0
- package/test/less-bom/errors/percentage-missing-space.txt +4 -0
- package/test/less-bom/errors/property-asterisk-only-name.less +3 -0
- package/test/less-bom/errors/property-asterisk-only-name.txt +4 -0
- package/test/less-bom/errors/property-ie5-hack.less +3 -0
- package/test/less-bom/errors/property-ie5-hack.txt +3 -0
- package/test/less-bom/errors/property-in-root.less +4 -0
- package/test/less-bom/errors/property-in-root.txt +4 -0
- package/test/less-bom/errors/property-in-root2.less +1 -0
- package/test/less-bom/errors/property-in-root2.txt +4 -0
- package/test/less-bom/errors/property-in-root3.less +4 -0
- package/test/less-bom/errors/property-in-root3.txt +3 -0
- package/test/less-bom/errors/property-interp-not-defined.less +1 -0
- package/test/less-bom/errors/property-interp-not-defined.txt +2 -0
- package/test/less-bom/errors/recursive-variable.less +1 -0
- package/test/less-bom/errors/recursive-variable.txt +2 -0
- package/test/less-bom/errors/single-character.less +1 -0
- package/test/less-bom/errors/single-character.txt +2 -0
- package/test/less-bom/errors/svg-gradient1.less +3 -0
- package/test/less-bom/errors/svg-gradient1.txt +4 -0
- package/test/less-bom/errors/svg-gradient2.less +3 -0
- package/test/less-bom/errors/svg-gradient2.txt +4 -0
- package/test/less-bom/errors/svg-gradient3.less +3 -0
- package/test/less-bom/errors/svg-gradient3.txt +4 -0
- package/test/less-bom/errors/unit-function.less +3 -0
- package/test/less-bom/errors/unit-function.txt +4 -0
- package/test/less-bom/extend-chaining.less +91 -0
- package/test/less-bom/extend-clearfix.less +19 -0
- package/test/less-bom/extend-exact.less +46 -0
- package/test/less-bom/extend-media.less +24 -0
- package/test/less-bom/extend-nest.less +65 -0
- package/test/less-bom/extend-selector.less +99 -0
- package/test/less-bom/extend.less +81 -0
- package/test/less-bom/extract-and-length.less +133 -0
- package/test/less-bom/functions.less +201 -0
- package/test/less-bom/globalVars/extended.json +5 -0
- package/test/less-bom/globalVars/extended.less +10 -0
- package/test/less-bom/globalVars/simple.json +3 -0
- package/test/less-bom/globalVars/simple.less +3 -0
- package/test/less-bom/ie-filters.less +15 -0
- package/test/less-bom/import/deeper/deeper-2/url-import-2.less +3 -0
- package/test/less-bom/import/deeper/deeper-2/url-import.less +1 -0
- package/test/less-bom/import/deeper/import-once-test-a.less +1 -0
- package/test/less-bom/import/deeper/url-import.less +1 -0
- package/test/less-bom/import/import-and-relative-paths-test.less +17 -0
- package/test/less-bom/import/import-charset-test.less +1 -0
- package/test/less-bom/import/import-interpolation.less +2 -0
- package/test/less-bom/import/import-interpolation2.less +5 -0
- package/test/less-bom/import/import-once-test-c.less +6 -0
- package/test/less-bom/import/import-reference.less +89 -0
- package/test/less-bom/import/import-test-a.less +4 -0
- package/test/less-bom/import/import-test-b.less +8 -0
- package/test/less-bom/import/import-test-c.less +6 -0
- package/test/less-bom/import/import-test-d.css +1 -0
- package/test/less-bom/import/import-test-e.less +2 -0
- package/test/less-bom/import/import-test-f.less +5 -0
- package/test/less-bom/import/imports/font.less +8 -0
- package/test/less-bom/import/imports/logo.less +5 -0
- package/test/less-bom/import/interpolation-vars.less +6 -0
- package/test/less-bom/import/invalid-css.less +1 -0
- package/test/less-bom/import/urls.less +1 -0
- package/test/less-bom/import-inline.less +3 -0
- package/test/less-bom/import-interpolation.less +8 -0
- package/test/less-bom/import-once.less +6 -0
- package/test/less-bom/import-reference.less +23 -0
- package/test/less-bom/import.less +30 -0
- package/test/less-bom/include-path/include-path.less +6 -0
- package/test/less-bom/javascript.less +38 -0
- package/test/less-bom/lazy-eval.less +6 -0
- package/test/less-bom/legacy/legacy.less +7 -0
- package/test/less-bom/media.less +234 -0
- package/test/less-bom/merge.less +78 -0
- package/test/less-bom/mixins-args.less +215 -0
- package/test/less-bom/mixins-closure.less +26 -0
- package/test/less-bom/mixins-guards-default-func.less +195 -0
- package/test/less-bom/mixins-guards.less +271 -0
- package/test/less-bom/mixins-important.less +37 -0
- package/test/less-bom/mixins-interpolated.less +75 -0
- package/test/less-bom/mixins-named-args.less +36 -0
- package/test/less-bom/mixins-nested.less +22 -0
- package/test/less-bom/mixins-pattern.less +102 -0
- package/test/less-bom/mixins.less +145 -0
- package/test/less-bom/modifyVars/extended.json +5 -0
- package/test/less-bom/modifyVars/extended.less +11 -0
- package/test/less-bom/nested-gradient-with-svg-gradient/mixin-consumer.less +5 -0
- package/test/less-bom/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +15 -0
- package/test/less-bom/no-js-errors/no-js-errors.less +3 -0
- package/test/less-bom/no-js-errors/no-js-errors.txt +4 -0
- package/test/less-bom/no-output.less +2 -0
- package/test/less-bom/operations.less +62 -0
- package/test/less-bom/parens.less +45 -0
- package/test/less-bom/property-name-interp.less +56 -0
- package/test/less-bom/rulesets.less +30 -0
- package/test/less-bom/scope.less +104 -0
- package/test/less-bom/selectors.less +174 -0
- package/test/less-bom/sourcemaps/basic.json +3 -0
- package/test/less-bom/sourcemaps/basic.less +27 -0
- package/test/less-bom/sourcemaps/imported.css +7 -0
- package/test/less-bom/static-urls/urls.less +33 -0
- package/test/less-bom/strict-units/strict-units.less +4 -0
- package/test/less-bom/strings.less +73 -0
- package/test/less-bom/url-args/urls.less +63 -0
- package/test/less-bom/urls.less +94 -0
- package/test/less-bom/variables-in-at-rules.less +20 -0
- package/test/less-bom/variables.less +119 -0
- package/test/less-bom/whitespace.less +44 -0
- package/test/less-test.js +127 -28
- package/test/modify-vars.js +6 -4
package/lib/less/render.js
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
var PromiseConstructor = typeof Promise === 'undefined' ? require('promise') : Promise
|
|
2
|
-
contexts = require("./contexts"),
|
|
3
|
-
Parser = require('./parser/parser'),
|
|
4
|
-
PluginManager = require('./plugin-manager');
|
|
1
|
+
var PromiseConstructor = typeof Promise === 'undefined' ? require('promise') : Promise;
|
|
5
2
|
|
|
6
3
|
module.exports = function(environment, ParseTree, ImportManager) {
|
|
7
4
|
var render = function (input, options, callback) {
|
|
8
|
-
options = options || {};
|
|
9
|
-
|
|
10
5
|
if (typeof(options) === 'function') {
|
|
11
6
|
callback = options;
|
|
12
7
|
options = {};
|
|
@@ -24,44 +19,20 @@ module.exports = function(environment, ParseTree, ImportManager) {
|
|
|
24
19
|
});
|
|
25
20
|
});
|
|
26
21
|
} else {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
pluginManager = new PluginManager(this);
|
|
30
|
-
|
|
31
|
-
pluginManager.addPlugins(options.plugins);
|
|
32
|
-
options.pluginManager = pluginManager;
|
|
33
|
-
|
|
34
|
-
context = new contexts.Parse(options);
|
|
35
|
-
|
|
36
|
-
if (options.rootFileInfo) {
|
|
37
|
-
rootFileInfo = options.rootFileInfo;
|
|
38
|
-
} else {
|
|
39
|
-
var filename = options.filename || "input";
|
|
40
|
-
var entryPath = filename.replace(/[^\/\\]*$/, "");
|
|
41
|
-
rootFileInfo = {
|
|
42
|
-
filename: filename,
|
|
43
|
-
relativeUrls: context.relativeUrls,
|
|
44
|
-
rootpath: context.rootpath || "",
|
|
45
|
-
currentDirectory: entryPath,
|
|
46
|
-
entryPath: entryPath,
|
|
47
|
-
rootFilename: filename
|
|
48
|
-
};
|
|
49
|
-
}
|
|
22
|
+
this.parse(input, options, function(err, root, imports, options) {
|
|
23
|
+
if (err) { return callback(err); }
|
|
50
24
|
|
|
51
|
-
var imports = new ImportManager(context, rootFileInfo);
|
|
52
|
-
|
|
53
|
-
new Parser(context, imports, rootFileInfo)
|
|
54
|
-
.parse(input, function (e, root) {
|
|
55
|
-
if (e) { return callback(e); }
|
|
56
25
|
var result;
|
|
57
26
|
try {
|
|
58
27
|
var parseTree = new ParseTree(root, imports);
|
|
59
28
|
result = parseTree.toCSS(options);
|
|
60
29
|
}
|
|
61
|
-
catch (err) { return callback(
|
|
30
|
+
catch (err) { return callback(err); }
|
|
31
|
+
|
|
62
32
|
callback(null, result);
|
|
63
|
-
}
|
|
33
|
+
});
|
|
64
34
|
}
|
|
65
35
|
};
|
|
36
|
+
|
|
66
37
|
return render;
|
|
67
38
|
};
|
|
@@ -15,7 +15,7 @@ module.exports = function (environment) {
|
|
|
15
15
|
}
|
|
16
16
|
if (options.sourceMapRootpath) {
|
|
17
17
|
this._sourceMapRootpath = options.sourceMapRootpath.replace(/\\/g, '/');
|
|
18
|
-
if (this._sourceMapRootpath.charAt(this._sourceMapRootpath.length-1) !== '/') {
|
|
18
|
+
if (this._sourceMapRootpath.charAt(this._sourceMapRootpath.length - 1) !== '/') {
|
|
19
19
|
this._sourceMapRootpath += '/';
|
|
20
20
|
}
|
|
21
21
|
} else {
|
|
@@ -66,11 +66,11 @@ module.exports = function (environment) {
|
|
|
66
66
|
}
|
|
67
67
|
inputSource = inputSource.substring(0, index);
|
|
68
68
|
sourceLines = inputSource.split("\n");
|
|
69
|
-
sourceColumns = sourceLines[sourceLines.length-1];
|
|
69
|
+
sourceColumns = sourceLines[sourceLines.length - 1];
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
lines = chunk.split("\n");
|
|
73
|
-
columns = lines[lines.length-1];
|
|
73
|
+
columns = lines[lines.length - 1];
|
|
74
74
|
|
|
75
75
|
if (fileInfo) {
|
|
76
76
|
if (!mapLines) {
|
|
@@ -45,7 +45,7 @@ module.exports = function(root, options) {
|
|
|
45
45
|
|
|
46
46
|
if (options.pluginManager) {
|
|
47
47
|
var pluginVisitors = options.pluginManager.getVisitors();
|
|
48
|
-
for(i =0; i < pluginVisitors.length; i++) {
|
|
48
|
+
for(i = 0; i < pluginVisitors.length; i++) {
|
|
49
49
|
var pluginVisitor = pluginVisitors[i];
|
|
50
50
|
if (pluginVisitor.isPreEvalVisitor) {
|
|
51
51
|
preEvalVisitors.push(pluginVisitor);
|
package/lib/less/tree/color.js
CHANGED
|
@@ -56,11 +56,11 @@ Color.prototype.genCSS = function (context, output) {
|
|
|
56
56
|
Color.prototype.toCSS = function (context, doNotCompress) {
|
|
57
57
|
var compress = context && context.compress && !doNotCompress, color, alpha;
|
|
58
58
|
|
|
59
|
-
// `
|
|
59
|
+
// `value` is set if this color was originally
|
|
60
60
|
// converted from a named color string so we need
|
|
61
61
|
// to respect this and try to output named color too.
|
|
62
|
-
if (this.
|
|
63
|
-
return this.
|
|
62
|
+
if (this.value) {
|
|
63
|
+
return this.value;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
// If we have some transparency, the only way to represent it
|
|
@@ -179,7 +179,7 @@ Color.fromKeyword = function(keyword) {
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
if (c) {
|
|
182
|
-
c.
|
|
182
|
+
c.value = keyword;
|
|
183
183
|
return c;
|
|
184
184
|
}
|
|
185
185
|
};
|
|
@@ -26,7 +26,7 @@ Condition.prototype.eval = function (context) {
|
|
|
26
26
|
default: return false;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
})
|
|
29
|
+
})(this.op, this.lvalue.eval(context), this.rvalue.eval(context));
|
|
30
30
|
|
|
31
31
|
return this.negate ? !result : result;
|
|
32
32
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var debugInfo = function(context, ctx, lineSeparator) {
|
|
2
|
-
var result="";
|
|
2
|
+
var result = "";
|
|
3
3
|
if (context.dumpLineNumbers && !context.compress) {
|
|
4
4
|
switch(context.dumpLineNumbers) {
|
|
5
5
|
case 'comments':
|
|
@@ -21,8 +21,12 @@ debugInfo.asComment = function(ctx) {
|
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
debugInfo.asMediaQuery = function(ctx) {
|
|
24
|
+
var filenameWithProtocol = ctx.debugInfo.fileName;
|
|
25
|
+
if (!/^[a-z]+:\/\//i.test(filenameWithProtocol)) {
|
|
26
|
+
filenameWithProtocol = 'file://' + filenameWithProtocol;
|
|
27
|
+
}
|
|
24
28
|
return '@media -sass-debug-info{filename{font-family:' +
|
|
25
|
-
|
|
29
|
+
filenameWithProtocol.replace(/([.:\/\\])/g, function (a) {
|
|
26
30
|
if (a == '\\') {
|
|
27
31
|
a = '\/';
|
|
28
32
|
}
|
|
@@ -25,7 +25,7 @@ Dimension.prototype.toColor = function () {
|
|
|
25
25
|
};
|
|
26
26
|
Dimension.prototype.genCSS = function (context, output) {
|
|
27
27
|
if ((context && context.strictUnits) && !this.unit.isSingular()) {
|
|
28
|
-
throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: "+this.unit.toString());
|
|
28
|
+
throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: " + this.unit.toString());
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
var value = this.fround(context, this.value),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var Node = require("./node"),
|
|
2
2
|
Ruleset = require("./ruleset");
|
|
3
3
|
|
|
4
|
-
var Directive = function (name, value, rules, index, currentFileInfo, debugInfo) {
|
|
4
|
+
var Directive = function (name, value, rules, index, currentFileInfo, debugInfo, isReferenced) {
|
|
5
5
|
this.name = name;
|
|
6
6
|
this.value = value;
|
|
7
7
|
if (rules) {
|
|
@@ -11,6 +11,7 @@ var Directive = function (name, value, rules, index, currentFileInfo, debugInfo)
|
|
|
11
11
|
this.index = index;
|
|
12
12
|
this.currentFileInfo = currentFileInfo;
|
|
13
13
|
this.debugInfo = debugInfo;
|
|
14
|
+
this.isReferenced = isReferenced;
|
|
14
15
|
};
|
|
15
16
|
|
|
16
17
|
Directive.prototype = new Node();
|
|
@@ -38,7 +39,10 @@ Directive.prototype.genCSS = function (context, output) {
|
|
|
38
39
|
value.genCSS(context, output);
|
|
39
40
|
}
|
|
40
41
|
if (rules) {
|
|
41
|
-
|
|
42
|
+
if (rules.type === "Ruleset") {
|
|
43
|
+
rules = [rules];
|
|
44
|
+
}
|
|
45
|
+
this.outputRuleset(context, output, rules);
|
|
42
46
|
} else {
|
|
43
47
|
output.add(';');
|
|
44
48
|
}
|
|
@@ -53,11 +57,23 @@ Directive.prototype.eval = function (context) {
|
|
|
53
57
|
rules.root = true;
|
|
54
58
|
}
|
|
55
59
|
return new Directive(this.name, value, rules,
|
|
56
|
-
this.index, this.currentFileInfo, this.debugInfo);
|
|
60
|
+
this.index, this.currentFileInfo, this.debugInfo, this.isReferenced);
|
|
61
|
+
};
|
|
62
|
+
Directive.prototype.variable = function (name) {
|
|
63
|
+
if (this.rules) {
|
|
64
|
+
return Ruleset.prototype.variable.call(this.rules, name);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
Directive.prototype.find = function () {
|
|
68
|
+
if (this.rules) {
|
|
69
|
+
return Ruleset.prototype.find.apply(this.rules, arguments);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
Directive.prototype.rulesets = function () {
|
|
73
|
+
if (this.rules) {
|
|
74
|
+
return Ruleset.prototype.rulesets.apply(this.rules);
|
|
75
|
+
}
|
|
57
76
|
};
|
|
58
|
-
Directive.prototype.variable = function (name) { if (this.rules) return Ruleset.prototype.variable.call(this.rules, name); };
|
|
59
|
-
Directive.prototype.find = function () { if (this.rules) return Ruleset.prototype.find.apply(this.rules, arguments); };
|
|
60
|
-
Directive.prototype.rulesets = function () { if (this.rules) return Ruleset.prototype.rulesets.apply(this.rules); };
|
|
61
77
|
Directive.prototype.markReferenced = function () {
|
|
62
78
|
var i, rules;
|
|
63
79
|
this.isReferenced = true;
|
|
@@ -70,6 +86,9 @@ Directive.prototype.markReferenced = function () {
|
|
|
70
86
|
}
|
|
71
87
|
}
|
|
72
88
|
};
|
|
89
|
+
Directive.prototype.getIsReferenced = function () {
|
|
90
|
+
return !this.currentFileInfo || !this.currentFileInfo.reference || this.isReferenced;
|
|
91
|
+
};
|
|
73
92
|
Directive.prototype.outputRuleset = function (context, output, rules) {
|
|
74
93
|
var ruleCnt = rules.length, i;
|
|
75
94
|
context.tabLevel = (context.tabLevel | 0) + 1;
|
|
@@ -5,7 +5,7 @@ var Node = require("./node"),
|
|
|
5
5
|
var Expression = function (value) {
|
|
6
6
|
this.value = value;
|
|
7
7
|
if (!value) {
|
|
8
|
-
throw new Error("Expression requires
|
|
8
|
+
throw new Error("Expression requires an array parameter");
|
|
9
9
|
}
|
|
10
10
|
};
|
|
11
11
|
Expression.prototype = new Node();
|
package/lib/less/tree/import.js
CHANGED
|
@@ -28,7 +28,7 @@ var Import = function (path, features, options, index, currentFileInfo) {
|
|
|
28
28
|
this.css = !this.options.less || this.options.inline;
|
|
29
29
|
} else {
|
|
30
30
|
var pathValue = this.getPath();
|
|
31
|
-
if (pathValue && /css([\?;].*)?$/.test(pathValue)) {
|
|
31
|
+
if (pathValue && /[#\.\&\?\/]css([\?;].*)?$/.test(pathValue)) {
|
|
32
32
|
this.css = true;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -100,7 +100,7 @@ Import.prototype.evalPath = function (context) {
|
|
|
100
100
|
var pathValue = path.value;
|
|
101
101
|
// Add the base path if the import is relative
|
|
102
102
|
if (pathValue && context.isPathRelative(pathValue)) {
|
|
103
|
-
path.value = rootpath +pathValue;
|
|
103
|
+
path.value = rootpath + pathValue;
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
path.value = context.normalizePath(path.value);
|
package/lib/less/tree/index.js
CHANGED
package/lib/less/tree/media.js
CHANGED
|
@@ -154,8 +154,9 @@ Media.prototype.permute = function (arr) {
|
|
|
154
154
|
}
|
|
155
155
|
};
|
|
156
156
|
Media.prototype.bubbleSelectors = function (selectors) {
|
|
157
|
-
if (!selectors)
|
|
158
|
-
|
|
157
|
+
if (!selectors) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
159
160
|
this.rules = [new Ruleset(selectors.slice(0), [this.rules[0]])];
|
|
160
161
|
};
|
|
161
162
|
module.exports = Media;
|
|
@@ -22,7 +22,7 @@ MixinCall.prototype.accept = function (visitor) {
|
|
|
22
22
|
};
|
|
23
23
|
MixinCall.prototype.eval = function (context) {
|
|
24
24
|
var mixins, mixin, mixinPath, args, rules = [], match = false, i, m, f, isRecursive, isOneFound, rule,
|
|
25
|
-
candidates = [], candidate, conditionResult = [], defaultResult, defFalseEitherCase
|
|
25
|
+
candidates = [], candidate, conditionResult = [], defaultResult, defFalseEitherCase = -1,
|
|
26
26
|
defNone = 0, defTrue = 1, defFalse = 2, count, originalRuleset, noArgumentsFilter;
|
|
27
27
|
|
|
28
28
|
function calcDefGroup(mixin, mixinPath) {
|
|
@@ -84,7 +84,7 @@ MixinCall.prototype.eval = function (context) {
|
|
|
84
84
|
if (mixin.matchArgs(args, context)) {
|
|
85
85
|
candidate = {mixin: mixin, group: calcDefGroup(mixin, mixinPath)};
|
|
86
86
|
|
|
87
|
-
if (candidate.group!==defFalseEitherCase) {
|
|
87
|
+
if (candidate.group !== defFalseEitherCase) {
|
|
88
88
|
candidates.push(candidate);
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -105,8 +105,7 @@ MixinCall.prototype.eval = function (context) {
|
|
|
105
105
|
defaultResult = defTrue;
|
|
106
106
|
if ((count[defTrue] + count[defFalse]) > 1) {
|
|
107
107
|
throw { type: 'Runtime',
|
|
108
|
-
message: 'Ambiguous use of `default()` found when matching for `'
|
|
109
|
-
+ this.format(args) + '`',
|
|
108
|
+
message: 'Ambiguous use of `default()` found when matching for `' + this.format(args) + '`',
|
|
110
109
|
index: this.index, filename: this.currentFileInfo.filename };
|
|
111
110
|
}
|
|
112
111
|
}
|
|
@@ -132,9 +132,10 @@ Definition.prototype.evalCall = function (context, args, important) {
|
|
|
132
132
|
Definition.prototype.matchCondition = function (args, context) {
|
|
133
133
|
if (this.condition && !this.condition.eval(
|
|
134
134
|
new contexts.Eval(context,
|
|
135
|
-
[this.evalParams(context,
|
|
136
|
-
.
|
|
137
|
-
|
|
135
|
+
[this.evalParams(context, /* the parameter variables*/
|
|
136
|
+
new contexts.Eval(context, this.frames ? this.frames.concat(context.frames) : context.frames), args, [])]
|
|
137
|
+
.concat(this.frames) // the parent namespace/mixin frames
|
|
138
|
+
.concat(context.frames)))) { // the current environment frames
|
|
138
139
|
return false;
|
|
139
140
|
}
|
|
140
141
|
return true;
|
package/lib/less/tree/quoted.js
CHANGED
|
@@ -37,7 +37,7 @@ Quoted.prototype.eval = function (context) {
|
|
|
37
37
|
do {
|
|
38
38
|
value = evaluatedValue;
|
|
39
39
|
evaluatedValue = value.replace(regexp, replacementFnc);
|
|
40
|
-
} while (value!==evaluatedValue);
|
|
40
|
+
} while (value !== evaluatedValue);
|
|
41
41
|
return evaluatedValue;
|
|
42
42
|
}
|
|
43
43
|
value = iterativeReplace(value, /`([^`]+)`/g, javascriptReplacement);
|
package/lib/less/tree/rule.js
CHANGED
|
@@ -42,9 +42,8 @@ Rule.prototype.eval = function (context) {
|
|
|
42
42
|
if (typeof name !== "string") {
|
|
43
43
|
// expand 'primitive' name directly to get
|
|
44
44
|
// things faster (~10% for benchmark.less):
|
|
45
|
-
name = (name.length === 1)
|
|
46
|
-
|
|
47
|
-
? name[0].value : evalName(context, name);
|
|
45
|
+
name = (name.length === 1) && (name[0] instanceof Keyword) ?
|
|
46
|
+
name[0].value : evalName(context, name);
|
|
48
47
|
variable = false; // never treat expanded interpolation as new variable name
|
|
49
48
|
}
|
|
50
49
|
if (name === "font" && !context.strictMath) {
|