You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.2 KiB
68 lines
1.2 KiB
'use strict'; |
|
|
|
var parsers = require('../parsers.js'); |
|
var TYPES = parsers.TYPES; |
|
|
|
var isValid = function(v) { |
|
if (v.toLowerCase() === 'auto') { |
|
return true; |
|
} |
|
var type = parsers.valueType(v); |
|
return ( |
|
type === TYPES.LENGTH || |
|
type === TYPES.PERCENT || |
|
(type === TYPES.INTEGER && (v === '0' || v === 0)) |
|
); |
|
}; |
|
|
|
var parser = function(v) { |
|
var V = v.toLowerCase(); |
|
if (V === 'auto') { |
|
return V; |
|
} |
|
return parsers.parseMeasurement(v); |
|
}; |
|
|
|
var mySetter = parsers.implicitSetter('margin', '', isValid, parser); |
|
var myGlobal = parsers.implicitSetter( |
|
'margin', |
|
'', |
|
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('margin'); |
|
}, |
|
enumerable: true, |
|
configurable: true, |
|
}; |
|
|
|
module.exports.isValid = isValid; |
|
module.exports.parser = parser;
|
|
|