|
|
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 (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
|
|
|
}; |
...
|
...
|
|