@yellicode/elements
Version:
The meta model API for Yellicode - an extensible code generator.
41 lines (40 loc) • 1.8 kB
TypeScript
import { ModelDelegateImpl } from './model-delegate';
import * as elements from './interfaces';
import * as classes from './classes';
export declare abstract class ElementBuilderBase<TElement extends elements.Element> {
protected element: TElement;
protected modelDelegate: ModelDelegateImpl;
private elementMap;
constructor(element: TElement, modelDelegate: ModelDelegateImpl);
protected addToElementMap(element: elements.Element): void;
}
export declare class PropertyBuilder extends ElementBuilderBase<classes.Property> {
constructor(element: classes.Property, modelDelegate: ModelDelegateImpl);
}
export declare class MemberedClassifierBuilder extends ElementBuilderBase<elements.MemberedClassifier> {
constructor(element: elements.MemberedClassifier, modelDelegate: ModelDelegateImpl);
addAttribute(properties: {
name: string;
id?: string;
}, initFn?: (attribute: PropertyBuilder) => void): this;
}
export declare class InterfaceBuilder extends MemberedClassifierBuilder {
constructor(element: classes.Interface, modelDelegate: ModelDelegateImpl);
}
export declare class ClassBuilder extends MemberedClassifierBuilder {
constructor(element: classes.Class, modelDelegate: ModelDelegateImpl);
}
export declare class PackageBuilder extends ElementBuilderBase<elements.Package> {
constructor(element: classes.Package, modelDelegate: ModelDelegateImpl);
addClass(properties: {
name: string;
id?: string;
}, initFn?: (cls: ClassBuilder) => void): this;
private createPackageableElement;
}
export declare class ModelBuilder extends PackageBuilder {
private model;
private constructor();
static create(name: string): ModelBuilder;
build(): elements.Model;
}