aboutsummaryrefslogtreecommitdiff
path: root/node_modules/renderkid/lib/renderKid/styles/rule/MixedDeclarationSet.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/renderkid/lib/renderKid/styles/rule/MixedDeclarationSet.js')
-rw-r--r--node_modules/renderkid/lib/renderKid/styles/rule/MixedDeclarationSet.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/node_modules/renderkid/lib/renderKid/styles/rule/MixedDeclarationSet.js b/node_modules/renderkid/lib/renderKid/styles/rule/MixedDeclarationSet.js
new file mode 100644
index 000000000..ceea06ed7
--- /dev/null
+++ b/node_modules/renderkid/lib/renderKid/styles/rule/MixedDeclarationSet.js
@@ -0,0 +1,78 @@
+// 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;
+
+})();