12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import Node from '../core/Node.js';
- class SplitNode extends Node {
- constructor( node, components = 'x' ) {
- super();
- this.node = node;
- this.components = components;
- }
- getNodeType( builder ) {
- return builder.getTypeFromLength( this.components.length );
- }
- generate( builder ) {
- const node = this.node;
- const nodeTypeLength = builder.getTypeLength( node.getNodeType( builder ) );
- if ( nodeTypeLength > 1 ) {
- const components = this.components;
- let type = null;
- if ( components.length >= nodeTypeLength ) {
- // need expand the input node
- type = this.getNodeType( builder );
- }
- const nodeSnippet = node.build( builder, type );
- return `${nodeSnippet}.${this.components}`;
- } else {
- // ignore components if node is a float
- return node.build( builder );
- }
- }
- }
- export default SplitNode;
|