UNPKG

@zargu/couchdb-designer

Version:

Create and testing couchdb design document form directory structure.

45 lines (42 loc) 1.4 kB
const createFieldsMap = fields => { return doc => { let result = {}; for(let field of fields){ let path = field.split('.'); if(path.length > 1){ let exist = true; let subDoc = doc; for(let key of path){ if(typeof subDoc === 'object' && key in subDoc){ subDoc = subDoc[key]; }else{ exist = false; break; } } if(exist){ let subResult = result; do{ let key = path.shift(); if(path.length){ subResult[key] = subDoc; }else{ if(key in subResult){ subResult = subResult[key]; }else{ subResult[key] = {}; subResult = subResult[key]; } } }while(path.length) } }else{ if(path[0] in doc){ result[path[0]] = doc[path[0]]; } } } return result; } } export default createFieldsMap;