📄 ConvertNode.js
¶
📊 Analysis Summary¶
Metric | Count |
---|---|
🔧 Functions | 4 |
🧱 Classes | 1 |
📦 Imports | 1 |
📊 Variables & Constants | 2 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 src/nodes/utils/ConvertNode.js
📦 Imports¶
Name | Source |
---|---|
Node |
../core/Node.js |
Variables & Constants¶
Name | Type | Kind | Value | Exported |
---|---|---|---|---|
convertTo |
any |
let/var | null |
✗ |
node |
Node |
let/var | this.node |
✗ |
Functions¶
ConvertNode.getNodeType(builder: NodeBuilder): string
¶
JSDoc:
/**
* This method is overwritten since the implementation tries to infer the best
* matching type from the {@link ConvertNode#convertTo} property.
*
* @param {NodeBuilder} builder - The current node builder.
* @return {string} The node type.
*/
Parameters:
builder
NodeBuilder
Returns: string
Calls:
this.node.getNodeType
this.convertTo.split
builder.getTypeLength
Code
getNodeType( builder ) {
const requestType = this.node.getNodeType( builder );
let convertTo = null;
for ( const overloadingType of this.convertTo.split( '|' ) ) {
if ( convertTo === null || builder.getTypeLength( requestType ) === builder.getTypeLength( overloadingType ) ) {
convertTo = overloadingType;
}
}
return convertTo;
}
ConvertNode.serialize(data: any): void
¶
Parameters:
data
any
Returns: void
Calls:
super.serialize
ConvertNode.deserialize(data: any): void
¶
Parameters:
data
any
Returns: void
Calls:
super.deserialize
ConvertNode.generate(builder: any, output: any): any
¶
Parameters:
builder
any
output
any
Returns: any
Calls:
this.getNodeType
node.build
builder.format
Code
Classes¶
ConvertNode
¶
Class Code
class ConvertNode extends Node {
static get type() {
return 'ConvertNode';
}
/**
* Constructs a new convert node.
*
* @param {Node} node - The node which type should be converted.
* @param {string} convertTo - The target node type. Multiple types can be defined by separating them with a `|` sign.
*/
constructor( node, convertTo ) {
super();
/**
* The node which type should be converted.
*
* @type {Node}
*/
this.node = node;
/**
* The target node type. Multiple types can be defined by separating them with a `|` sign.
*
* @type {string}
*/
this.convertTo = convertTo;
}
/**
* This method is overwritten since the implementation tries to infer the best
* matching type from the {@link ConvertNode#convertTo} property.
*
* @param {NodeBuilder} builder - The current node builder.
* @return {string} The node type.
*/
getNodeType( builder ) {
const requestType = this.node.getNodeType( builder );
let convertTo = null;
for ( const overloadingType of this.convertTo.split( '|' ) ) {
if ( convertTo === null || builder.getTypeLength( requestType ) === builder.getTypeLength( overloadingType ) ) {
convertTo = overloadingType;
}
}
return convertTo;
}
serialize( data ) {
super.serialize( data );
data.convertTo = this.convertTo;
}
deserialize( data ) {
super.deserialize( data );
this.convertTo = data.convertTo;
}
generate( builder, output ) {
const node = this.node;
const type = this.getNodeType( builder );
const snippet = node.build( builder, type );
return builder.format( snippet, type, output );
}
}
Methods¶
getNodeType(builder: NodeBuilder): string
¶
Code
getNodeType( builder ) {
const requestType = this.node.getNodeType( builder );
let convertTo = null;
for ( const overloadingType of this.convertTo.split( '|' ) ) {
if ( convertTo === null || builder.getTypeLength( requestType ) === builder.getTypeLength( overloadingType ) ) {
convertTo = overloadingType;
}
}
return convertTo;
}