UNPKG

ucbuilder

Version:

For Developing Applications with multiple form/usercontrols etc.. In Single BrowserWindow...

56 lines (47 loc) 2.02 kB
import { json } from "stream/consumers"; import { objectOpt } from "ucbuilder/build/common"; import { patternMatcher } from "ucbuilder/build/regs/patternMatcher"; import { newObjectOpt } from "ucbuilder/global/objectOpt"; type LoopEachItemCallback = (obj: {}, content: string, nameSpace: string, loopCode: string) => string; const loopEachItemCallback: LoopEachItemCallback = (obj = {}, content, nameSpace, loopCode) => { return content; }; export class loopRegs { loopPattern = new RegExp(/`\s*{(loop\w*)=([\.\w]+?)}\s*`([^]*?)`\s*{\/\1}\s*`/g); constructor() { } parse(content: string, nodes: {}, eachItemcallback: LoopEachItemCallback = loopEachItemCallback): string { let _this = this; return content.replace(this.loopPattern, function ( match: string, loopCode: string, valtoFind: string, subcontent: string, offset: number, input_string: string ) { let result = ""; let arlist: [{}] = objectOpt.getValByNameSpace(nodes, valtoFind) as [{}]; arlist.forEach(arVal => { result += eachItemcallback(arVal, subcontent, valtoFind, loopCode); }); return result; }); } parseDirect( node: {}, loopCode: string, valtoFind: string, subcontent: string, eachItemcallback: LoopEachItemCallback = loopEachItemCallback ): string { let result = ""; let arlist: [{}] = objectOpt.getValByNameSpace(node, valtoFind) as [{}]; //if (Array.isArray(arlist)) { arlist.forEach(arVal => { result += eachItemcallback(arVal, subcontent, valtoFind, loopCode); }); // } else if (Object.getPrototypeOf(arlist).constructor.name == "Object") { //console.log('OBJECT IS here'); // } return result; } }