Package org.codehaus.groovy.ast.expr
Class GStringExpression
java.lang.Object
org.codehaus.groovy.ast.ASTNode
org.codehaus.groovy.ast.AnnotatedNode
org.codehaus.groovy.ast.expr.Expression
org.codehaus.groovy.ast.expr.GStringExpression
- All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>,NodeMetaDataHandler
Represents a GString (interpolated string) expression containing embedded values.
A GString consists of constant string parts and interpolated expression values that are evaluated at runtime.
For example,
"hello there ${user} how are you" contains constant strings and user variable expressions.
The type of a GString expression is always ClassHelper.GSTRING_TYPE.
GStrings are expanded lazily during execution.-
Field Summary
Fields inherited from class org.codehaus.groovy.ast.expr.Expression
EMPTY_ARRAYFields inherited from interface groovy.lang.groovydoc.GroovydocHolder
DOC_COMMENT -
Constructor Summary
ConstructorsConstructorDescriptionGStringExpression(String verbatimText) Creates an empty GString expression with the given verbatim text.GStringExpression(String verbatimText, List<ConstantExpression> strings, List<Expression> values) Creates a GString expression with pre-populated strings and values. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddString(ConstantExpression text) Adds a constant string part to this GString.voidaddValue(Expression value) Adds an interpolated expression (value) to this GString.Converts this GString to a constant string expression by concatenating all string parts.Returns the constant string parts of this GString.getText()Returns a human-readable text representation of this AST node.getValue(int idx) Returns the interpolated expression at the specified index.Returns the interpolated expressions in this GString.booleanIndicates whether this GString contains no interpolated values (only constant strings).toString()transformExpression(ExpressionTransformer transformer) Transforms this expression and any nested expressions according to the provided transformer.voidvisit(GroovyCodeVisitor visitor) Accepts a code visitor for AST traversal and transformation.Methods inherited from class org.codehaus.groovy.ast.expr.Expression
getType, setType, transformExpressions, transformExpressionsMethods inherited from class org.codehaus.groovy.ast.AnnotatedNode
addAnnotation, addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSyntheticMethods inherited from class org.codehaus.groovy.ast.ASTNode
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePositionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler
copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, newMetaDataMap, putNodeMetaData, removeNodeMetaData, setNodeMetaData
-
Constructor Details
-
GStringExpression
Creates an empty GString expression with the given verbatim text.- Parameters:
verbatimText- the original text representation (non-null)
-
GStringExpression
public GStringExpression(String verbatimText, List<ConstantExpression> strings, List<Expression> values) Creates a GString expression with pre-populated strings and values.- Parameters:
verbatimText- the original text representation (non-null)strings- the list of constant string parts (non-null)values- the list of interpolated expressions (non-null)
-
-
Method Details
-
visit
Description copied from class:ASTNodeAccepts a code visitor for AST traversal and transformation. Subclasses must implement this method to support visitor pattern-based processing. The visitor pattern enables decoupling of AST structure from processing logic.- Overrides:
visitin classASTNode- Parameters:
visitor- theGroovyCodeVisitorto process this node
-
transformExpression
Description copied from class:ExpressionTransforms this expression and any nested expressions according to the provided transformer. This method is called during AST transformation phases and must recursively transform any nested expressions to support full AST tree transformation.- Specified by:
transformExpressionin classExpression- Parameters:
transformer- theExpressionTransformerto apply- Returns:
- a transformed copy of this expression (or this expression itself if no changes are needed)
-
toString
-
getText
Description copied from class:ASTNodeReturns a human-readable text representation of this AST node. Used for debugging and error messages. Default implementation returns a message indicating the representation is not yet implemented for this node type. -
getStrings
Returns the constant string parts of this GString. These alternate with the interpolated values in the final string.- Returns:
- a list of constant string expressions (non-null)
-
getValues
Returns the interpolated expressions in this GString. These are evaluated at runtime and converted to strings.- Returns:
- a list of value expressions (non-null)
-
addString
Adds a constant string part to this GString.- Parameters:
text- the constant string expression to add (non-null)- Throws:
NullPointerException- if text is null
-
addValue
Adds an interpolated expression (value) to this GString. If this is the first value being added, an empty string constant is prepended to maintain alternation.- Parameters:
value- the expression to add (non-null)
-
getValue
Returns the interpolated expression at the specified index.- Parameters:
idx- the index of the value- Returns:
- the expression at the specified index
- Throws:
IndexOutOfBoundsException- if the index is out of range
-
isConstantString
public boolean isConstantString()Indicates whether this GString contains no interpolated values (only constant strings).- Returns:
- true if there are no interpolated values, false if there are embedded expressions
-
asConstantString
Converts this GString to a constant string expression by concatenating all string parts. This is only valid ifisConstantString()returns true.- Returns:
- a
ConstantExpressionwith the complete concatenated string value
-