BinaryExpressionFunctionNode.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { injectable, inject } from 'inversify';
  2. import { ServiceIdentifiers } from '../../../container/ServiceIdentifiers';
  3. import * as format from 'string-template';
  4. import { IOptions } from '../../../interfaces/options/IOptions';
  5. import { initializable } from '../../../decorators/Initializable';
  6. import { BinaryExpressionFunctionTemplate } from '../../../templates/custom-nodes/control-flow-replacers-nodes/binary-expression-control-flow-replacer-nodes/BinaryExpressionFunctionTemplate';
  7. import { AbstractCustomNode } from '../../AbstractCustomNode';
  8. import { RandomGeneratorUtils } from '../../../utils/RandomGeneratorUtils';
  9. @injectable()
  10. export class BinaryExpressionFunctionNode extends AbstractCustomNode {
  11. /**
  12. * @type {string}
  13. */
  14. @initializable()
  15. private operator: string;
  16. /**
  17. * @param options
  18. */
  19. constructor (
  20. @inject(ServiceIdentifiers.IOptions) options: IOptions
  21. ) {
  22. super(options);
  23. }
  24. /**
  25. * @param operator
  26. */
  27. public initialize (operator: string): void {
  28. this.operator = operator;
  29. }
  30. /**
  31. * @returns {string}
  32. */
  33. protected getTemplate (): string {
  34. return format(BinaryExpressionFunctionTemplate(), {
  35. functionName: RandomGeneratorUtils.getRandomVariableName(1),
  36. operator: this.operator
  37. });
  38. }
  39. }