12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import { injectable, inject } from 'inversify';
- import { ServiceIdentifiers } from '../container/ServiceIdentifiers';
- import { ICustomNode } from '../interfaces/custom-nodes/ICustomNode';
- import { IOptions } from '../interfaces/options/IOptions';
- import { TStatement } from '../types/node/TStatement';
- import { NodeUtils } from '../node/NodeUtils';
- @injectable()
- export abstract class AbstractCustomNode implements ICustomNode {
- /**
- * @type {string}
- */
- protected cachedCode: string;
- /**
- * @type {TStatement[]}
- */
- protected cachedNode: TStatement[];
- /**
- * @type {IOptions}
- */
- protected readonly options: IOptions;
- /**
- * @param options
- */
- constructor (
- @inject(ServiceIdentifiers.IOptions) options: IOptions
- ) {
- this.options = options;
- }
- /**
- * @param args
- */
- public abstract initialize (...args: any[]): void;
- /**
- * @returns {string}
- */
- public getCode (): string {
- if (!this.cachedCode) {
- this.cachedCode = NodeUtils.convertStructureToCode(this.getNode());
- }
- return this.cachedCode;
- }
- /**
- * @returns {TStatement[]}
- */
- public getNode (): TStatement[] {
- if (!this.cachedNode) {
- this.cachedNode = this.getNodeStructure();
- }
- return this.cachedNode;
- }
- /**
- * @returns {TStatement[]}
- */
- protected abstract getNodeStructure (): TStatement[];
- }
|