ContextNode.js 775 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import Node from './Node.js';
  2. class ContextNode extends Node {
  3. constructor( node, parameters = {} ) {
  4. super();
  5. this.node = node;
  6. this.parameters = parameters;
  7. Object.defineProperty( this, 'isContextNode', { value: true } );
  8. }
  9. setParameter( name, value ) {
  10. this.parameters[ name ] = value;
  11. return this;
  12. }
  13. getParameter( name ) {
  14. return this.parameters[ name ];
  15. }
  16. getType( builder ) {
  17. return this.node.getType( builder );
  18. }
  19. generate( builder, output ) {
  20. const previousContext = builder.getContext();
  21. builder.setContext( Object.assign( {}, builder.context, this.parameters ) );
  22. const snippet = this.node.build( builder, output );
  23. builder.setContext( previousContext );
  24. return snippet;
  25. }
  26. }
  27. export default ContextNode;