Add Sass like extend

This commit is contained in:
hokaccha
2011-12-05 23:19:13 +09:00
committed by Luke Page
parent 61e7bd6fb1
commit e793e81e92
10 changed files with 206 additions and 8 deletions

View File

@@ -526,7 +526,8 @@ less.Parser = function Parser(env) {
var node, root = [];
while ((node = $(this.mixin.definition) || $(this.rule) || $(this.ruleset) ||
$(this.mixin.call) || $(this.comment) || $(this.directive))
$(this.mixin.call) || $(this.comment) || $(this.directive) ||
$(this.extend))
|| $(/^[\s\n]+/) || $(/^;+/)) {
node && root.push(node);
}
@@ -803,6 +804,23 @@ less.Parser = function Parser(env) {
if ((a = $(this.entity)) && $('/') && (b = $(this.entity))) {
return new(tree.Shorthand)(a, b);
}
},
//
// extend
//
extend: function() {
var elements = [], e, c, args, index = i, s = input.charAt(i);
if (s !== '+') { return }
while (e = $(/^\+[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)) {
elements.push(new(tree.Element)(c, e.slice(1), i));
}
if (elements.length > 0 && ($(';') || peek('}'))) {
return new(tree.Extend)(elements, index);
}
restore();
},