ContextNode.js 815 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import Node from './Node.js';
  2. class ContextNode extends Node {
  3. constructor( node, context = {} ) {
  4. super();
  5. this.isContextNode = true;
  6. this.node = node;
  7. this.context = context;
  8. }
  9. getNodeType( builder ) {
  10. return this.node.getNodeType( builder );
  11. }
  12. construct( builder ) {
  13. const previousContext = builder.getContext();
  14. builder.setContext( { ...builder.context, ...this.context } );
  15. const node = this.node.build( builder );
  16. builder.setContext( previousContext );
  17. return node;
  18. }
  19. generate( builder, output ) {
  20. const previousContext = builder.getContext();
  21. builder.setContext( { ...builder.context, ...this.context } );
  22. const snippet = this.node.build( builder, output );
  23. builder.setContext( previousContext );
  24. return snippet;
  25. }
  26. }
  27. export default ContextNode;