json-transforms
Version:
Provides a recursive, pattern-matching approach to transforming JSON data.
25 lines (20 loc) • 464 B
JavaScript
const transform = (json, rules) => {
const runner = match => {
for (let i = 0; i < rules.length; i++) {
const rule = rules[i];
const res = rule(match, adaptedRunner);
if (res !== null) {
return res;
}
}
};
const adaptedRunner = ast => {
if (Array.isArray(ast)) {
return ast.map(r => runner(r));
} else {
return runner(ast);
}
};
return adaptedRunner(json);
};
export default transform;