const _ = require('lodash'); const fp = require('lodash/fp'); const splits = ['**', '$$', '::']; const flow = fp.map(fp.fromPairs); const resolveStr = (str, level = 0) => { let sp = []; const tp = _.split(str, splits[level]); _.each(tp, child => { if (splits[level + 1] && child.indexOf(splits[level + 1]) >= 0) { sp.push(resolveStr(child, level + 1)); } }); return sp.length ? sp : tp; }; const parse = (str) => { return fp.pipe(resolveStr, flow)(str); }; module.exports = { parse };