cometa/parser.ts

27 lines
602 B
TypeScript
Raw Normal View History

2018-02-06 20:00:09 +01:00
import { Part, Render, isRender, PartFunction } from "./options";
2018-01-19 18:52:30 +01:00
2018-01-21 23:01:40 +01:00
2018-02-06 20:00:09 +01:00
export function computeParts(parts: Part[], data = {}): Render {
if (parts.length === 0)
2018-01-21 23:01:40 +01:00
return ''
2018-02-06 20:00:09 +01:00
return computePart(parts[0], data) + computeParts(parts.slice(1), data)
2018-01-19 18:52:30 +01:00
}
2018-02-06 20:00:09 +01:00
function computePart(part: Part, data = {}): Render {
if (isRender(part))
return part
else
return computePartFunction(part, data)
2018-01-19 18:52:30 +01:00
}
2018-02-06 20:00:09 +01:00
function computePartFunction(func: PartFunction, data = {}): Render {
if (isRender(func))
return func;
else {
const ret = func(data)
if (isRender(ret))
return ret
else return computeParts(ret, data)
2018-01-19 18:52:30 +01:00
}
}