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
|
|
|
}
|
|
|
|
}
|