Select Git revision
topological-sort.go
buildmap.js 876 B
/** Monster 1.15.0, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
"use strict";import{Monster,assignToNamespace}from"../namespace.js";import{isFunction}from"../types/is.js";import{validateString}from"../types/validate.js";import{Pathfinder}from"./pathfinder.js";function buildMap(t,a,i,r,n){validateString(a);const o=new Map;let e=new Pathfinder(t),s=e.getVia(a);return s instanceof Map&&s.forEach((t,a,e)=>{isFunction(n)&&!0!==n.call(e,t,a)||(a=build(t,r,a),t=build(t,i),o.set(a,t))}),o}function build(t,e,a){if(void 0===e)return a||t;validateString(e);const i=[...e.matchAll(/(?<placeholder>\${(?<path>[a-z.-_0-9]*)})/gm)];let r=new Pathfinder(t);return 0===i.length?r.getVia(e):(i.forEach(t=>{var a=t?.groups,t=a?.placeholder;void 0!==t&&(a=a?.path,a=r.getVia(a),e=e.replaceAll(t,a))}),e)}assignToNamespace("Monster.Data",buildMap);export{Monster,buildMap};