mirror of
https://github.com/less/less.js.git
synced 2026-02-09 22:45:28 -05:00
This commit is contained in:
@@ -1158,23 +1158,65 @@ less.Parser = function Parser(env) {
|
||||
// @charset "utf-8";
|
||||
//
|
||||
directive: function () {
|
||||
var name, value, rules, types, e, nodes;
|
||||
var name, value, rules, identifier, e, nodes, nonVendorSpecificName,
|
||||
hasBlock, hasIdentifier;
|
||||
|
||||
if (input.charAt(i) !== '@') return;
|
||||
|
||||
|
||||
if (value = $(this['import']) || $(this.media)) {
|
||||
return value;
|
||||
} else if (name = $(/^@page|@keyframes/) || $(/^@(?:-webkit-|-khtml-|-moz-|-o-|-ms-)[a-z0-9-]+/)) {
|
||||
types = ($(/^[^{]+/) || '').trim();
|
||||
}
|
||||
|
||||
name = $(/^@[a-z-]+/);
|
||||
|
||||
nonVendorSpecificName = name;
|
||||
if (name.charAt(1) == '-' && name.indexOf('-', 2) > 0) {
|
||||
nonVendorSpecificName = "@" + name.slice(name.indexOf('-', 2) + 1);
|
||||
}
|
||||
|
||||
switch(nonVendorSpecificName) {
|
||||
case "@font-face":
|
||||
hasBlock = true;
|
||||
break;
|
||||
case "@viewport":
|
||||
case "@top-left":
|
||||
case "@top-left-corner":
|
||||
case "@top-center":
|
||||
case "@top-right":
|
||||
case "@top-right-corner":
|
||||
case "@bottom-left":
|
||||
case "@bottom-left-corner":
|
||||
case "@bottom-center":
|
||||
case "@bottom-right":
|
||||
case "@bottom-right-corner":
|
||||
case "@left-top":
|
||||
case "@left-middle":
|
||||
case "@left-bottom":
|
||||
case "@right-top":
|
||||
case "@right-middle":
|
||||
case "@right-bottom":
|
||||
hasBlock = true;
|
||||
break;
|
||||
case "@page":
|
||||
case "@document":
|
||||
case "@supports":
|
||||
case "@keyframes":
|
||||
hasBlock = true;
|
||||
hasIdentifier = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (hasIdentifier) {
|
||||
name += " " + ($(/^[^{]+/) || '').trim();
|
||||
}
|
||||
|
||||
if (hasBlock)
|
||||
{
|
||||
if (rules = $(this.block)) {
|
||||
return new(tree.Directive)(name + " " + types, rules);
|
||||
return new(tree.Directive)(name, rules);
|
||||
}
|
||||
} else if (name = $(/^@[a-z-]+/)) {
|
||||
if (name === '@font-face') {
|
||||
if (rules = $(this.block)) {
|
||||
return new(tree.Directive)(name, rules);
|
||||
}
|
||||
} else if ((value = $(this.entity)) && $(';')) {
|
||||
} else {
|
||||
if ((value = $(this.entity)) && $(';')) {
|
||||
return new(tree.Directive)(name, value);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user