UNPKG

@tripsnek/tmf

Version:

TypeScript Modeling Framework - A TypeScript port of the Eclipse Modeling Framework (EMF)

34 lines (33 loc) 4.71 kB
import { TGenUtils as DU } from './tgen-utils.js'; /** * Source code generation for *impl.ts files for EClasses. * * @tripsnek */ export class TGeneratorImpl { generate(eClass, toImport) { const genClassName = DU.genGenClassName(eClass); const apiClassName = eClass.getName(); const implClassName = DU.genImplClassName(eClass); const isEcore = eClass.getEPackage().getName() == 'ecore'; return ` ${isEcore ? DU.ECORE_DEFAULT_IMPORTS : DU.DEFAULT_IMPORTS} ${DU.genApiImports(eClass, toImport, '..' + DU.API_PATH)} import {${genClassName}} from '..${DU.GEN_PATH}/${DU.genClassGenName(eClass)}.js' import { ${apiClassName} } from '..${DU.API_PATH}/${DU.genClassApiName(eClass)}.js'; /** * Editable Impl class. */ export class ${implClassName} extends ${genClassName}{ ${this.generateOperations(eClass)} }`; } generateOperations(eClass) { let result = ''; for (const eop of eClass.getEOperations()) { result += `public override ${DU.eopSignature(eop)} {throw new Error('Not implemented');}`; } return result; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGdlbmVyYXRvci1pbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zb3VyY2UtZ2VuZXJhdG9ycy90Z2VuZXJhdG9yLWltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsSUFBSSxFQUFFLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdsRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDbEIsUUFBUSxDQUFDLE1BQWMsRUFBRSxRQUEwQjtRQUN4RCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QyxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLE9BQU8sQ0FBQztRQUMxRCxPQUFPO1FBQ0gsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxlQUFlO1FBQ3ZELEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFDOUMsWUFBWSxhQUFhLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FDcEUsTUFBTSxDQUNQO2lCQUNZLFlBQVksY0FBYyxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQ3RFLE1BQU0sQ0FDUDs7Ozs7cUJBS2dCLGFBQWEsWUFBWSxZQUFZO1VBQ2hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFDakMsQ0FBQztJQUNQLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxNQUFjO1FBQ3ZDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxtQkFBbUIsRUFBRSxDQUFDLFlBQVksQ0FDMUMsR0FBRyxDQUNKLHdDQUF3QyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFQ2xhc3MgfSBmcm9tICcuLi9tZXRhbW9kZWwvYXBpL2VjbGFzcy5qcyc7XHJcbmltcG9ydCB7IFRHZW5VdGlscyBhcyBEVSB9IGZyb20gJy4vdGdlbi11dGlscy5qcyc7XHJcbmltcG9ydCB7IEVDbGFzc2lmaWVyIH0gZnJvbSAnLi4vbWV0YW1vZGVsL2FwaS9lY2xhc3NpZmllci5qcyc7XHJcblxyXG4vKipcclxuICogU291cmNlIGNvZGUgZ2VuZXJhdGlvbiBmb3IgKmltcGwudHMgZmlsZXMgZm9yIEVDbGFzc2VzLlxyXG4gKlxyXG4gKiBAdHJpcHNuZWtcclxuICovXHJcbmV4cG9ydCBjbGFzcyBUR2VuZXJhdG9ySW1wbCB7XHJcbiAgcHVibGljIGdlbmVyYXRlKGVDbGFzczogRUNsYXNzLCB0b0ltcG9ydDogU2V0PEVDbGFzc2lmaWVyPik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBnZW5DbGFzc05hbWUgPSBEVS5nZW5HZW5DbGFzc05hbWUoZUNsYXNzKTtcclxuICAgIGNvbnN0IGFwaUNsYXNzTmFtZSA9IGVDbGFzcy5nZXROYW1lKCk7XHJcbiAgICBjb25zdCBpbXBsQ2xhc3NOYW1lID0gRFUuZ2VuSW1wbENsYXNzTmFtZShlQ2xhc3MpO1xyXG4gICAgY29uc3QgaXNFY29yZSA9IGVDbGFzcy5nZXRFUGFja2FnZSgpLmdldE5hbWUoKSA9PSAnZWNvcmUnO1xyXG4gICAgcmV0dXJuIGBcclxuICAgICAgJHtpc0Vjb3JlID8gRFUuRUNPUkVfREVGQVVMVF9JTVBPUlRTIDogRFUuREVGQVVMVF9JTVBPUlRTfVxyXG4gICAgICAke0RVLmdlbkFwaUltcG9ydHMoZUNsYXNzLCB0b0ltcG9ydCwgJy4uJyArIERVLkFQSV9QQVRIKX1cclxuICAgICAgaW1wb3J0IHske2dlbkNsYXNzTmFtZX19IGZyb20gJy4uJHtEVS5HRU5fUEFUSH0vJHtEVS5nZW5DbGFzc0dlbk5hbWUoXHJcbiAgICAgIGVDbGFzc1xyXG4gICAgKX0uanMnXHJcbiAgICAgIGltcG9ydCB7ICR7YXBpQ2xhc3NOYW1lfSB9IGZyb20gJy4uJHtEVS5BUElfUEFUSH0vJHtEVS5nZW5DbGFzc0FwaU5hbWUoXHJcbiAgICAgIGVDbGFzc1xyXG4gICAgKX0uanMnO1xyXG5cclxuICAgICAgIC8qKlxyXG4gICAgICAgICogRWRpdGFibGUgSW1wbCBjbGFzcy5cclxuICAgICAgICAqL1xyXG4gICAgICBleHBvcnQgY2xhc3MgJHtpbXBsQ2xhc3NOYW1lfSBleHRlbmRzICR7Z2VuQ2xhc3NOYW1lfXtcclxuICAgICAgICAke3RoaXMuZ2VuZXJhdGVPcGVyYXRpb25zKGVDbGFzcyl9XHJcbiAgICAgIH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZU9wZXJhdGlvbnMoZUNsYXNzOiBFQ2xhc3MpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xyXG4gICAgZm9yIChjb25zdCBlb3Agb2YgZUNsYXNzLmdldEVPcGVyYXRpb25zKCkpIHtcclxuICAgICAgcmVzdWx0ICs9IGBwdWJsaWMgb3ZlcnJpZGUgJHtEVS5lb3BTaWduYXR1cmUoXHJcbiAgICAgICAgZW9wXHJcbiAgICAgICl9IHt0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO31gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuIl19