UNPKG

webidl2

Version:
52 lines (48 loc) 1.34 kB
import { Base } from "./base.js"; import { unescape } from "./helpers.js"; export class Includes extends Base { /** * @param {import("../tokeniser.js").Tokeniser} tokeniser */ static parse(tokeniser) { const target = tokeniser.consumeKind("identifier"); if (!target) { return; } const tokens = { target }; tokens.includes = tokeniser.consume("includes"); if (!tokens.includes) { tokeniser.unconsume(target.index); return; } tokens.mixin = tokeniser.consumeKind("identifier") || tokeniser.error("Incomplete includes statement"); tokens.termination = tokeniser.consume(";") || tokeniser.error("No terminating ; for includes statement"); return new Includes({ source: tokeniser.source, tokens }); } get type() { return "includes"; } get target() { return unescape(this.tokens.target.value); } get includes() { return unescape(this.tokens.mixin.value); } /** @param {import("../writer.js").Writer} w */ write(w) { return w.ts.definition( w.ts.wrap([ this.extAttrs.write(w), w.reference_token(this.tokens.target, this), w.token(this.tokens.includes), w.reference_token(this.tokens.mixin, this), w.token(this.tokens.termination), ]), { data: this }, ); } }