summaryrefslogtreecommitdiff
path: root/bin/lib/less/tree/directive.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/lib/less/tree/directive.js')
-rw-r--r--bin/lib/less/tree/directive.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/bin/lib/less/tree/directive.js b/bin/lib/less/tree/directive.js
new file mode 100644
index 00000000..27538332
--- /dev/null
+++ b/bin/lib/less/tree/directive.js
@@ -0,0 +1,35 @@
+(function (tree) {
+
+tree.Directive = function (name, value, features) {
+ this.name = name;
+
+ if (Array.isArray(value)) {
+ this.ruleset = new(tree.Ruleset)([], value);
+ this.ruleset.allowImports = true;
+ } else {
+ this.value = value;
+ }
+};
+tree.Directive.prototype = {
+ toCSS: function (ctx, env) {
+ if (this.ruleset) {
+ this.ruleset.root = true;
+ return this.name + (env.compress ? '{' : ' {\n ') +
+ this.ruleset.toCSS(ctx, env).trim().replace(/\n/g, '\n ') +
+ (env.compress ? '}': '\n}\n');
+ } else {
+ return this.name + ' ' + this.value.toCSS() + ';\n';
+ }
+ },
+ eval: function (env) {
+ env.frames.unshift(this);
+ this.ruleset = this.ruleset && this.ruleset.eval(env);
+ env.frames.shift();
+ return this;
+ },
+ variable: function (name) { return tree.Ruleset.prototype.variable.call(this.ruleset, name) },
+ find: function () { return tree.Ruleset.prototype.find.apply(this.ruleset, arguments) },
+ rulesets: function () { return tree.Ruleset.prototype.rulesets.apply(this.ruleset) }
+};
+
+})(require('../tree'));