margin.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. 'use strict';
  2. var parsers = require('../parsers.js');
  3. var TYPES = parsers.TYPES;
  4. var isValid = function (v) {
  5. if (v.toLowerCase() === "auto") {
  6. return true;
  7. }
  8. var type = parsers.valueType(v);
  9. return type === TYPES.LENGTH || type === TYPES.PERCENT || (type === TYPES.INTEGER && (v === '0' || v === 0));
  10. };
  11. var parser = function (v) {
  12. var V = v.toLowerCase();
  13. if (V === "auto") {
  14. return V;
  15. }
  16. return parsers.parseMeasurement(v);
  17. };
  18. var mySetter = parsers.implicitSetter('margin', '', isValid, parser);
  19. var myGlobal = parsers.implicitSetter('margin', '', function () {
  20. return true;
  21. }, function (v) {
  22. return v;
  23. });
  24. module.exports.definition = {
  25. set: function (v) {
  26. if (typeof v === "number") {
  27. v = String(v);
  28. }
  29. if (typeof v !== "string") {
  30. return;
  31. }
  32. var V = v.toLowerCase();
  33. switch (V) {
  34. case 'inherit':
  35. case 'initial':
  36. case 'unset':
  37. case '':
  38. myGlobal.call(this, V);
  39. break;
  40. default:
  41. mySetter.call(this, v);
  42. break;
  43. }
  44. },
  45. get: function () {
  46. return this.getPropertyValue('margin');
  47. },
  48. enumerable: true,
  49. configurable: true
  50. };
  51. module.exports.isValid = isValid;
  52. module.exports.parser = parser;