import { AnyObject } from "./types" import { head, path } from "./safe" type StrTmpl = ((data: AnyObject) => string) const ecran = '\\' // TODO: make it splicy, not accumulatie by symbols. /** Supports ecrans: '\\{"json": {yes} \\}' @returns getTmpl('one{meme}two')({meme: 42}) -> one42two */ export const getTmpl = (tmpl: string): StrTmpl => { const parts: string[] = [] const keymap: string[] = [] const len = tmpl.length let i = 0, s: string, ln: number, start = 0, open = false, hasEcran = false, hasEcranNext = false, nextChar: string for(i=0; i { const out: string[] = [] const ln = parts.length-1 for(const j in parts) { i = +j; out.push(parts[i]) if(i!==ln) out.push(path(keymap[i].split('.'), data)) } return out.join('') } }