UNPKG

etl

Version:

Collection of stream-based components that form an ETL pipeline

44 lines (37 loc) 902 B
function parse(obj,path,res) { path = path || []; res = res || {}; if (obj.field) res[obj.field] = {path:path,type:obj.type}; if(obj.properties) { Object.keys(obj.properties).forEach(key => { parse(obj.properties[key],path.concat(key),res); }); } return res; } function populate(map,src) { const obj = {}; function setValue(path,o,val) { o = o || {}; if (path.length == 1) { o[path[0]] = val; return o; } else { o[path[0]] = o[path[0]] || {}; return setValue(path.slice(1),o[path[0]],val); } } Object.keys(map).forEach(key => { let value = src[key]; if (!isNaN(value) && (map[key].type == 'long' || map[key].type == 'float')) value = Number(value); if (value !== undefined) setValue(map[key].path,obj,value); }); return obj; } module.exports = { parse : parse, populate : populate };