Class LexicalPreservingPrinter
java.lang.Object
com.github.javaparser.printer.lexicalpreservation.LexicalPreservingPrinter
The LexicalPreservingPrinter is responsible for maintaining the original formatting
and layout of Java source code when the Abstract Syntax Tree (AST) is modified.
This printer works by:
1. Storing the original textual representation alongside the AST nodes
2. Tracking changes made to the AST through a sophisticated change tracking system
3. Applying only the necessary modifications while preserving unchanged portions
4. Maintaining original spacing, comments, and formatting wherever possible
The lexical preservation is essential for code refactoring tools that need to
modify code while maintaining its original style and readability.
Usage Pattern:
1. Setup lexical preservation on a CompilationUnit before making changes
2. Modify the AST as needed
3. Use this printer to generate the modified source code with preserved formatting
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final DataKey<com.github.javaparser.printer.lexicalpreservation.NodeText> The nodetext for a node is stored in the node's data field. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic booleanisAvailableOn(Node node) static StringPrints the given node to a string while preserving the original formatting where possible and applying changes where the AST has been modified.static <N extends Node>
Nsetup(N node) Initializes lexical preservation for the given CompilationUnit.
-
Field Details
-
NODE_TEXT_DATA
public static final DataKey<com.github.javaparser.printer.lexicalpreservation.NodeText> NODE_TEXT_DATAThe nodetext for a node is stored in the node's data field. This is the key to set and retrieve it.
-
-
Constructor Details
-
LexicalPreservingPrinter
public LexicalPreservingPrinter()
-
-
Method Details
-
setup
Initializes lexical preservation for the given CompilationUnit. This method must be called before making any modifications to the AST if you want to preserve the original formatting. The setup process involves: 1. Parsing the original source code into tokens 2. Creating NodeText representations for each AST node 3. Establishing relationships between tokens and nodes 4. Setting up change observers to track future modifications- Parameters:
cu- The CompilationUnit to setup for lexical preservation- Returns:
- The same CompilationUnit with lexical preservation enabled
-
isAvailableOn
-
print
Prints the given node to a string while preserving the original formatting where possible and applying changes where the AST has been modified. This method analyzes the changes made to the AST since lexical preservation was setup and generates output that: - Preserves original formatting for unchanged portions - Applies appropriate formatting for new or modified content - Maintains consistency with the original code style- Parameters:
node- The node to print (typically a CompilationUnit)- Returns:
- A string representation of the node with preserved formatting
-