UNPKG

@glimmer/compiler

Version:
35 lines (32 loc) 4.4 kB
import { generateSyntaxError } from '@glimmer/syntax'; import { Err } from '../../../../shared/result'; import * as mir from '../../../2-encoding/mir'; import { VISIT_STMTS } from '../statements'; export class ClassifiedSimpleElement { constructor(tag, element, dynamicFeatures) { this.tag = tag; this.element = element; this.dynamicFeatures = dynamicFeatures; this.isComponent = false; } arg(attr) { return Err(generateSyntaxError(`${attr.name.chars} is not a valid attribute name. @arguments are only allowed on components, but the tag for this element (\`${this.tag.chars}\`) is a regular, non-component HTML element.`, attr.loc)); } toStatement(classified, { params }) { let { state, element } = classified; let body = VISIT_STMTS.visitList(this.element.body, state); return body.mapOk(body => new mir.SimpleElement({ loc: element.loc, tag: this.tag, params, body: body.toArray(), dynamicFeatures: this.dynamicFeatures })); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL3Zpc2l0b3JzL2VsZW1lbnQvc2ltcGxlLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBZ0IsbUJBQWhCLFFBQXdELGlCQUF4RDtBQUVBLFNBQVMsR0FBVCxRQUE0QiwyQkFBNUI7QUFDQSxPQUFPLEtBQUssR0FBWixNQUFxQix5QkFBckI7QUFDQSxTQUFTLFdBQVQsUUFBNEIsZUFBNUI7QUFHQSxPQUFNLE1BQU8sdUJBQVAsQ0FBOEI7QUFDbEMsRUFBQSxXQUFBLENBQ1UsR0FEVixFQUVVLE9BRlYsRUFHVyxlQUhYLEVBR21DO0FBRnpCLFNBQUEsR0FBQSxHQUFBLEdBQUE7QUFDQSxTQUFBLE9BQUEsR0FBQSxPQUFBO0FBQ0MsU0FBQSxlQUFBLEdBQUEsZUFBQTtBQUdGLFNBQUEsV0FBQSxHQUFjLEtBQWQ7QUFGTDs7QUFJSixFQUFBLEdBQUcsQ0FBQyxJQUFELEVBQXlCO0FBQzFCLFdBQU8sR0FBRyxDQUNSLG1CQUFtQixDQUNqQixHQUFHLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBSyw4R0FBOEcsS0FBSyxHQUFMLENBQVMsS0FBSywrQ0FEN0gsRUFFakIsSUFBSSxDQUFDLEdBRlksQ0FEWCxDQUFWO0FBTUQ7O0FBRUQsRUFBQSxXQUFXLENBQUMsVUFBRCxFQUFnQztBQUFFLElBQUE7QUFBRixHQUFoQyxFQUF3RDtBQUNqRSxRQUFJO0FBQUUsTUFBQSxLQUFGO0FBQVMsTUFBQTtBQUFULFFBQXFCLFVBQXpCO0FBRUEsUUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLFNBQVosQ0FBc0IsS0FBSyxPQUFMLENBQWEsSUFBbkMsRUFBeUMsS0FBekMsQ0FBWDtBQUVBLFdBQU8sSUFBSSxDQUFDLEtBQUwsQ0FDSixJQUFELElBQ0UsSUFBSSxHQUFHLENBQUMsYUFBUixDQUFzQjtBQUNwQixNQUFBLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FETztBQUVwQixNQUFBLEdBQUcsRUFBRSxLQUFLLEdBRlU7QUFHcEIsTUFBQSxNQUhvQjtBQUlwQixNQUFBLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTCxFQUpjO0FBS3BCLE1BQUEsZUFBZSxFQUFFLEtBQUs7QUFMRixLQUF0QixDQUZHLENBQVA7QUFVRDs7QUFqQ2lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVNUdjIsIGdlbmVyYXRlU3ludGF4RXJyb3IsIFNvdXJjZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcblxuaW1wb3J0IHsgRXJyLCBSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvcmVzdWx0JztcbmltcG9ydCAqIGFzIG1pciBmcm9tICcuLi8uLi8uLi8yLWVuY29kaW5nL21pcic7XG5pbXBvcnQgeyBWSVNJVF9TVE1UUyB9IGZyb20gJy4uL3N0YXRlbWVudHMnO1xuaW1wb3J0IHsgQ2xhc3NpZmllZCwgQ2xhc3NpZmllZEVsZW1lbnQsIFByZXBhcmVkQXJncyB9IGZyb20gJy4vY2xhc3NpZmllZCc7XG5cbmV4cG9ydCBjbGFzcyBDbGFzc2lmaWVkU2ltcGxlRWxlbWVudCBpbXBsZW1lbnRzIENsYXNzaWZpZWQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRhZzogU291cmNlU2xpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBBU1R2Mi5TaW1wbGVFbGVtZW50LFxuICAgIHJlYWRvbmx5IGR5bmFtaWNGZWF0dXJlczogYm9vbGVhblxuICApIHt9XG5cbiAgcmVhZG9ubHkgaXNDb21wb25lbnQgPSBmYWxzZTtcblxuICBhcmcoYXR0cjogQVNUdjIuQ29tcG9uZW50QXJnKTogUmVzdWx0PG1pci5OYW1lZEFyZ3VtZW50PiB7XG4gICAgcmV0dXJuIEVycihcbiAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgIGAke2F0dHIubmFtZS5jaGFyc30gaXMgbm90IGEgdmFsaWQgYXR0cmlidXRlIG5hbWUuIEBhcmd1bWVudHMgYXJlIG9ubHkgYWxsb3dlZCBvbiBjb21wb25lbnRzLCBidXQgdGhlIHRhZyBmb3IgdGhpcyBlbGVtZW50IChcXGAke3RoaXMudGFnLmNoYXJzfVxcYCkgaXMgYSByZWd1bGFyLCBub24tY29tcG9uZW50IEhUTUwgZWxlbWVudC5gLFxuICAgICAgICBhdHRyLmxvY1xuICAgICAgKVxuICAgICk7XG4gIH1cblxuICB0b1N0YXRlbWVudChjbGFzc2lmaWVkOiBDbGFzc2lmaWVkRWxlbWVudCwgeyBwYXJhbXMgfTogUHJlcGFyZWRBcmdzKTogUmVzdWx0PG1pci5TdGF0ZW1lbnQ+IHtcbiAgICBsZXQgeyBzdGF0ZSwgZWxlbWVudCB9ID0gY2xhc3NpZmllZDtcblxuICAgIGxldCBib2R5ID0gVklTSVRfU1RNVFMudmlzaXRMaXN0KHRoaXMuZWxlbWVudC5ib2R5LCBzdGF0ZSk7XG5cbiAgICByZXR1cm4gYm9keS5tYXBPayhcbiAgICAgIChib2R5KSA9PlxuICAgICAgICBuZXcgbWlyLlNpbXBsZUVsZW1lbnQoe1xuICAgICAgICAgIGxvYzogZWxlbWVudC5sb2MsXG4gICAgICAgICAgdGFnOiB0aGlzLnRhZyxcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgYm9keTogYm9keS50b0FycmF5KCksXG4gICAgICAgICAgZHluYW1pY0ZlYXR1cmVzOiB0aGlzLmR5bmFtaWNGZWF0dXJlcyxcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9