Interface LineAppendable

    • Field Detail

      • F_CONVERT_TABS

        static final int F_CONVERT_TABS
      • F_COLLAPSE_WHITESPACE

        static final int F_COLLAPSE_WHITESPACE
      • F_TRIM_TRAILING_WHITESPACE

        static final int F_TRIM_TRAILING_WHITESPACE
      • F_PASS_THROUGH

        static final int F_PASS_THROUGH
      • F_TRIM_LEADING_WHITESPACE

        static final int F_TRIM_LEADING_WHITESPACE
      • F_TRIM_LEADING_EOL

        static final int F_TRIM_LEADING_EOL
      • F_PREFIX_PRE_FORMATTED

        static final int F_PREFIX_PRE_FORMATTED
      • F_FORMAT_ALL

        static final int F_FORMAT_ALL
      • F_WHITESPACE_REMOVAL

        static final int F_WHITESPACE_REMOVAL
      • CONVERT_TABS

        @Deprecated
        static final int CONVERT_TABS
        Deprecated.
      • COLLAPSE_WHITESPACE

        @Deprecated
        static final int COLLAPSE_WHITESPACE
        Deprecated.
      • TRIM_TRAILING_WHITESPACE

        @Deprecated
        static final int TRIM_TRAILING_WHITESPACE
        Deprecated.
      • PASS_THROUGH

        @Deprecated
        static final int PASS_THROUGH
        Deprecated.
      • ALLOW_LEADING_WHITESPACE

        @Deprecated
        static final int ALLOW_LEADING_WHITESPACE
        Deprecated.
        ALLOW_LEADING_WHITESPACE is now inverted and named F_TRIM_LEADING_WHITESPACE
        See Also:
        Constant Field Values
      • TRIM_LEADING_WHITESPACE

        @Deprecated
        static final int TRIM_LEADING_WHITESPACE
        Deprecated.
      • ALLOW_LEADING_EOL

        @Deprecated
        static final int ALLOW_LEADING_EOL
        Deprecated.
        ALLOW_LEADING_EOL is now inverted and named F_TRIM_LEADING_EOL
        See Also:
        Constant Field Values
      • PREFIX_PRE_FORMATTED

        @Deprecated
        static final int PREFIX_PRE_FORMATTED
        Deprecated.
      • FORMAT_ALL

        @Deprecated
        static final int FORMAT_ALL
        Deprecated.
    • Method Detail

      • getOptions

        default int getOptions()
        Get current options as bit mask flags
        Returns:
        option flags
      • copyAppendable

        @NotNull
        default LineAppendable copyAppendable​(int startLine,
                                              int endLine,
                                              boolean withPrefixes)
        Make a copy of this appendable with the given line range
        Parameters:
        startLine - start line
        endLine - end line
        withPrefixes - true if to include prefixes
        Returns:
        copy of appendable with requested content
      • copyAppendable

        @NotNull
        default LineAppendable copyAppendable​(int startLine,
                                              int endLine)
      • copyAppendable

        @NotNull
        default LineAppendable copyAppendable​(int startLine)
      • copyAppendable

        @NotNull
        default LineAppendable copyAppendable​(boolean withPrefixes)
      • getOptionSet

        @NotNull
        BitFieldSet<LineAppendable.Options> getOptionSet()
        Get current options as set which can be used to modify options
        Returns:
        mutable option set
      • noPreserveSpaces

        @NotNull
        default LineAppendable noPreserveSpaces()
      • removeOptions

        @NotNull
        default LineAppendable removeOptions​(int flags)
      • addOptions

        @NotNull
        default LineAppendable addOptions​(int flags)
      • changeOptions

        @NotNull
        LineAppendable changeOptions​(int addFlags,
                                     int removeFlags)
      • setOptions

        @NotNull
        default LineAppendable setOptions​(int flags)
        Set options on processing text
        Parameters:
        flags - option flags
        Returns:
        this
      • getBuilder

        @NotNull
        ISequenceBuilder<?,​?> getBuilder()
        Get builder used for accumulation
        Returns:
        builder used for accumulation
      • getTrailingBlankLines

        int getTrailingBlankLines​(int endLine)
        Get trailing blank line count ending on given line
        Parameters:
        endLine - end line
        Returns:
        number of trailing blank lines
      • getTrailingBlankLines

        default int getTrailingBlankLines()
      • endsWithEOL

        boolean endsWithEOL()
        Returns:
        true if not empty and have no unterminated lines
      • append

        @NotNull
        LineAppendable append​(@NotNull
                              java.lang.CharSequence csq)
        Specified by:
        append in interface java.lang.Appendable
      • append

        @NotNull
        LineAppendable append​(@NotNull
                              java.lang.CharSequence csq,
                              int start,
                              int end)
        Specified by:
        append in interface java.lang.Appendable
      • append

        @NotNull
        LineAppendable append​(char c)
        Specified by:
        append in interface java.lang.Appendable
      • appendAll

        @NotNull
        default LineAppendable appendAll​(@NotNull
                                         java.lang.Iterable<java.lang.CharSequence> sequences)
      • append

        @NotNull
        LineAppendable append​(@NotNull
                              LineAppendable lineAppendable,
                              int startLine,
                              int endLine,
                              boolean withPrefixes)
        Append lines from another line formatting appendable.

        NOTE: does not apply formatting options. Instead, appends already formatted lines as is

        If there is an accumulating line, it will be terminated by an EOL before appending lines

        Parameters:
        lineAppendable - lines to append, any unterminated lines will be terminated by a line() invocation.
        startLine - start line to append
        endLine - end line to append, endLine is excluded.
        withPrefixes - true if to include prefixes from the lineAppendable.
        Returns:
        this
      • append

        @NotNull
        default LineAppendable append​(@NotNull
                                      LineAppendable lineAppendable)
        Append lines from another line formatting appendable.

        NOTE: does not apply formatting options other than prefix. Line text is used as is.

        If there is an unterminated line its contents will be used as leading text of the first appended line

        Parameters:
        lineAppendable - lines to append
        Returns:
        this
      • append

        @NotNull
        default LineAppendable append​(@NotNull
                                      LineAppendable lineAppendable,
                                      boolean withPrefixes)
        Append lines from another line formatting appendable.

        NOTE: does not apply formatting options other than prefix. Line text is used as is.

        If there is an unterminated line its contents will be used as leading text of the first appended line

        Parameters:
        lineAppendable - lines to append
        withPrefixes - true if to include prefixes from the lineAppendable.
        Returns:
        this
      • line

        @NotNull
        LineAppendable line()
        Add a new line if there was any unterminated text appended or if this is a preformatted region
        Returns:
        this
      • lineWithTrailingSpaces

        @NotNull
        LineAppendable lineWithTrailingSpaces​(int count)
        Add a new line, keep trailing spaces if there was any unterminated text appended

        NOTE: only applies in preformatted region or if the line is not empty

        Parameters:
        count - number of trailing spaces to add
        Returns:
        this
      • lineIf

        @NotNull
        LineAppendable lineIf​(boolean predicate)
        Add a new line, if predicate is true and line() would add an EOL.
        Parameters:
        predicate - call line() if value is true.
        Returns:
        this
      • blankLine

        @NotNull
        LineAppendable blankLine()
        Add a blank line, if there is not one already appended.
        Returns:
        this
      • blankLineIf

        @NotNull
        LineAppendable blankLineIf​(boolean predicate)
        Add a blank line, if predicate is true and there isn't already blank lines appended.
        Parameters:
        predicate - when true append blank line
        Returns:
        this
      • blankLine

        @NotNull
        LineAppendable blankLine​(int count)
        Add a blank lines, if there isn't already given number of blank lines appended. Will append only enough blank lines to increase it to given level. If more are already in the wings then nothing is done.
        Parameters:
        count - number of blank lines to append
        Returns:
        this
      • isPreFormatted

        boolean isPreFormatted()
        Returns:
        true if in pre-formatted region
      • openPreFormatted

        @NotNull
        LineAppendable openPreFormatted​(boolean addPrefixToFirstLine)
        Open preformatted section and suspend content modification
        Parameters:
        addPrefixToFirstLine - if true will add the current prefix to first line
        Returns:
        this
      • closePreFormatted

        @NotNull
        LineAppendable closePreFormatted()
        Close preformatted section and suspend content modification
        Returns:
        this
      • indent

        @NotNull
        LineAppendable indent()
        Increase the indent level, will terminate the current line if there is unterminated text

        NOTE: this is equivalent to pushPrefix(), addPrefix(getIndentPrefix()) but adds a flag to validate that unIndent() is called only on prefixes added by this method

        Returns:
        this
      • unIndent

        @NotNull
        LineAppendable unIndent()
        Decrease the indent level, min level is 0, will terminate the current line if there is unterminated text

        NOTE: this is equivalent to popPrefix() but with validation that it is called only on prefixes added by indent()

        Returns:
        this
      • unIndentNoEol

        @NotNull
        LineAppendable unIndentNoEol()
        Decrease the indent level, if there is unterminated text then unindented prefix is to be applied after the next EOL.

        Will NOT terminate the current line if there is unterminated text

        NOTE: should be used with addIndentOnFirstEOL(Runnable) if callback is invoked

        Returns:
        this
      • getIndentPrefix

        @NotNull
        BasedSequence getIndentPrefix()
        Get prefix appended after a new line character for every indent level
        Returns:
        char sequence of the current indent prefix used for each indent level
      • setIndentPrefix

        @NotNull
        LineAppendable setIndentPrefix​(@Nullable
                                       java.lang.CharSequence prefix)
        Set prefix to append after a new line character for every indent level
        Parameters:
        prefix - prefix characters for new lines appended after this is set
        Returns:
        this
      • getPrefix

        @NotNull
        BasedSequence getPrefix()
        Get prefix being applied to all lines, even in pre-formatted sections This is the prefix that will be set after EOL
        Returns:
        char sequence of the current prefix
      • getBeforeEolPrefix

        @NotNull
        BasedSequence getBeforeEolPrefix()
        Get prefix used before EOL
        Returns:
        char sequence of the current prefix
      • addPrefix

        @NotNull
        LineAppendable addPrefix​(@NotNull
                                 java.lang.CharSequence prefix,
                                 boolean afterEol)
        Add to prefix appended after a new line character for every line and after a new line in pre-formatted sections

        This appends the sequence to current prefix

        Parameters:
        prefix - prefix characters to add to current prefix for new lines appended after this is set
        afterEol - if true prefix will take effect after EOL
        Returns:
        this
      • setPrefix

        @NotNull
        LineAppendable setPrefix​(@Nullable
                                 java.lang.CharSequence prefix,
                                 boolean afterEol)
        Set prefix appended after a new line character for every line and after a new line in pre-formatted sections

        This appends the sequence to current prefix

        Parameters:
        prefix - prefix characters to add to current prefix for new lines appended after this is set
        afterEol - if true prefix will take effect after EOL
        Returns:
        this
      • addPrefix

        @NotNull
        default LineAppendable addPrefix​(@NotNull
                                         java.lang.CharSequence prefix)
        Add to prefix appended after a new line character for every line and after a new line in pre-formatted sections

        This appends the sequence to current prefix

        Parameters:
        prefix - prefix characters to add to current prefix for new lines appended after this is set
        Returns:
        this
      • setPrefix

        @NotNull
        default LineAppendable setPrefix​(@NotNull
                                         java.lang.CharSequence prefix)
        Set prefix appended after a new line character for every line and after a new line in pre-formatted sections

        This appends the sequence to current prefix

        Parameters:
        prefix - prefix characters to add to current prefix for new lines appended after this is set
        Returns:
        this
      • pushPrefix

        @NotNull
        LineAppendable pushPrefix()
        Save the current prefix on the stack
        Returns:
        this
      • popPrefix

        @NotNull
        LineAppendable popPrefix​(boolean afterEol)
        Pop a prefix from the stack and set the current prefix
        Parameters:
        afterEol - if true prefix will take effect after EOL
        Returns:
        this
      • popPrefix

        @NotNull
        default LineAppendable popPrefix()
        Pop a prefix from the stack and set the current prefix
        Returns:
        this
      • getAfterEolPrefixDelta

        int getAfterEolPrefixDelta()
        Get pending prefix after EOL
        Returns:
        change in prefix length after next eol
      • column

        int column()
        Get column offset after last append
        Returns:
        column offset after last append
      • offset

        int offset()
        Get text offset of all output lines, excluding any text for the last line being accumulated
        Returns:
        offset of text as would be returned for all
      • offsetWithPending

        int offsetWithPending()
        Get offset after last append as if EOL was added but without the EOL itself
        Returns:
        offset as would be returned by offset() after line() call less 1 for EOL
      • isPendingSpace

        boolean isPendingSpace()
        Test if trailing text ends in space or tab
        Returns:
        true if ending in space or tab
      • getPendingSpace

        int getPendingSpace()
        Get number of spaces at end of pending text
        Returns:
        number of eols at end of text
      • getPendingEOL

        int getPendingEOL()
        Get number of EOLs at end of appendable, this is actually number of tail blank lines
        Returns:
        number of eols at end of text
      • lineOnFirstText

        @NotNull
        LineAppendable lineOnFirstText​(boolean value)
      • setLineOnFirstText

        @NotNull
        default LineAppendable setLineOnFirstText()
      • clearLineOnFirstText

        @NotNull
        default LineAppendable clearLineOnFirstText()
      • addIndentOnFirstEOL

        @NotNull
        LineAppendable addIndentOnFirstEOL​(@NotNull
                                           java.lang.Runnable listener)
        Add an indent on first EOL appended and run runnable
        Parameters:
        listener - runnable to run if adding indent on first EOL
        Returns:
        this
      • removeIndentOnFirstEOL

        @NotNull
        LineAppendable removeIndentOnFirstEOL​(@NotNull
                                              java.lang.Runnable listener)
        Remove runnable, has no effect if EOL was already appended and runnable was run
        Parameters:
        listener - runnable added with addIndentOnFirstEOL
        Returns:
        this
      • getLineCount

        int getLineCount()
        Get the number of lines appended, not including any unterminated ones
        Returns:
        number of full lines appended
      • isEmpty

        default boolean isEmpty()
        Kotlin compatibility
        Returns:
        true if have no terminated lines
      • isNotEmpty

        default boolean isNotEmpty()
        Kotlin compatibility
        Returns:
        true if have terminated lines
      • getLineCountWithPending

        int getLineCountWithPending()
        Get the number of lines appended, including any unterminated ones

        NOTE: if there is an unterminated line it will be available as the last line, without being terminated explicitly

        Returns:
        number of lines appended
      • getLineInfo

        @NotNull
        LineInfo getLineInfo​(int lineIndex)
        Get Line information at given line index

        NOTE: if there is an unterminated line it will be available as the last line, without being terminated explicitly

        Parameters:
        lineIndex - line index for the info to get
        Returns:
        line info
      • get

        @NotNull
        default LineInfo get​(int lineIndex)
        Kotlin index operator
        Parameters:
        lineIndex - line index
        Returns:
        line info
      • getLine

        @NotNull
        BasedSequence getLine​(int lineIndex)
        Get Line at given line index

        NOTE: if there is an unterminated line it will be available as the last line, without being terminated explicitly

        Parameters:
        lineIndex - line index
        Returns:
        line char sequence
      • iterator

        @NotNull
        java.util.Iterator<LineInfo> iterator()
        Full line iterator NOTE: will not issue line() to terminate any unterminated lines before iteration and will not include unterminated lines in iteration
        Specified by:
        iterator in interface java.lang.Iterable<LineInfo>
        Returns:
        iterator over lines
      • getLines

        @NotNull
        java.lang.Iterable<BasedSequence> getLines​(int maxTrailingBlankLines,
                                                   int startLine,
                                                   int endLine,
                                                   boolean withPrefixes)
        Full line iterator over some lines

        NOTE: will issue line() to terminate any unterminated lines before iteration

        Parameters:
        maxTrailingBlankLines - maximum trailing blank lines, -1 if trailing EOL should be removed
        startLine - start line index
        endLine - end line index, exclusive
        withPrefixes - true if prefixes should be included, else only non-prefix line text
        Returns:
        iterator over lines
      • getLines

        @NotNull
        default java.lang.Iterable<BasedSequence> getLines​(int maxTrailingBlankLines)
      • getLines

        @NotNull
        default java.lang.Iterable<BasedSequence> getLines()
      • getLines

        @NotNull
        default java.lang.Iterable<BasedSequence> getLines​(int maxTrailingBlankLines,
                                                           boolean withPrefixes)
      • getLines

        @NotNull
        default java.lang.Iterable<BasedSequence> getLines​(boolean withPrefixes)
      • getLinesInfo

        @NotNull
        java.lang.Iterable<LineInfo> getLinesInfo​(int maxTrailingBlankLines,
                                                  int startLine,
                                                  int endLine)
        Full line iterator with line info

        NOTE: will issue line() to terminate any unterminated lines before iteration

        Parameters:
        maxTrailingBlankLines - maximum trailing blank lines, -1 if trailing EOL should be removed
        startLine - start line index
        endLine - end line index, exclusive
        Returns:
        iterator over lines
      • getLinesInfo

        @NotNull
        default java.lang.Iterable<LineInfo> getLinesInfo​(int maxTrailingBlankLines)
      • getLinesInfo

        @NotNull
        default java.lang.Iterable<LineInfo> getLinesInfo()
      • getLineContent

        @NotNull
        default BasedSequence getLineContent​(int lineIndex)
        Get Line content of given line
        Parameters:
        lineIndex - line index
        Returns:
        char sequence for the line
      • getLinePrefix

        @NotNull
        default BasedSequence getLinePrefix​(int lineIndex)
        Get prefix of given line
        Parameters:
        lineIndex - line index
        Returns:
        line prefix char sequence
      • setPrefixLength

        void setPrefixLength​(int lineIndex,
                             int prefixLength)
        Change prefix length for a given line without changing the line content
        Parameters:
        lineIndex - index of the line
        prefixLength - new prefix length
      • setLine

        void setLine​(int lineIndex,
                     @NotNull
                     java.lang.CharSequence prefix,
                     @NotNull
                     java.lang.CharSequence text)
        Set content and prefix for a line
        Parameters:
        lineIndex - index of the line
        prefix - prefix of the line
        text - content text of the line
      • insertLine

        void insertLine​(int lineIndex,
                        @NotNull
                        java.lang.CharSequence prefix,
                        @NotNull
                        java.lang.CharSequence text)
        Insert a line at the index with given content and prefix for a line
        Parameters:
        lineIndex - index of the line
        prefix - prefix of the line
        text - content text of the line
      • removeLines

        @NotNull
        LineAppendable removeLines​(int startLine,
                                   int endLine)
      • toString

        @NotNull
        java.lang.String toString​(int maxBlankLines,
                                  int maxTrailingBlankLines,
                                  boolean withPrefixes)
        get the resulting text for all lines
        Parameters:
        maxBlankLines - maximum blank lines to allow in the text
        maxTrailingBlankLines - maximum trailing blank lines
        withPrefixes - true if to include prefixes
        Returns:
        resulting text
      • toString

        @NotNull
        default java.lang.String toString​(int maxBlankLines,
                                          int maxTrailingBlankLines)
      • toString

        @NotNull
        default java.lang.String toString​(int maxBlankLines,
                                          boolean withPrefixes)
      • toString

        @NotNull
        default java.lang.String toString​(boolean withPrefixes)
      • toString

        @NotNull
        default java.lang.String toString​(int maxBlankLines)
        get the resulting text for all lines
        Parameters:
        maxBlankLines - maximum blank lines to allow, if -1 then no trailing EOL will be generated
        Returns:
        resulting text
      • toSequence

        @NotNull
        java.lang.CharSequence toSequence​(int maxBlankLines,
                                          int maxTrailingBlankLines,
                                          boolean withPrefixes)
        get the resulting text for all lines
        Parameters:
        maxBlankLines - maximum blank lines to allow in the text
        maxTrailingBlankLines - maximum trailing blank lines
        withPrefixes - true if to include prefixes
        Returns:
        resulting text
      • toSequence

        @NotNull
        default java.lang.CharSequence toSequence​(int maxBlankLines,
                                                  int maxTrailingBlankLines)
      • toSequence

        @NotNull
        default java.lang.CharSequence toSequence​(int maxBlankLines,
                                                  boolean withPrefixes)
      • toSequence

        @NotNull
        default java.lang.CharSequence toSequence​(boolean withPrefixes)
      • toSequence

        @NotNull
        default java.lang.CharSequence toSequence()
      • appendTo

        @Deprecated
        default <T extends java.lang.Appendable> T appendTo​(@NotNull
                                                            T out,
                                                            int maxTrailingBlankLines)
                                                     throws java.io.IOException
        Deprecated.
        Throws:
        java.io.IOException
      • appendTo

        <T extends java.lang.Appendable> T appendTo​(@NotNull
                                                    T out,
                                                    boolean withPrefixes,
                                                    int maxBlankLines,
                                                    int maxTrailingBlankLines,
                                                    int startLine,
                                                    int endLine)
                                             throws java.io.IOException
        append lines to appendable with given maximum trailing blank lines and given prefix to add to all lines

        NOTE:

        Type Parameters:
        T - type of out
        Parameters:
        out - appendable to output the resulting lines
        withPrefixes - true if to include prefixes
        maxBlankLines - maximum blank lines to allow in the body,
        maxTrailingBlankLines - maximum trailing blank lines at the end, if <maxBlankLines then maxBlankLines will be used, if -1 then no trailing EOL will be added
        startLine - line from which to start output
        endLine - line at which to stop output
        Returns:
        out
        Throws:
        java.io.IOException - if thrown by appendable
      • appendTo

        default <T extends java.lang.Appendable> T appendTo​(@NotNull
                                                            T out,
                                                            int maxBlankLines,
                                                            int maxTrailingBlankLines,
                                                            int startLine,
                                                            int endLine)
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • appendTo

        default <T extends java.lang.Appendable> T appendTo​(@NotNull
                                                            T out,
                                                            int maxBlankLines,
                                                            int maxTrailingBlankLines)
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • appendTo

        default <T extends java.lang.Appendable> T appendTo​(@NotNull
                                                            T out)
                                                     throws java.io.IOException
        append lines to appendable with 0 blank lines, if these are desired at the end of the output use appendTo(Appendable, int, int).
        Type Parameters:
        T - type of out
        Parameters:
        out - appendable to output the resulting lines
        Returns:
        out
        Throws:
        java.io.IOException - thrown by out.
      • appendToSilently

        default <T extends java.lang.Appendable> T appendToSilently​(@NotNull
                                                                    T out,
                                                                    boolean withPrefixes,
                                                                    int maxBlankLines,
                                                                    int maxTrailingBlankLines,
                                                                    int startLine,
                                                                    int endLine)
      • appendToSilently

        default <T extends java.lang.Appendable> T appendToSilently​(@NotNull
                                                                    T out,
                                                                    int maxBlankLines,
                                                                    int maxTrailingBlankLines,
                                                                    int startLine,
                                                                    int endLine)
      • appendToSilently

        default <T extends java.lang.Appendable> T appendToSilently​(@NotNull
                                                                    T out,
                                                                    int maxBlankLines,
                                                                    int maxTrailingBlankLines)
      • appendToSilently

        default <T extends java.lang.Appendable> T appendToSilently​(@NotNull
                                                                    T out)
      • removeExtraBlankLines

        LineAppendable removeExtraBlankLines​(int maxBlankLines,
                                             int maxTrailingBlankLines,
                                             int startLine,
                                             int endLine)
        Normalize the appendable by removing extra blank lines in the body or at the end of given line range
        Parameters:
        maxBlankLines - maximum blank lines to allow in the body
        maxTrailingBlankLines - maximum trailing blank lines ending on endLine, if <maxBlankLines then maxBlankLines will be used
        startLine - line from which to start output
        endLine - line at which to stop output
        Returns:
        this
      • removeExtraBlankLines

        default LineAppendable removeExtraBlankLines​(int maxBlankLines,
                                                     int maxTrailingBlankLines)
      • combinedPrefix

        static java.lang.CharSequence combinedPrefix​(@Nullable
                                                     java.lang.CharSequence prefix,
                                                     @Nullable
                                                     java.lang.CharSequence suffix)