constrain-types.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. 'use strict'
  2. function convertType(v,t)
  3. {
  4. if (Array.isArray(t)) {
  5. var r = v;
  6. if (t.length !== 0) {
  7. if (Array.isArray(v)) {
  8. r = [];
  9. for(var i=0;i<v.length;++i)
  10. r.push(convertType(v[i],t[0]));
  11. } else r = [ convertType(v,t[0]) ];
  12. } else r = [ v ];
  13. return r;
  14. } else if (t === 'string') {
  15. if (typeof v === 'string')
  16. return v;
  17. else if ((typeof v === 'boolean')||(typeof v === 'number'))
  18. return v.toString();
  19. else if (Array.isArray(v)||(typeof v === 'object'))
  20. return JSON.stringify(v);
  21. else return '';
  22. } else if (t === 'integer') {
  23. if (typeof v === 'number')
  24. return Math.round(v);
  25. else if (typeof v === 'string')
  26. return parseInt(v);
  27. else if (typeof v === 'boolean')
  28. return ((v) ? 1 : 0);
  29. else return 0;
  30. } else if (t === 'number') {
  31. if (typeof v === 'number')
  32. return v;
  33. else if (typeof v === 'string')
  34. return parseFloat(v);
  35. else if (typeof v === 'boolean')
  36. return ((v) ? 1 : 0);
  37. else return 0;
  38. } else if (t === 'boolean') {
  39. return ((v) ? true : false);
  40. } else if (typeof t === 'object') {
  41. if ((v !== null)&&(typeof v === 'object'))
  42. return constrainTypes(v,t);
  43. else return {};
  44. } else return v;
  45. }
  46. function constrainTypes(obj,typeMap)
  47. {
  48. var r = {};
  49. for(var k in obj) {
  50. var t = typeMap[k];
  51. r[k] = convertType(v,t);
  52. }
  53. return r;
  54. }
  55. exports = constrainTypes;