UNPKG

2.39 kBJavaScriptView Raw
1const Vector3D = require('./math/Vector3')
2const Vector2D = require('./math/Vector2')
3
4// Parse an option from the options object
5// If the option is not present, return the default value
6const parseOption = function (options, optionname, defaultvalue) {
7 var result = defaultvalue
8 if (options && optionname in options) {
9 result = options[optionname]
10 }
11 return result
12}
13
14 // Parse an option and force into a Vector3D. If a scalar is passed it is converted
15 // into a vector with equal x,y,z
16const parseOptionAs3DVector = function (options, optionname, defaultvalue) {
17 var result = parseOption(options, optionname, defaultvalue)
18 result = new Vector3D(result)
19 return result
20}
21
22const parseOptionAs3DVectorList = function (options, optionname, defaultvalue) {
23 var result = parseOption(options, optionname, defaultvalue)
24 return result.map(function (res) {
25 return new Vector3D(res)
26 })
27}
28
29 // Parse an option and force into a Vector2D. If a scalar is passed it is converted
30 // into a vector with equal x,y
31const parseOptionAs2DVector = function (options, optionname, defaultvalue) {
32 var result = parseOption(options, optionname, defaultvalue)
33 result = new Vector2D(result)
34 return result
35}
36
37const parseOptionAsFloat = function (options, optionname, defaultvalue) {
38 var result = parseOption(options, optionname, defaultvalue)
39 if (typeof (result) === 'string') {
40 result = Number(result)
41 }
42 if (isNaN(result) || typeof (result) !== 'number') {
43 throw new Error('Parameter ' + optionname + ' should be a number')
44 }
45 return result
46}
47
48const parseOptionAsInt = function (options, optionname, defaultvalue) {
49 var result = parseOption(options, optionname, defaultvalue)
50 result = Number(Math.floor(result))
51 if (isNaN(result)) {
52 throw new Error('Parameter ' + optionname + ' should be a number')
53 }
54 return result
55}
56
57const parseOptionAsBool = function (options, optionname, defaultvalue) {
58 var result = parseOption(options, optionname, defaultvalue)
59 if (typeof (result) === 'string') {
60 if (result === 'true') result = true
61 else if (result === 'false') result = false
62 else if (result === 0) result = false
63 }
64 result = !!result
65 return result
66}
67
68module.exports = {
69 parseOption,
70 parseOptionAsInt,
71 parseOptionAsFloat,
72 parseOptionAsBool,
73 parseOptionAs3DVector,
74 parseOptionAs2DVector,
75 parseOptionAs3DVectorList
76}