Skip to content
Snippets Groups Projects
Select Git revision
  • 2b68a7556ea700e1952beafa07357a7e4e60a606
  • master default protected
  • 1.2.4
  • 1.2.3
  • 1.2.2
  • 1.2.1
  • 1.2.0
  • v1.1.0
8 results

project.mk

Blame
  • formatter.js 1.08 KiB
    /** Monster 1.21.1, © 2021 schukai GmbH, Released under the AGPL 3.0 License. */
    "use strict";import{Pipe}from"../data/pipe.js";import{assignToNamespace,Monster}from"../namespace.js";import{Base}from"../types/base.js";import{validateObject,validateString}from"../types/validate.js";class Formatter extends Base{constructor(e){super(),this.object=validateObject(e),this.openMarker="${",this.closeMarker="}"}setMarker(e,r){return void 0===r&&(r=e),this.openMarker=validateString(e),this.closeMarker=validateString(r),this}format(e){return tokenizer.call(this,validateString(e))}}function tokenizer(e){var r=this;let t=[];for(;;){var a=e.indexOf(r.openMarker);if(-1===a){t.push(e);break}0<a&&(t.push(e.substring(0,a)),e=e.substring(a));var s=e.substring(r.openMarker.length).indexOf(r.closeMarker)+r.openMarker.length;if(-1===s)throw new Error("syntax error in formatter template");a="path:"+e.substring(r.openMarker.length,s);t.push(validateString(new Pipe(a).run(r.object))),e=e.substring(s+r.closeMarker.length)}return t.join("")}assignToNamespace("Monster.Text",Formatter);export{Monster,Formatter};