| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 | 
							- var understandable = require('./properties/understandable');
 
- function animationIterationCount(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !(validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2))) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   }
 
-   return validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2);
 
- }
 
- function animationName(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !(validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2))) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   }
 
-   return validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2);
 
- }
 
- function areSameFunction(validator, value1, value2) {
 
-   if (!validator.isFunction(value1) || !validator.isFunction(value2)) {
 
-     return false;
 
-   }
 
-   var function1Name = value1.substring(0, value1.indexOf('('));
 
-   var function2Name = value2.substring(0, value2.indexOf('('));
 
-   return function1Name === function2Name;
 
- }
 
- function backgroundPosition(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !(validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2))) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   } else if (validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2)) {
 
-     return true;
 
-   }
 
-   return unit(validator, value1, value2);
 
- }
 
- function backgroundSize(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !(validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2))) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   } else if (validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2)) {
 
-     return true;
 
-   }
 
-   return unit(validator, value1, value2);
 
- }
 
- function color(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !validator.isColor(value2)) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   } else if (!validator.colorOpacity && (validator.isRgbColor(value1) || validator.isHslColor(value1))) {
 
-     return false;
 
-   } else if (!validator.colorOpacity && (validator.isRgbColor(value2) || validator.isHslColor(value2))) {
 
-     return false;
 
-   } else if (validator.isColor(value1) && validator.isColor(value2)) {
 
-     return true;
 
-   }
 
-   return sameFunctionOrValue(validator, value1, value2);
 
- }
 
- function components(overrideCheckers) {
 
-   return function (validator, value1, value2, position) {
 
-     return overrideCheckers[position](validator, value1, value2);
 
-   };
 
- }
 
- function fontFamily(validator, value1, value2) {
 
-   return understandable(validator, value1, value2, 0, true);
 
- }
 
- function image(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !validator.isImage(value2)) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   } else if (validator.isImage(value2)) {
 
-     return true;
 
-   } else if (validator.isImage(value1)) {
 
-     return false;
 
-   }
 
-   return sameFunctionOrValue(validator, value1, value2);
 
- }
 
- function keyword(propertyName) {
 
-   return function(validator, value1, value2) {
 
-     if (!understandable(validator, value1, value2, 0, true) && !validator.isKeyword(propertyName)(value2)) {
 
-       return false;
 
-     } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-       return true;
 
-     }
 
-     return validator.isKeyword(propertyName)(value2);
 
-   };
 
- }
 
- function keywordWithGlobal(propertyName) {
 
-   return function(validator, value1, value2) {
 
-     if (!understandable(validator, value1, value2, 0, true) && !(validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2))) {
 
-       return false;
 
-     } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-       return true;
 
-     }
 
-     return validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2);
 
-   };
 
- }
 
- function propertyName(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !validator.isIdentifier(value2)) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   }
 
-   return validator.isIdentifier(value2);
 
- }
 
- function sameFunctionOrValue(validator, value1, value2) {
 
-   return areSameFunction(validator, value1, value2) ?
 
-     true :
 
-     value1 === value2;
 
- }
 
- function textShadow(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !(validator.isUnit(value2) || validator.isColor(value2) || validator.isGlobal(value2))) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   }
 
-   return validator.isUnit(value2) || validator.isColor(value2) || validator.isGlobal(value2);
 
- }
 
- function time(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !validator.isTime(value2)) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   } else if (validator.isTime(value1) && !validator.isTime(value2)) {
 
-     return false;
 
-   } else if (validator.isTime(value2)) {
 
-     return true;
 
-   } else if (validator.isTime(value1)) {
 
-     return false;
 
-   } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {
 
-     return true;
 
-   }
 
-   return sameFunctionOrValue(validator, value1, value2);
 
- }
 
- function timingFunction(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !(validator.isTimingFunction(value2) || validator.isGlobal(value2))) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   }
 
-   return validator.isTimingFunction(value2) || validator.isGlobal(value2);
 
- }
 
- function unit(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !validator.isUnit(value2)) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   } else if (validator.isUnit(value1) && !validator.isUnit(value2)) {
 
-     return false;
 
-   } else if (validator.isUnit(value2)) {
 
-     return true;
 
-   } else if (validator.isUnit(value1)) {
 
-     return false;
 
-   } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {
 
-     return true;
 
-   }
 
-   return sameFunctionOrValue(validator, value1, value2);
 
- }
 
- function unitOrKeywordWithGlobal(propertyName) {
 
-   var byKeyword = keywordWithGlobal(propertyName);
 
-   return function(validator, value1, value2) {
 
-     return unit(validator, value1, value2) || byKeyword(validator, value1, value2);
 
-   };
 
- }
 
- function unitOrNumber(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !(validator.isUnit(value2) || validator.isNumber(value2))) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   } else if ((validator.isUnit(value1) || validator.isNumber(value1)) && !(validator.isUnit(value2) || validator.isNumber(value2))) {
 
-     return false;
 
-   } else if (validator.isUnit(value2) || validator.isNumber(value2)) {
 
-     return true;
 
-   } else if (validator.isUnit(value1) || validator.isNumber(value1)) {
 
-     return false;
 
-   } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {
 
-     return true;
 
-   }
 
-   return sameFunctionOrValue(validator, value1, value2);
 
- }
 
- function zIndex(validator, value1, value2) {
 
-   if (!understandable(validator, value1, value2, 0, true) && !validator.isZIndex(value2)) {
 
-     return false;
 
-   } else if (validator.isVariable(value1) && validator.isVariable(value2)) {
 
-     return true;
 
-   }
 
-   return validator.isZIndex(value2);
 
- }
 
- module.exports = {
 
-   generic: {
 
-     color: color,
 
-     components: components,
 
-     image: image,
 
-     propertyName: propertyName,
 
-     time: time,
 
-     timingFunction: timingFunction,
 
-     unit: unit,
 
-     unitOrNumber: unitOrNumber
 
-   },
 
-   property: {
 
-     animationDirection: keywordWithGlobal('animation-direction'),
 
-     animationFillMode: keyword('animation-fill-mode'),
 
-     animationIterationCount: animationIterationCount,
 
-     animationName: animationName,
 
-     animationPlayState: keywordWithGlobal('animation-play-state'),
 
-     backgroundAttachment: keyword('background-attachment'),
 
-     backgroundClip: keywordWithGlobal('background-clip'),
 
-     backgroundOrigin: keyword('background-origin'),
 
-     backgroundPosition: backgroundPosition,
 
-     backgroundRepeat: keyword('background-repeat'),
 
-     backgroundSize: backgroundSize,
 
-     bottom: unitOrKeywordWithGlobal('bottom'),
 
-     borderCollapse: keyword('border-collapse'),
 
-     borderStyle: keywordWithGlobal('*-style'),
 
-     clear: keywordWithGlobal('clear'),
 
-     cursor: keywordWithGlobal('cursor'),
 
-     display: keywordWithGlobal('display'),
 
-     float: keywordWithGlobal('float'),
 
-     left: unitOrKeywordWithGlobal('left'),
 
-     fontFamily: fontFamily,
 
-     fontStretch: keywordWithGlobal('font-stretch'),
 
-     fontStyle: keywordWithGlobal('font-style'),
 
-     fontVariant: keywordWithGlobal('font-variant'),
 
-     fontWeight: keywordWithGlobal('font-weight'),
 
-     listStyleType: keywordWithGlobal('list-style-type'),
 
-     listStylePosition: keywordWithGlobal('list-style-position'),
 
-     outlineStyle: keywordWithGlobal('*-style'),
 
-     overflow: keywordWithGlobal('overflow'),
 
-     position: keywordWithGlobal('position'),
 
-     right: unitOrKeywordWithGlobal('right'),
 
-     textAlign: keywordWithGlobal('text-align'),
 
-     textDecoration: keywordWithGlobal('text-decoration'),
 
-     textOverflow: keywordWithGlobal('text-overflow'),
 
-     textShadow: textShadow,
 
-     top: unitOrKeywordWithGlobal('top'),
 
-     transform: sameFunctionOrValue,
 
-     verticalAlign: unitOrKeywordWithGlobal('vertical-align'),
 
-     visibility: keywordWithGlobal('visibility'),
 
-     whiteSpace: keywordWithGlobal('white-space'),
 
-     zIndex: zIndex
 
-   }
 
- };
 
 
  |