Class MutableInputBuffer

  • All Implemented Interfaces:
    InputBuffer

    public class MutableInputBuffer
    extends Object
    implements InputBuffer
    An InputBuffer wrapping another InputBuffer and providing for the ability to insert (and undo) characters at certain index positions. Inserted chars do not appear in extracted text and have the same positions as the original chars at their indices. Note that this implementation is optimized for a rather small number of insertions and will perform badly with a large number of insertions.
    • Constructor Detail

      • MutableInputBuffer

        public MutableInputBuffer​(InputBuffer buffer)
    • Method Detail

      • charAt

        public char charAt​(int index)
        Description copied from interface: InputBuffer
        Returns the character at the given index. If the index is invalid the method returns Chars.EOI.
        Specified by:
        charAt in interface InputBuffer
        Parameters:
        index - the index
        Returns:
        the character at the given index or Chars.EOI.
      • test

        public boolean test​(int index,
                            char[] characters)
        Description copied from interface: InputBuffer
        Determines whether the characters starting at the given index match the ones from the given array (in order).
        Specified by:
        test in interface InputBuffer
        Parameters:
        index - the index into the input buffer where to start the comparison
        characters - the characters to test against the input buffer
        Returns:
        true if matched
      • getPosition

        public Position getPosition​(int index)
        Description copied from interface: InputBuffer
        Returns the line and column number of the character with the given index encapsulated in a Position object. The very first character has the line number 1 and the column number 1.
        Specified by:
        getPosition in interface InputBuffer
        Parameters:
        index - the index of the character to get the line number of
        Returns:
        the line number
      • getOriginalIndex

        public int getOriginalIndex​(int index)
        Description copied from interface: InputBuffer
        Translates the given index from the scope of this InputBuffer to the scope of the original, underlying char array. The DefaultInputBuffer implementation simply returns the given index, but other implementations like the IndentDedentInputBuffer or the MutableInputBuffer need to "undo" all compressions and index shiftings performed internally in order to return the underlying index.
        Specified by:
        getOriginalIndex in interface InputBuffer
        Parameters:
        index - the index relative to this InputBuffer
        Returns:
        the index relative to the underlying string or char array
      • extractLine

        public String extractLine​(int lineNumber)
        Description copied from interface: InputBuffer
        Constructs a new String containing all characters with the given line number except for the trailing newline.
        Specified by:
        extractLine in interface InputBuffer
        Parameters:
        lineNumber - the line number to get
        Returns:
        the string
      • extract

        public String extract​(int start,
                              int end)
        Description copied from interface: InputBuffer
        Constructs a new String from all character between the given indices. Invalid indices are automatically adjusted to their respective boundary.
        Specified by:
        extract in interface InputBuffer
        Parameters:
        start - the start index (inclusively)
        end - the end index (exclusively)
        Returns:
        a new String (non-interned)
      • extract

        public String extract​(IndexRange range)
        Description copied from interface: InputBuffer
        Constructs a new String from all character covered by the given IndexRange.
        Specified by:
        extract in interface InputBuffer
        Parameters:
        range - the IndexRange
        Returns:
        a new String (non-interned)
      • getLineCount

        public int getLineCount()
        Description copied from interface: InputBuffer
        Returns the number of lines in the input buffer.
        Specified by:
        getLineCount in interface InputBuffer
        Returns:
        number of lines in the input buffer.
      • insertChar

        public void insertChar​(int index,
                               char c)
      • undoCharInsertion

        public char undoCharInsertion​(int index)
      • replaceInsertedChar

        public void replaceInsertedChar​(int index,
                                        char c)