StackItem.d.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import { MmlNode } from '../../core/MmlTree/MmlNode.js';
  2. import { FactoryNodeClass } from '../../core/Tree/Factory.js';
  3. import StackItemFactory from './StackItemFactory.js';
  4. export declare type EnvProp = string | number | boolean;
  5. export declare type EnvList = {
  6. [key: string]: EnvProp;
  7. };
  8. export declare type Prop = string | number | boolean | MmlNode | PropList;
  9. export declare type PropList = {
  10. [key: string]: Prop;
  11. };
  12. export declare type CheckType = [(MmlNode | StackItem)[], boolean];
  13. export interface NodeStack {
  14. First: MmlNode;
  15. Last: MmlNode;
  16. Pop(): MmlNode | void;
  17. Push(...nodes: MmlNode[]): void;
  18. Peek(n?: number): MmlNode[];
  19. Size(): number;
  20. Clear(): void;
  21. toMml(inferred?: boolean, forceRow?: boolean): MmlNode;
  22. }
  23. export declare abstract class MmlStack implements NodeStack {
  24. private _nodes;
  25. constructor(_nodes: MmlNode[]);
  26. protected get nodes(): MmlNode[];
  27. Push(...nodes: MmlNode[]): void;
  28. Pop(): MmlNode;
  29. get First(): MmlNode;
  30. set First(node: MmlNode);
  31. get Last(): MmlNode;
  32. set Last(node: MmlNode);
  33. Peek(n?: number): MmlNode[];
  34. Size(): number;
  35. Clear(): void;
  36. protected abstract get factory(): StackItemFactory;
  37. toMml(inferred?: boolean, forceRow?: boolean): MmlNode;
  38. create(kind: string, ...rest: any[]): MmlNode;
  39. }
  40. export interface StackItem extends NodeStack {
  41. kind: string;
  42. isClose: boolean;
  43. isOpen: boolean;
  44. isFinal: boolean;
  45. global: EnvList;
  46. env: EnvList;
  47. copyEnv: boolean;
  48. isKind(kind: string): boolean;
  49. getProperty(key: string): Prop;
  50. setProperty(key: string, value: Prop): StackItem;
  51. setProperties(def: PropList): StackItem;
  52. getName(): string;
  53. checkItem(item: StackItem): CheckType;
  54. }
  55. export interface StackItemClass extends FactoryNodeClass<StackItem> {
  56. }
  57. export declare abstract class BaseItem extends MmlStack implements StackItem {
  58. protected factory: StackItemFactory;
  59. protected static fail: CheckType;
  60. protected static success: CheckType;
  61. protected static errors: {
  62. [key: string]: string[];
  63. };
  64. global: EnvList;
  65. private _env;
  66. private _properties;
  67. constructor(factory: StackItemFactory, ...nodes: MmlNode[]);
  68. get kind(): string;
  69. get env(): EnvList;
  70. set env(value: EnvList);
  71. get copyEnv(): boolean;
  72. getProperty(key: string): Prop;
  73. setProperty(key: string, value: Prop): this;
  74. get isOpen(): boolean;
  75. get isClose(): boolean;
  76. get isFinal(): boolean;
  77. isKind(kind: string): boolean;
  78. checkItem(item: StackItem): CheckType;
  79. clearEnv(): void;
  80. setProperties(def: PropList): this;
  81. getName(): string;
  82. toString(): string;
  83. getErrors(kind: string): string[];
  84. }