Class LexicalPreservingPrinter

java.lang.Object
com.github.javaparser.printer.lexicalpreservation.LexicalPreservingPrinter

public class LexicalPreservingPrinter extends Object
A Lexical Preserving Printer is used to capture all the lexical information while parsing, update them when operating on the AST and then used them to reproduce the source code in its original formatting including the AST changes.
  • Field Details

    • JAVA_UTIL_OPTIONAL

      private static String JAVA_UTIL_OPTIONAL
    • JAVAPARSER_AST_NODELIST

      private static String JAVAPARSER_AST_NODELIST
    • observer

      private static AstObserver observer
    • NODE_TEXT_DATA

      public static final DataKey<NodeText> NODE_TEXT_DATA
      The nodetext for a node is stored in the node's data field. This is the key to set and retrieve it.
    • LEXICAL_DIFFERENCE_CALCULATOR

      private static final LexicalDifferenceCalculator LEXICAL_DIFFERENCE_CALCULATOR
  • Constructor Details

    • LexicalPreservingPrinter

      public LexicalPreservingPrinter()
  • Method Details

    • setup

      public static <N extends Node> N setup(N node)
      Prepares the node so it can be used in the print methods. The correct order is:
      1. Parse some code
      2. Call this setup method on the result
      3. Make changes to the AST as desired
      4. Use one of the print methods on this class to print out the original source code with your changes added
      Returns:
      the node passed as a parameter for your convenience.
    • isAvailableOn

      public static boolean isAvailableOn(Node node)
    • createObserver

      private static AstObserver createObserver()
    • storeInitialText

      private static void storeInitialText(Node root)
    • findNodeForToken

      private static Optional<Node> findNodeForToken(Node node, Range tokenRange)
    • storeInitialTextForOneNode

      private static void storeInitialTextForOneNode(Node node, List<JavaToken> nodeTokens)
    • tokensPreceeding

      private static Iterator<TokenTextElement> tokensPreceeding(Node node)
    • print

      public static String print(Node node)
      Print a Node into a String, preserving the lexical information.
    • prettyPrintingTextNode

      private static void prettyPrintingTextNode(Node node, NodeText nodeText)
    • interpret

      private static NodeText interpret(Node node, CsmElement csm, NodeText nodeText)
      TODO: Process CsmIndent and CsmUnindent before reaching this point
    • getOrCreateNodeText

      static NodeText getOrCreateNodeText(Node node)
    • findIndentation

      static List<TextElement> findIndentation(Node node)
    • isReturningOptionalNodeList

      private static boolean isReturningOptionalNodeList(Method m)
    • findNodeListName

      private static ObservableProperty findNodeListName(NodeList<?> nodeList)