ConvertNode.js 772 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import Node from '../core/Node.js';
  2. class ConvertNode extends Node {
  3. constructor( node, convertTo ) {
  4. super();
  5. this.node = node;
  6. this.convertTo = convertTo;
  7. }
  8. getNodeType( builder ) {
  9. const requestType = this.node.getNodeType( builder );
  10. let convertTo = null;
  11. for ( const overloadingType of this.convertTo.split( '|' ) ) {
  12. if ( convertTo === null || builder.getTypeLength( requestType ) === builder.getTypeLength( overloadingType ) ) {
  13. convertTo = overloadingType;
  14. }
  15. }
  16. return convertTo;
  17. }
  18. generate( builder, output ) {
  19. const node = this.node;
  20. const type = this.getNodeType( builder );
  21. const snippet = node.build( builder, type );
  22. return builder.format( snippet, type, output );
  23. }
  24. }
  25. export default ConvertNode;