79 lines
1.8 KiB
JavaScript
79 lines
1.8 KiB
JavaScript
|
// Generated by CoffeeScript 1.9.3
|
||
|
var MixedDeclarationSet,
|
||
|
slice = [].slice;
|
||
|
|
||
|
module.exports = MixedDeclarationSet = (function() {
|
||
|
var self;
|
||
|
|
||
|
self = MixedDeclarationSet;
|
||
|
|
||
|
MixedDeclarationSet.mix = function() {
|
||
|
var i, len, mixed, ruleSets, rules;
|
||
|
ruleSets = 1 <= arguments.length ? slice.call(arguments, 0) : [];
|
||
|
mixed = new self;
|
||
|
for (i = 0, len = ruleSets.length; i < len; i++) {
|
||
|
rules = ruleSets[i];
|
||
|
mixed.mixWithList(rules);
|
||
|
}
|
||
|
return mixed;
|
||
|
};
|
||
|
|
||
|
function MixedDeclarationSet() {
|
||
|
this._declarations = {};
|
||
|
}
|
||
|
|
||
|
MixedDeclarationSet.prototype.mixWithList = function(rules) {
|
||
|
var i, len, rule;
|
||
|
rules.sort(function(a, b) {
|
||
|
return a.selector.priority > b.selector.priority;
|
||
|
});
|
||
|
for (i = 0, len = rules.length; i < len; i++) {
|
||
|
rule = rules[i];
|
||
|
this._mixWithRule(rule);
|
||
|
}
|
||
|
return this;
|
||
|
};
|
||
|
|
||
|
MixedDeclarationSet.prototype._mixWithRule = function(rule) {
|
||
|
var dec, prop, ref;
|
||
|
ref = rule.styles._declarations;
|
||
|
for (prop in ref) {
|
||
|
dec = ref[prop];
|
||
|
this._mixWithDeclaration(dec);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
MixedDeclarationSet.prototype._mixWithDeclaration = function(dec) {
|
||
|
var cur;
|
||
|
cur = this._declarations[dec.prop];
|
||
|
if ((cur != null) && cur.important && !dec.important) {
|
||
|
return;
|
||
|
}
|
||
|
this._declarations[dec.prop] = dec;
|
||
|
};
|
||
|
|
||
|
MixedDeclarationSet.prototype.get = function(prop) {
|
||
|
if (prop == null) {
|
||
|
return this._declarations;
|
||
|
}
|
||
|
if (this._declarations[prop] == null) {
|
||
|
return null;
|
||
|
}
|
||
|
return this._declarations[prop].val;
|
||
|
};
|
||
|
|
||
|
MixedDeclarationSet.prototype.toObject = function() {
|
||
|
var dec, obj, prop, ref;
|
||
|
obj = {};
|
||
|
ref = this._declarations;
|
||
|
for (prop in ref) {
|
||
|
dec = ref[prop];
|
||
|
obj[prop] = dec.val;
|
||
|
}
|
||
|
return obj;
|
||
|
};
|
||
|
|
||
|
return MixedDeclarationSet;
|
||
|
|
||
|
})();
|