summaryrefslogtreecommitdiff
path: root/js/zt1-api-client/constrain-types.js
blob: 5b1137d59155bef82cc521dcca37f23e4f75ca04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
'use strict'

function convertType(v,t)
{
	if (Array.isArray(t)) {
		var r = v;
		if (t.length !== 0) {
			if (Array.isArray(v)) {
				r = [];
				for(var i=0;i<v.length;++i)
					r.push(convertType(v[i],t[0]));
			} else r = [ convertType(v,t[0]) ];
		} else r = [ v ];
		return r;
	} else if (t === 'string') {
		if (typeof v === 'string')
			return v;
		else if ((typeof v === 'boolean')||(typeof v === 'number'))
			return v.toString();
		else if (Array.isArray(v)||(typeof v === 'object'))
			return JSON.stringify(v);
		else return '';
	} else if (t === 'integer') {
		if (typeof v === 'number')
			return Math.round(v);
		else if (typeof v === 'string')
			return parseInt(v);
		else if (typeof v === 'boolean')
			return ((v) ? 1 : 0);
		else return 0;
	} else if (t === 'number') {
		if (typeof v === 'number')
			return v;
		else if (typeof v === 'string')
			return parseFloat(v);
		else if (typeof v === 'boolean')
			return ((v) ? 1 : 0);
		else return 0;
	} else if (t === 'boolean') {
		return ((v) ? true : false);
	} else if (typeof t === 'object') {
		if ((v !== null)&&(typeof v === 'object'))
			return constrainTypes(v,t);
		else return {};
	} else return v;
}

function constrainTypes(obj,typeMap)
{
	var r = {};
	for(var k in obj) {
		var t = typeMap[k];
		r[k] = convertType(v,t);
	}
	return r;
}

exports = constrainTypes;