java.lang.Object
com.google.googlejavaformat.Doc
Direct Known Subclasses:
Doc.Break, Doc.Token

public abstract class Doc extends Object
JavaInputAstVisitor outputs a sequence of Ops using OpsBuilder. This linear sequence is then transformed by DocBuilder into a tree-structured Doc. The top-level Doc is a Doc.Level, which contains a sequence of Docs, including other Doc.Levels. Leaf Docs are Doc.Tokens, representing language-level tokens; Doc.Toks, which may also represent non-token Input.Toks, including comments and other white-space; Doc.Spaces, representing single spaces; and Doc.Breaks, which represent optional line-breaks.
  • Field Details

    • MAX_LINE_WIDTH

      public static final int MAX_LINE_WIDTH
      The maximum supported line width.

      This can be used as a sentinel/threshold for Docs that break unconditionally.

      The value was selected to be obviously too large for any practical line, but small enough to prevent accidental overflow.

      See Also:
  • Constructor Details

    • Doc

      public Doc()
  • Method Details

    • computeBreaks

      public abstract Doc.State computeBreaks(CommentsHelper commentsHelper, int maxWidth, Doc.State state)
      Make breaking decisions for a Doc.
      Parameters:
      maxWidth - the maximum line width
      state - the current output state
      Returns:
      the new output state
    • write

      public abstract void write(Output output)
      Write a Doc to an Output, after breaking decisions have been made.