rune-langium / codegen/src/export / GenericModelEmitter
Class: GenericModelEmitter<T>
Defined in: packages/codegen/src/emit/generic-model-emitter.ts:33
Parameterized WholeModelEmitter that wraps any NamespaceEmitter plus a LanguageProfile (019 spec §3.2). Collapses the "per-namespace then aggregate" pattern into one place so individual targets only need to ship a NamespaceEmitter + a Profile.
Dispatch flow:
- Call the inner
NamespaceEmitterfor each namespace withsuppressBoilerplate: trueso shared runtime helpers are emitted once via the Profile's sidecar, not duplicated across per-namespace files. - Resolve the layout (defaults to
'barrel'here — the library default of'per-namespace'is handled one layer up inresolveEmitterbefore reaching this class). - For
'single-file': check the Profile'ssingleFileLimits, then callconcatenate(). Emit a fatal diagnostic if exceeded. - For
'barrel': emit per-namespace outputs + the Profile's barrel + the Profile's sidecars.
Type Parameters
| Type Parameter | Default type |
|---|---|
T extends Target | Target |
Implements
Constructors
Constructor
ts
new GenericModelEmitter<T>(innerCtor, profile): GenericModelEmitter<T>;Defined in: packages/codegen/src/emit/generic-model-emitter.ts:34
Parameters
| Parameter | Type |
|---|---|
innerCtor | NamespaceEmitterConstructor |
profile | LanguageProfile<T> |
Returns
GenericModelEmitter<T>
Methods
emit()
ts
emit(
walks,
registry,
options
): Promise<GeneratorOutput[]>;Defined in: packages/codegen/src/emit/generic-model-emitter.ts:39
Parameters
| Parameter | Type |
|---|---|
walks | ReadonlyMap<string, NamespaceWalkResult> |
registry | NamespaceRegistry |
options | GeneratorOptions |
Returns
Promise<GeneratorOutput[]>