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.
67 lines
2.0 KiB
67 lines
2.0 KiB
'use strict'; |
|
|
|
var parsers = require('../parsers'); |
|
|
|
module.exports.definition = { |
|
set: function(v) { |
|
var valueType = parsers.valueType(v); |
|
if (valueType === parsers.TYPES.ANGLE) { |
|
return this._setProperty('azimuth', parsers.parseAngle(v)); |
|
} |
|
if (valueType === parsers.TYPES.KEYWORD) { |
|
var keywords = v |
|
.toLowerCase() |
|
.trim() |
|
.split(/\s+/); |
|
var hasBehind = false; |
|
if (keywords.length > 2) { |
|
return; |
|
} |
|
var behindIndex = keywords.indexOf('behind'); |
|
hasBehind = behindIndex !== -1; |
|
|
|
if (keywords.length === 2) { |
|
if (!hasBehind) { |
|
return; |
|
} |
|
keywords.splice(behindIndex, 1); |
|
} |
|
if (keywords[0] === 'leftwards' || keywords[0] === 'rightwards') { |
|
if (hasBehind) { |
|
return; |
|
} |
|
return this._setProperty('azimuth', keywords[0]); |
|
} |
|
if (keywords[0] === 'behind') { |
|
return this._setProperty('azimuth', '180deg'); |
|
} |
|
switch (keywords[0]) { |
|
case 'left-side': |
|
return this._setProperty('azimuth', '270deg'); |
|
case 'far-left': |
|
return this._setProperty('azimuth', (hasBehind ? 240 : 300) + 'deg'); |
|
case 'left': |
|
return this._setProperty('azimuth', (hasBehind ? 220 : 320) + 'deg'); |
|
case 'center-left': |
|
return this._setProperty('azimuth', (hasBehind ? 200 : 340) + 'deg'); |
|
case 'center': |
|
return this._setProperty('azimuth', (hasBehind ? 180 : 0) + 'deg'); |
|
case 'center-right': |
|
return this._setProperty('azimuth', (hasBehind ? 160 : 20) + 'deg'); |
|
case 'right': |
|
return this._setProperty('azimuth', (hasBehind ? 140 : 40) + 'deg'); |
|
case 'far-right': |
|
return this._setProperty('azimuth', (hasBehind ? 120 : 60) + 'deg'); |
|
case 'right-side': |
|
return this._setProperty('azimuth', '90deg'); |
|
default: |
|
return; |
|
} |
|
} |
|
}, |
|
get: function() { |
|
return this.getPropertyValue('azimuth'); |
|
}, |
|
enumerable: true, |
|
configurable: true, |
|
};
|
|
|