1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 'use strict';
- var parseMeasurement = require('../parsers').parseMeasurement;
- var shape_regex = /^rect\((.*)\)$/i;
- var parse = function(val) {
- if (val === '' || val === null) {
- return val;
- }
- if (typeof val !== 'string') {
- return undefined;
- }
- val = val.toLowerCase();
- if (val === 'auto' || val === 'inherit') {
- return val;
- }
- var matches = val.match(shape_regex);
- if (!matches) {
- return undefined;
- }
- var parts = matches[1].split(/\s*,\s*/);
- if (parts.length !== 4) {
- return undefined;
- }
- var valid = parts.every(function(part, index) {
- var measurement = parseMeasurement(part);
- parts[index] = measurement;
- return measurement !== undefined;
- });
- if (!valid) {
- return undefined;
- }
- parts = parts.join(', ');
- return val.replace(matches[1], parts);
- };
- module.exports.definition = {
- set: function(v) {
- this._setProperty('clip', parse(v));
- },
- get: function() {
- return this.getPropertyValue('clip');
- },
- enumerable: true,
- configurable: true,
- };
|