62 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var parsers = require('../parsers.js');
 | |
| var TYPES = parsers.TYPES;
 | |
| 
 | |
| var isValid = function(v) {
 | |
|   var type = parsers.valueType(v);
 | |
|   return (
 | |
|     type === TYPES.LENGTH ||
 | |
|     type === TYPES.PERCENT ||
 | |
|     (type === TYPES.INTEGER && (v === '0' || v === 0))
 | |
|   );
 | |
| };
 | |
| 
 | |
| var parser = function(v) {
 | |
|   return parsers.parseMeasurement(v);
 | |
| };
 | |
| 
 | |
| var mySetter = parsers.implicitSetter('padding', '', isValid, parser);
 | |
| var myGlobal = parsers.implicitSetter(
 | |
|   'padding',
 | |
|   '',
 | |
|   function() {
 | |
|     return true;
 | |
|   },
 | |
|   function(v) {
 | |
|     return v;
 | |
|   }
 | |
| );
 | |
| 
 | |
| module.exports.definition = {
 | |
|   set: function(v) {
 | |
|     if (typeof v === 'number') {
 | |
|       v = String(v);
 | |
|     }
 | |
|     if (typeof v !== 'string') {
 | |
|       return;
 | |
|     }
 | |
|     var V = v.toLowerCase();
 | |
|     switch (V) {
 | |
|       case 'inherit':
 | |
|       case 'initial':
 | |
|       case 'unset':
 | |
|       case '':
 | |
|         myGlobal.call(this, V);
 | |
|         break;
 | |
| 
 | |
|       default:
 | |
|         mySetter.call(this, v);
 | |
|         break;
 | |
|     }
 | |
|   },
 | |
|   get: function() {
 | |
|     return this.getPropertyValue('padding');
 | |
|   },
 | |
|   enumerable: true,
 | |
|   configurable: true,
 | |
| };
 | |
| 
 | |
| module.exports.isValid = isValid;
 | |
| module.exports.parser = parser;
 |