| // Generated by CoffeeScript 1.9.3 |
| var _Declaration; |
| |
| module.exports = _Declaration = (function() { |
| var self; |
| |
| self = _Declaration; |
| |
| _Declaration.importantClauseRx = /(\s\!important)$/; |
| |
| _Declaration.setOnto = function(declarations, prop, val) { |
| var dec; |
| if (!(dec = declarations[prop])) { |
| return declarations[prop] = new this(prop, val); |
| } else { |
| return dec.set(val); |
| } |
| }; |
| |
| _Declaration.sanitizeValue = function(val) { |
| return String(val).trim().replace(/[\s]+/g, ' '); |
| }; |
| |
| _Declaration.inheritAllowed = false; |
| |
| function _Declaration(prop1, val) { |
| this.prop = prop1; |
| this.important = false; |
| this.set(val); |
| } |
| |
| _Declaration.prototype.get = function() { |
| return this._get(); |
| }; |
| |
| _Declaration.prototype._get = function() { |
| return this.val; |
| }; |
| |
| _Declaration.prototype._pickImportantClause = function(val) { |
| if (self.importantClauseRx.test(String(val))) { |
| this.important = true; |
| return val.replace(self.importantClauseRx, ''); |
| } else { |
| this.important = false; |
| return val; |
| } |
| }; |
| |
| _Declaration.prototype.set = function(val) { |
| val = self.sanitizeValue(val); |
| val = this._pickImportantClause(val); |
| val = val.trim(); |
| if (this._handleNullOrInherit(val)) { |
| return this; |
| } |
| this._set(val); |
| return this; |
| }; |
| |
| _Declaration.prototype._set = function(val) { |
| return this.val = val; |
| }; |
| |
| _Declaration.prototype._handleNullOrInherit = function(val) { |
| if (val === '') { |
| this.val = ''; |
| return true; |
| } |
| if (val === 'inherit') { |
| if (this.constructor.inheritAllowed) { |
| this.val = 'inherit'; |
| } else { |
| throw Error("Inherit is not allowed for `" + this.prop + "`"); |
| } |
| return true; |
| } else { |
| return false; |
| } |
| }; |
| |
| return _Declaration; |
| |
| })(); |