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.
		
		
		
		
		
			
		
			
				
					
					
						
							47 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							47 lines
						
					
					
						
							1.0 KiB
						
					
					
				'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, | 
						|
};
 | 
						|
 |