Class CodeWriter

    • Constructor Summary

      Constructors 
      Constructor Description
      CodeWriter()
      Deprecated.
       
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      CodeWriter call​(java.lang.Runnable task)
      Deprecated.
      Allows calling out to arbitrary code for things like looping or conditional writes without breaking method chaining.
      CodeWriter closeBlock​(java.lang.String textAfterNewline, java.lang.Object... args)
      Deprecated.
      Closes a block of syntax by writing a newline, dedenting, then writing text.
      void copySettingsFrom​(CodeWriter other)
      Deprecated.
       
      static CodeWriter createDefault()
      Deprecated.
      Creates a default instance of a CodeWriter that uses "\n" for newlines, flattens multiple successive blank lines into a single blank line, and adds a trailing new line if needed when converting the CodeWriter to a string.
      CodeWriter dedent()
      Deprecated.
      Removes one level of indentation from all lines.
      CodeWriter dedent​(int levels)
      Deprecated.
      Removes a specific number of indentations from all lines.
      CodeWriter disableNewlines()
      Deprecated.
      Disables the automatic appending of newlines in the current state.
      CodeWriter enableNewlines()
      Deprecated.
      Enables the automatic appending of newlines in the current state.
      CodeWriter ensureNewline()
      Deprecated.
      Ensures that the last text written to the writer was a newline as defined in the current state and inserts one if necessary.
      CodeWriter indent()
      Deprecated.
      Indents all text one level.
      CodeWriter indent​(int levels)
      Deprecated.
      Indents all text a specific number of levels.
      CodeWriter insertTrailingNewline()
      Deprecated.
      Configures the AbstractCodeWriter to always append a newline at the end of the text if one is not already present.
      CodeWriter insertTrailingNewline​(boolean trailingNewline)
      Deprecated.
      Configures the AbstractCodeWriter to always append a newline at the end of the text if one is not already present.
      CodeWriter onSection​(java.lang.String sectionName, java.util.function.Consumer<java.lang.Object> interceptor)
      Deprecated.
      Registers a function that intercepts the contents of a section and writes to the AbstractCodeWriter with the updated contents.
      CodeWriter onSectionAppend​(java.lang.String sectionName, java.lang.Runnable writeAfter)
      Deprecated.
      CodeWriter onSectionPrepend​(java.lang.String sectionName, java.lang.Runnable writeBefore)
      Deprecated.
      CodeWriter openBlock​(java.lang.String textBeforeNewline, java.lang.Object... args)
      Deprecated.
      Opens a block of syntax by writing text, a newline, then indenting.
      CodeWriter openBlock​(java.lang.String textBeforeNewline, java.lang.String textAfterNewline, java.lang.Object[] args, java.lang.Runnable f)
      Deprecated.
      Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
      CodeWriter openBlock​(java.lang.String textBeforeNewline, java.lang.String textAfterNewline, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3, java.lang.Object arg4, java.lang.Object arg5, java.lang.Runnable f)
      Deprecated.
      Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
      CodeWriter openBlock​(java.lang.String textBeforeNewline, java.lang.String textAfterNewline, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3, java.lang.Object arg4, java.lang.Runnable f)
      Deprecated.
      Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
      CodeWriter openBlock​(java.lang.String textBeforeNewline, java.lang.String textAfterNewline, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3, java.lang.Runnable f)
      Deprecated.
      Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
      CodeWriter openBlock​(java.lang.String textBeforeNewline, java.lang.String textAfterNewline, java.lang.Object arg1, java.lang.Object arg2, java.lang.Runnable f)
      Deprecated.
      Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
      CodeWriter openBlock​(java.lang.String textBeforeNewline, java.lang.String textAfterNewline, java.lang.Object arg1, java.lang.Runnable f)
      Deprecated.
      Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
      CodeWriter openBlock​(java.lang.String textBeforeNewline, java.lang.String textAfterNewline, java.lang.Runnable f)
      Deprecated.
      Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
      CodeWriter popState()
      Deprecated.
      Pops the current AbstractCodeWriter state from the state stack.
      CodeWriter pushFilteredState​(java.util.function.Function<java.lang.String,​java.lang.String> filter)
      Deprecated.
      Pushes an anonymous named state that is always passed through the given filter function before being written to the writer.
      CodeWriter pushState()
      Deprecated.
      Copies and pushes the current state to the state stack.
      CodeWriter pushState​(java.lang.String sectionName)
      Deprecated.
      Copies and pushes the current state to the state stack using a named state that can be intercepted by functions registered with AbstractCodeWriter.onSection(CodeInterceptor).
      CodeWriter putContext​(java.lang.String key, java.lang.Object value)
      Deprecated.
      Adds a named key-value pair to the context of the current state.
      CodeWriter putContext​(java.util.Map<java.lang.String,​java.lang.Object> mappings)
      Deprecated.
      Adds a map of named key-value pair to the context of the current state.
      CodeWriter putFormatter​(char identifier, java.util.function.BiFunction<java.lang.Object,​java.lang.String,​java.lang.String> formatFunction)
      Deprecated.
      Adds a custom formatter expression to the current state of the AbstractCodeWriter.
      CodeWriter removeContext​(java.lang.String key)
      Deprecated.
      Removes a named key-value pair from the context of the current state.
      CodeWriter setExpressionStart​(char expressionStart)
      Deprecated.
      CodeWriter setIndentText​(java.lang.String indentText)
      Deprecated.
      Sets the text used for indentation (defaults to four spaces).
      CodeWriter setNewline​(char newline)
      Deprecated.
      Sets the character used to represent newlines in the current state ("\n" is the default).
      CodeWriter setNewline​(java.lang.String newline)
      Deprecated.
      Sets the character used to represent newlines in the current state ("\n" is the default).
      CodeWriter setNewlinePrefix​(java.lang.String newlinePrefix)
      Deprecated.
      Sets a prefix to prepend to every line after a new line is added (except for an inserted trailing newline).
      CodeWriter trimBlankLines()
      Deprecated.
      Ensures that no more than one blank line occurs in succession.
      CodeWriter trimBlankLines​(int trimBlankLines)
      Deprecated.
      Ensures that no more than the given number of newlines can occur in succession, removing consecutive newlines that exceed the given threshold.
      CodeWriter trimTrailingSpaces()
      Deprecated.
      Enables the trimming of trailing spaces on a line.
      CodeWriter trimTrailingSpaces​(boolean trimTrailingSpaces)
      Deprecated.
      Configures if trailing spaces on a line are removed.
      CodeWriter unwrite​(java.lang.Object content, java.lang.Object... args)
      Deprecated.
      Remove the most recent text written to the AbstractCodeWriter if and only if the last written text is exactly equal to the given expanded content string.
      CodeWriter write​(java.lang.Object content, java.lang.Object... args)
      Deprecated.
      Writes text to the AbstractCodeWriter and appends a newline.
      CodeWriter writeInline​(java.lang.Object content, java.lang.Object... args)
      Deprecated.
      Writes text to the AbstractCodeWriter without appending a newline.
      CodeWriter writeOptional​(java.lang.Object content)
      Deprecated.
      Optionally writes text to the AbstractCodeWriter and appends a newline if a value is present.
      CodeWriter writeWithNoFormatting​(java.lang.Object content)
      Deprecated.
      Writes text to the AbstractCodeWriter and appends a newline.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • CodeWriter

        public CodeWriter()
        Deprecated.
    • Method Detail

      • createDefault

        public static CodeWriter createDefault()
        Deprecated.
        Creates a default instance of a CodeWriter that uses "\n" for newlines, flattens multiple successive blank lines into a single blank line, and adds a trailing new line if needed when converting the CodeWriter to a string.
        Returns:
        Returns the created and configured CodeWriter.
      • onSectionPrepend

        @Deprecated
        public CodeWriter onSectionPrepend​(java.lang.String sectionName,
                                           java.lang.Runnable writeBefore)
        Deprecated.
        Prepends to the contents of a named section.
        
         writer.onSectionPrepend("foo", () -> {
             writer.write("This text is added before the rest of the section.");
         });
         
        Parameters:
        sectionName - The name of the section to intercept.
        writeBefore - A runnable that prepends to a section by mutating the writer.
        Returns:
        Returns the CodeWriter.
        See Also:
        as an alternative that allows more explicit whitespace handling.
      • onSectionAppend

        @Deprecated
        public CodeWriter onSectionAppend​(java.lang.String sectionName,
                                          java.lang.Runnable writeAfter)
        Deprecated.
        Appends to the contents of a named section.
        
         writer.onSectionAppend("foo", () -> {
             writer.write("This text is added after the rest of the section.");
         });
         
        Parameters:
        sectionName - The name of the section to intercept.
        writeAfter - A runnable that appends to a section by mutating the writer.
        Returns:
        Returns the CodeWriter.
        See Also:
        as an alternative that allows more explicit whitespace handling.
      • putFormatter

        public CodeWriter putFormatter​(char identifier,
                                       java.util.function.BiFunction<java.lang.Object,​java.lang.String,​java.lang.String> formatFunction)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Adds a custom formatter expression to the current state of the AbstractCodeWriter.

        The provided identifier string must match the following ABNF:

         %x21-23    ; ( '!' - '#' )
         / %x25-2F  ; ( '%' - '/' )
         / %x3A-60  ; ( ':' - '`' )
         / %x7B-7E  ; ( '{' - '~' )
         
        Overrides:
        putFormatter in class AbstractCodeWriter<CodeWriter>
        Parameters:
        identifier - Formatter identifier to associate with this formatter.
        formatFunction - Formatter function that formats the given object as a String. The formatter is give the value to format as an object (use .toString to access the string contents) and the current indentation string of the AbstractCodeWriter.
        Returns:
        Returns self.
      • pushState

        public CodeWriter pushState()
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Copies and pushes the current state to the state stack.

        This method is used to prepare for a corresponding AbstractCodeWriter.popState() operation later. It stores the current state of the AbstractCodeWriter into a stack and keeps it active. After pushing, mutations can be made to the state of the AbstractCodeWriter without affecting the previous state on the stack. Changes to the state of the AbstractCodeWriter can be undone by using AbstractCodeWriter.popState(), which Returns self state to the state it was in before calling pushState.

        Overrides:
        pushState in class AbstractCodeWriter<CodeWriter>
        Returns:
        Returns the code writer.
      • pushState

        public CodeWriter pushState​(java.lang.String sectionName)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Copies and pushes the current state to the state stack using a named state that can be intercepted by functions registered with AbstractCodeWriter.onSection(CodeInterceptor).

        The text written while in this state is buffered and passed to each state interceptor. If no text is written by the section or an interceptor, nothing is changed on the AbstractCodeWriter. This behavior allows for placeholder sections to be added into AbstractCodeWriter generators in order to provide extension points that can be otherwise empty.

        Overrides:
        pushState in class AbstractCodeWriter<CodeWriter>
        Parameters:
        sectionName - Name of the section to set on the state.
        Returns:
        Returns the code writer.
      • pushFilteredState

        public CodeWriter pushFilteredState​(java.util.function.Function<java.lang.String,​java.lang.String> filter)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Pushes an anonymous named state that is always passed through the given filter function before being written to the writer.
        Overrides:
        pushFilteredState in class AbstractCodeWriter<CodeWriter>
        Parameters:
        filter - Function that maps over the entire section when popped.
        Returns:
        Returns the code writer.
      • onSection

        public CodeWriter onSection​(java.lang.String sectionName,
                                    java.util.function.Consumer<java.lang.Object> interceptor)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Registers a function that intercepts the contents of a section and writes to the AbstractCodeWriter with the updated contents.

        The interceptor function is expected to have a reference to the AbstractCodeWriter and to mutate it when they are invoked. Each interceptor is invoked in their own isolated pushed/popped states.

        The text provided to interceptor does not contain a trailing new line. A trailing new line is expected to be injected automatically when the results of intercepting the contents are written to the AbstractCodeWriter. A result is only written if the interceptors write a non-null, non-empty string, allowing for empty placeholders to be added that don't affect the resulting layout of the code.

        
         SimpleCodeWriter = new SimpleCodeWriter();
        
         // Prepend text to a section named "foo".
         writer.onSectionPrepend("foo", () -> writer.write("A"));
        
         // Write text to a section, and ensure that the original
         // text is written too.
         writer.onSection("foo", text -> {
             // Write before the original text.
             writer.write("A");
             // Write the original text of the section.
             writer.writeWithNoFormatting(text);
             // Write more text to the section.
             writer.write("C");
         });
        
         // Create the section, write to it, then close the section.
         writer.pushState("foo").write("B").popState();
        
         assert(writer.toString().equals("A\nB\nC\n"));
         

        Newline handling

        This method is a wrapper around AbstractCodeWriter.onSection(CodeInterceptor) that has several limitations:

        The newline handling functionality provided by this method can be reproduced using a CodeInterceptor by removing trailing newlines using AbstractCodeWriter.removeTrailingNewline(String).

        
         SimpleCodeWriter = new SimpleCodeWriter();
        
         CodeInterceptor<CodeSection, SimpleCodeWriter> interceptor = CodeInterceptor.forName(sectionName, (w, p) -> {
             String trimmedContent = removeTrailingNewline(p);
             interceptor.accept(trimmedContent);
         })
        
         writer.onSection(interceptor);
         
        Overrides:
        onSection in class AbstractCodeWriter<CodeWriter>
        Parameters:
        sectionName - The name of the section to intercept.
        interceptor - The function to intercept with.
        Returns:
        Returns self.
      • setNewline

        public CodeWriter setNewline​(java.lang.String newline)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Sets the character used to represent newlines in the current state ("\n" is the default).

        When the provided string is empty (""), then newlines are disabled in the current state. This is exactly equivalent to calling AbstractCodeWriter.disableNewlines(), and does not actually change the newline character of the current state.

        Setting the newline character to a non-empty string implicitly enables newlines in the current state.

        Overrides:
        setNewline in class AbstractCodeWriter<CodeWriter>
        Parameters:
        newline - Newline character to use.
        Returns:
        Returns self.
      • trimTrailingSpaces

        public CodeWriter trimTrailingSpaces​(boolean trimTrailingSpaces)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Configures if trailing spaces on a line are removed.
        Overrides:
        trimTrailingSpaces in class AbstractCodeWriter<CodeWriter>
        Parameters:
        trimTrailingSpaces - Set to true to trim trailing spaces.
        Returns:
        Returns self.
      • trimBlankLines

        public CodeWriter trimBlankLines​(int trimBlankLines)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Ensures that no more than the given number of newlines can occur in succession, removing consecutive newlines that exceed the given threshold.
        Overrides:
        trimBlankLines in class AbstractCodeWriter<CodeWriter>
        Parameters:
        trimBlankLines - Number of allowed consecutive newlines. Set to -1 to perform no trimming. Set to 0 to allow no blank lines. Set to 1 or more to allow for no more than N consecutive blank lines.
        Returns:
        Returns self.
      • insertTrailingNewline

        public CodeWriter insertTrailingNewline()
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Configures the AbstractCodeWriter to always append a newline at the end of the text if one is not already present.

        This setting is not captured as part of push/popState.

        Overrides:
        insertTrailingNewline in class AbstractCodeWriter<CodeWriter>
        Returns:
        Returns self.
      • insertTrailingNewline

        public CodeWriter insertTrailingNewline​(boolean trailingNewline)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Configures the AbstractCodeWriter to always append a newline at the end of the text if one is not already present.

        This setting is not captured as part of push/popState.

        Overrides:
        insertTrailingNewline in class AbstractCodeWriter<CodeWriter>
        Parameters:
        trailingNewline - True if a newline is added.
        Returns:
        Returns self.
      • setNewlinePrefix

        public CodeWriter setNewlinePrefix​(java.lang.String newlinePrefix)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Sets a prefix to prepend to every line after a new line is added (except for an inserted trailing newline).
        Overrides:
        setNewlinePrefix in class AbstractCodeWriter<CodeWriter>
        Parameters:
        newlinePrefix - Newline prefix to use.
        Returns:
        Returns self.
      • dedent

        public CodeWriter dedent​(int levels)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Removes a specific number of indentations from all lines.

        Set to -1 to dedent back to 0 (root).

        Overrides:
        dedent in class AbstractCodeWriter<CodeWriter>
        Parameters:
        levels - Number of levels to remove.
        Returns:
        Returns self.
      • openBlock

        public CodeWriter openBlock​(java.lang.String textBeforeNewline,
                                    java.lang.Object... args)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Opens a block of syntax by writing text, a newline, then indenting.
         
         String result = new SimpleCodeWriter()
                 .openBlock("public final class $L {", "Foo")
                     .openBlock("public void main(String[] args) {")
                         .write("System.out.println(args[0]);")
                     .closeBlock("}")
                 .closeBlock("}")
                 .toString();
         
         
        Overrides:
        openBlock in class AbstractCodeWriter<CodeWriter>
        Parameters:
        textBeforeNewline - Text to write before writing a newline and indenting.
        args - String arguments to use for formatting.
        Returns:
        Returns this.
      • openBlock

        public CodeWriter openBlock​(java.lang.String textBeforeNewline,
                                    java.lang.String textAfterNewline,
                                    java.lang.Runnable f)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
        
         SimpleCodeWriter = new SimpleCodeWriter();
         writer.openBlock("public final class $L {", "}", "Foo", () -> {
             writer.openBlock("public void main(String[] args) {", "}", () -> {
                 writer.write("System.out.println(args[0]);");
             })
         });
         
        Overrides:
        openBlock in class AbstractCodeWriter<CodeWriter>
        Parameters:
        textBeforeNewline - Text to write before writing a newline and indenting.
        textAfterNewline - Text to write after writing a newline and indenting.
        f - Runnable function to execute inside of the block.
        Returns:
        Returns this.
      • openBlock

        public CodeWriter openBlock​(java.lang.String textBeforeNewline,
                                    java.lang.String textAfterNewline,
                                    java.lang.Object arg1,
                                    java.lang.Runnable f)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
        Overrides:
        openBlock in class AbstractCodeWriter<CodeWriter>
        Parameters:
        textBeforeNewline - Text to write before writing a newline and indenting.
        textAfterNewline - Text to write after writing a newline and indenting.
        arg1 - First positional argument to substitute into textBeforeNewline.
        f - Runnable function to execute inside of the block.
        Returns:
        Returns this.
      • openBlock

        public CodeWriter openBlock​(java.lang.String textBeforeNewline,
                                    java.lang.String textAfterNewline,
                                    java.lang.Object arg1,
                                    java.lang.Object arg2,
                                    java.lang.Runnable f)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
        Overrides:
        openBlock in class AbstractCodeWriter<CodeWriter>
        Parameters:
        textBeforeNewline - Text to write before writing a newline and indenting.
        textAfterNewline - Text to write after writing a newline and indenting.
        arg1 - First positional argument to substitute into textBeforeNewline.
        arg2 - Second positional argument to substitute into textBeforeNewline.
        f - Runnable function to execute inside of the block.
        Returns:
        Returns this.
      • openBlock

        public CodeWriter openBlock​(java.lang.String textBeforeNewline,
                                    java.lang.String textAfterNewline,
                                    java.lang.Object arg1,
                                    java.lang.Object arg2,
                                    java.lang.Object arg3,
                                    java.lang.Runnable f)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
        Overrides:
        openBlock in class AbstractCodeWriter<CodeWriter>
        Parameters:
        textBeforeNewline - Text to write before writing a newline and indenting.
        textAfterNewline - Text to write after writing a newline and indenting.
        arg1 - First positional argument to substitute into textBeforeNewline.
        arg2 - Second positional argument to substitute into textBeforeNewline.
        arg3 - Third positional argument to substitute into textBeforeNewline.
        f - Runnable function to execute inside of the block.
        Returns:
        Returns this.
      • openBlock

        public CodeWriter openBlock​(java.lang.String textBeforeNewline,
                                    java.lang.String textAfterNewline,
                                    java.lang.Object arg1,
                                    java.lang.Object arg2,
                                    java.lang.Object arg3,
                                    java.lang.Object arg4,
                                    java.lang.Runnable f)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
        Overrides:
        openBlock in class AbstractCodeWriter<CodeWriter>
        Parameters:
        textBeforeNewline - Text to write before writing a newline and indenting.
        textAfterNewline - Text to write after writing a newline and indenting.
        arg1 - First positional argument to substitute into textBeforeNewline.
        arg2 - Second positional argument to substitute into textBeforeNewline.
        arg3 - Third positional argument to substitute into textBeforeNewline.
        arg4 - Fourth positional argument to substitute into textBeforeNewline.
        f - Runnable function to execute inside of the block.
        Returns:
        Returns this.
      • openBlock

        public CodeWriter openBlock​(java.lang.String textBeforeNewline,
                                    java.lang.String textAfterNewline,
                                    java.lang.Object arg1,
                                    java.lang.Object arg2,
                                    java.lang.Object arg3,
                                    java.lang.Object arg4,
                                    java.lang.Object arg5,
                                    java.lang.Runnable f)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
        Overrides:
        openBlock in class AbstractCodeWriter<CodeWriter>
        Parameters:
        textBeforeNewline - Text to write before writing a newline and indenting.
        textAfterNewline - Text to write after writing a newline and indenting.
        arg1 - First positional argument to substitute into textBeforeNewline.
        arg2 - Second positional argument to substitute into textBeforeNewline.
        arg3 - Third positional argument to substitute into textBeforeNewline.
        arg4 - Fourth positional argument to substitute into textBeforeNewline.
        arg5 - Fifth positional argument to substitute into textBeforeNewline.
        f - Runnable function to execute inside of the block.
        Returns:
        Returns this.
      • openBlock

        public CodeWriter openBlock​(java.lang.String textBeforeNewline,
                                    java.lang.String textAfterNewline,
                                    java.lang.Object[] args,
                                    java.lang.Runnable f)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Opens a block of syntax by writing textBeforeNewline, a newline, then indenting, then executes the given Runnable, then closes the block of syntax by writing a newline, dedenting, then writing textAfterNewline.
        Overrides:
        openBlock in class AbstractCodeWriter<CodeWriter>
        Parameters:
        textBeforeNewline - Text to write before writing a newline and indenting.
        textAfterNewline - Text to write after writing a newline and indenting.
        args - Arguments to substitute into textBeforeNewline.
        f - Runnable function to execute inside of the block.
        Returns:
        Returns this.
      • closeBlock

        public CodeWriter closeBlock​(java.lang.String textAfterNewline,
                                     java.lang.Object... args)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Closes a block of syntax by writing a newline, dedenting, then writing text.
        Overrides:
        closeBlock in class AbstractCodeWriter<CodeWriter>
        Parameters:
        textAfterNewline - Text to write after writing a newline and dedenting.
        args - String arguments to use for formatting.
        Returns:
        Returns this.
      • writeWithNoFormatting

        public CodeWriter writeWithNoFormatting​(java.lang.Object content)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Writes text to the AbstractCodeWriter and appends a newline.

        The provided text does not use any kind of expression formatting.

        Indentation and the newline prefix is only prepended if the writer's cursor is at the beginning of a newline.

        Stack trace comments are written along with the given content if AbstractCodeWriter.enableStackTraceComments(boolean) was called with true.

        Overrides:
        writeWithNoFormatting in class AbstractCodeWriter<CodeWriter>
        Parameters:
        content - Content to write.
        Returns:
        Returns self.
      • call

        public CodeWriter call​(java.lang.Runnable task)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Allows calling out to arbitrary code for things like looping or conditional writes without breaking method chaining.
        Overrides:
        call in class AbstractCodeWriter<CodeWriter>
        Parameters:
        task - Method to invoke.
        Returns:
        Returns this.
      • write

        public CodeWriter write​(java.lang.Object content,
                                java.lang.Object... args)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Writes text to the AbstractCodeWriter and appends a newline.

        The provided text is automatically formatted using variadic arguments.

        Indentation and the newline prefix is only prepended if the writer's cursor is at the beginning of a newline.

        If a subclass overrides this method, it should first perform formatting and then delegate to AbstractCodeWriter.writeWithNoFormatting(java.lang.Object) to perform the actual write.

        Overrides:
        write in class AbstractCodeWriter<CodeWriter>
        Parameters:
        content - Content to write.
        args - String arguments to use for formatting.
        Returns:
        Returns self.
      • writeInline

        public CodeWriter writeInline​(java.lang.Object content,
                                      java.lang.Object... args)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Writes text to the AbstractCodeWriter without appending a newline.

        The provided text is automatically formatted using variadic arguments.

        Indentation and the newline prefix is only prepended if the writer's cursor is at the beginning of a newline.

        If newlines are present in the given string, each of those lines will receive proper indentation.

        If a subclass overrides this method, it should first perform formatting and then delegate to AbstractCodeWriter.writeInlineWithNoFormatting(java.lang.Object) to perform the actual write.

        Overrides:
        writeInline in class AbstractCodeWriter<CodeWriter>
        Parameters:
        content - Content to write.
        args - String arguments to use for formatting.
        Returns:
        Returns self.
      • writeOptional

        public CodeWriter writeOptional​(java.lang.Object content)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Optionally writes text to the AbstractCodeWriter and appends a newline if a value is present.

        If the provided content value is null, nothing is written. If the provided content value is an empty Optional, nothing is written. If the result of calling toString on content results in an empty string, nothing is written. Finally, if the value is a non-empty string, the content is written to the AbstractCodeWriter at the current level of indentation, and a newline is appended.

        Overrides:
        writeOptional in class AbstractCodeWriter<CodeWriter>
        Parameters:
        content - Content to write if present.
        Returns:
        Returns self.
      • unwrite

        public CodeWriter unwrite​(java.lang.Object content,
                                  java.lang.Object... args)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Remove the most recent text written to the AbstractCodeWriter if and only if the last written text is exactly equal to the given expanded content string.

        This can be useful, for example, for use cases like removing trailing commas from lists of values.

        For example, the following will remove ", there." from the end of the AbstractCodeWriter:

        
         SimpleCodeWriter = new SimpleCodeWriter();
         writer.writeInline("Hello, there.");
         writer.unwrite(", there.");
         assert(writer.toString().equals("Hello\n"));
         

        However, the following call to unwrite will do nothing because the last text written to the AbstractCodeWriter does not match:

        
         SimpleCodeWriter = new SimpleCodeWriter();
         writer.writeInline("Hello.");
         writer.unwrite("there.");
         assert(writer.toString().equals("Hello.\n"));
         
        Overrides:
        unwrite in class AbstractCodeWriter<CodeWriter>
        Parameters:
        content - Content to write.
        args - String arguments to use for formatting.
        Returns:
        Returns self.
      • putContext

        public CodeWriter putContext​(java.lang.String key,
                                     java.lang.Object value)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Adds a named key-value pair to the context of the current state.

        These context values can be referenced by named interpolated parameters.

        Overrides:
        putContext in class AbstractCodeWriter<CodeWriter>
        Parameters:
        key - Key to add to the context.
        value - Value to associate with the key.
        Returns:
        Returns self.
      • putContext

        public CodeWriter putContext​(java.util.Map<java.lang.String,​java.lang.Object> mappings)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Adds a map of named key-value pair to the context of the current state.

        These context values can be referenced by named interpolated parameters.

        Overrides:
        putContext in class AbstractCodeWriter<CodeWriter>
        Parameters:
        mappings - Key value pairs to add.
        Returns:
        Returns self.
      • removeContext

        public CodeWriter removeContext​(java.lang.String key)
        Deprecated.
        Description copied from class: AbstractCodeWriter
        Removes a named key-value pair from the context of the current state.

        This method has no effect if the parent state defines the context key value pair.

        Overrides:
        removeContext in class AbstractCodeWriter<CodeWriter>
        Parameters:
        key - Key to add to remove from the current context.
        Returns:
        Returns self.