UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

64 lines (48 loc) 1.46 kB
import { BaseMatcher } from "../BaseMatcher.js"; const RX = /%([0-9]+)/gi; export class DescribeAs extends BaseMatcher { /** * @type {string} */ template /** * @type {Matcher} */ matcher /** * @type {Array} */ values /** * * @param {string} template * @param {Matcher} matcher * @param {Array} values */ constructor(template, matcher, values) { super(); this.template = template; this.matcher = matcher; this.values = values; } matches(item, mismatch_description) { return this.matcher.matches(item, mismatch_description); } describeTo(description) { let textStart = 0; const matches = this.template.matchAll(RX); for (let i = 0; i < matches.length; i++) { const match = matches[i]; description.appendText(this.template.substring(textStart, match.index)); const group_index = parseInt(match.groups[1]); description.appendValue(this.values[group_index]); textStart = match[0].length; } if (textStart < this.template.length) { description.appendText(this.template.slice(textStart)); } } describeMismatch(item, mismatch_description) { this.matcher.describeMismatch(item, mismatch_description); } }