UnicodeArrayCallsWrapper.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import 'format-unicorn';
  2. import { INode } from "../../interfaces/nodes/INode";
  3. import { IOptions } from "../../interfaces/IOptions";
  4. import { TNodeWithBlockStatement } from "../../types/TNodeWithBlockStatement";
  5. import { AppendState } from "../../enums/AppendState";
  6. import { UnicodeArrayCallsWrapperTemplate } from "../../templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayCallsWrapperTemplate";
  7. import { AbstractCustomNode } from '../AbstractCustomNode';
  8. import { NodeUtils } from "../../NodeUtils";
  9. import { UnicodeArray } from "../../UnicodeArray";
  10. import { Utils } from "../../Utils";
  11. export class UnicodeArrayCallsWrapper extends AbstractCustomNode {
  12. /**
  13. * @type {AppendState}
  14. */
  15. protected appendState: AppendState = AppendState.AfterObfuscation;
  16. /**
  17. * @type {UnicodeArray}
  18. */
  19. private unicodeArray: UnicodeArray;
  20. /**
  21. * @type {string}
  22. */
  23. private unicodeArrayName: string;
  24. /**
  25. * @type {string}
  26. */
  27. private unicodeArrayCallsWrapperName: string;
  28. /**
  29. * @param unicodeArrayCallsWrapperName
  30. * @param unicodeArrayName
  31. * @param unicodeArray
  32. * @param options
  33. */
  34. constructor (
  35. unicodeArrayCallsWrapperName: string,
  36. unicodeArrayName: string,
  37. unicodeArray: UnicodeArray,
  38. options: IOptions
  39. ) {
  40. super(options);
  41. this.unicodeArrayCallsWrapperName = unicodeArrayCallsWrapperName;
  42. this.unicodeArrayName = unicodeArrayName;
  43. this.unicodeArray = unicodeArray;
  44. }
  45. /**
  46. * @param blockScopeNode
  47. */
  48. public appendNode (blockScopeNode: TNodeWithBlockStatement): void {
  49. if (!this.unicodeArray.getLength()) {
  50. return;
  51. }
  52. NodeUtils.insertNodeAtIndex(blockScopeNode.body, this.getNode(), 1);
  53. }
  54. /**
  55. * @returns {string}
  56. */
  57. public getNodeIdentifier (): string {
  58. return this.unicodeArrayCallsWrapperName;
  59. };
  60. /**
  61. * @returns {INode}
  62. */
  63. public getNode (): INode {
  64. return super.getNode();
  65. }
  66. /**
  67. * @returns {INode}
  68. */
  69. protected getNodeStructure (): INode {
  70. let keyName: string = Utils.getRandomVariableName();
  71. return NodeUtils.convertCodeToStructure(
  72. UnicodeArrayCallsWrapperTemplate().formatUnicorn({
  73. keyName: keyName,
  74. unicodeArrayCallsWrapperName: this.unicodeArrayCallsWrapperName,
  75. unicodeArrayName: this.unicodeArrayName
  76. })
  77. );
  78. }
  79. }