| {{## def.coerceType: | |
| {{ | |
| var $dataType = 'dataType' + $lvl | |
| , $coerced = 'coerced' + $lvl; | |
| }} | |
| var {{=$dataType}} = typeof {{=$data}}; | |
| {{? it.opts.coerceTypes == 'array'}} | |
| if ({{=$dataType}} == 'object' && Array.isArray({{=$data}})) {{=$dataType}} = 'array'; | |
| {{?}} | |
| var {{=$coerced}} = undefined; | |
| {{ var $bracesCoercion = ''; }} | |
| {{~ $coerceToTypes:$type:$i }} | |
| {{? $i }} | |
| if ({{=$coerced}} === undefined) { | |
| {{ $bracesCoercion += '}'; }} | |
| {{?}} | |
| {{? it.opts.coerceTypes == 'array' && $type != 'array' }} | |
| if ({{=$dataType}} == 'array' && {{=$data}}.length == 1) { | |
| {{=$coerced}} = {{=$data}} = {{=$data}}[0]; | |
| {{=$dataType}} = typeof {{=$data}}; | |
| /*if ({{=$dataType}} == 'object' && Array.isArray({{=$data}})) {{=$dataType}} = 'array';*/ | |
| } | |
| {{?}} | |
| {{? $type == 'string' }} | |
| if ({{=$dataType}} == 'number' || {{=$dataType}} == 'boolean') | |
| {{=$coerced}} = '' + {{=$data}}; | |
| else if ({{=$data}} === null) {{=$coerced}} = ''; | |
| {{?? $type == 'number' || $type == 'integer' }} | |
| if ({{=$dataType}} == 'boolean' || {{=$data}} === null | |
| || ({{=$dataType}} == 'string' && {{=$data}} && {{=$data}} == +{{=$data}} | |
| {{? $type == 'integer' }} && !({{=$data}} % 1){{?}})) | |
| {{=$coerced}} = +{{=$data}}; | |
| {{?? $type == 'boolean' }} | |
| if ({{=$data}} === 'false' || {{=$data}} === 0 || {{=$data}} === null) | |
| {{=$coerced}} = false; | |
| else if ({{=$data}} === 'true' || {{=$data}} === 1) | |
| {{=$coerced}} = true; | |
| {{?? $type == 'null' }} | |
| if ({{=$data}} === '' || {{=$data}} === 0 || {{=$data}} === false) | |
| {{=$coerced}} = null; | |
| {{?? it.opts.coerceTypes == 'array' && $type == 'array' }} | |
| if ({{=$dataType}} == 'string' || {{=$dataType}} == 'number' || {{=$dataType}} == 'boolean' || {{=$data}} == null) | |
| {{=$coerced}} = [{{=$data}}]; | |
| {{?}} | |
| {{~}} | |
| {{= $bracesCoercion }} | |
| if ({{=$coerced}} === undefined) { | |
| {{# def.error:'type' }} | |
| } else { | |
| {{# def.setParentData }} | |
| {{=$data}} = {{=$coerced}}; | |
| {{? !$dataLvl }}if ({{=$parentData}} !== undefined){{?}} | |
| {{=$parentData}}[{{=$parentDataProperty}}] = {{=$coerced}}; | |
| } | |
| #}} |