Class TemplateSource

java.lang.Object
io.pebbletemplates.pebble.lexer.TemplateSource
All Implemented Interfaces:
CharSequence

public class TemplateSource extends Object implements CharSequence
An implementation of CharSequence that is tuned to be used specifically by LexerImpl. It is possible to advance through the sequence without allocating a copy and it is possible to perform regex matches from the logical beginning of the remaining un-tokenized source. This class will also standardize newline characters from different architectures.
  • Field Details

    • logger

      private final org.slf4j.Logger logger
    • source

      private char[] source
      The characters found within the template.
    • size

      private int size
      Number of characters stored in source array remaining to be tokenized
    • DEFAULT_CAPACITY

      private static final int DEFAULT_CAPACITY
      Default capacity
      See Also:
    • offset

      private int offset
      An index of the first character for the remaining un-tokenized source.
    • lineNumber

      private int lineNumber
      Tracking the line number that we are currently tokenizing.
    • filename

      private final String filename
      Filename of the template
  • Constructor Details

    • TemplateSource

      public TemplateSource(Reader reader, String filename) throws IOException
      Constructor
      Parameters:
      reader - Reader provided by the Loader
      filename - Filename of the template
      Throws:
      IOException - Exceptions thrown from the reader
  • Method Details

    • copyReaderIntoCharArray

      private void copyReaderIntoCharArray(Reader reader) throws IOException
      Read the contents of the template into the internal char[].
      Throws:
      IOException
    • append

      private void append(char[] characters, int amount)
      Append characters to the internal array.
    • ensureCapacity

      private void ensureCapacity(int minCapacity)
      Ensure that the internal array has a minimum capacity.
    • grow

      private void grow(int minCapacity)
      Grow the internal array to at least the desired minimum capacity.
    • advance

      public void advance(int amount)
      Moves the start index a certain amount. While traversing this amount we will count how many newlines have been encountered.
      Parameters:
      amount - Amount of characters to advance by
    • advanceThroughWhitespace

      public void advanceThroughWhitespace()
    • advanceThroughNewline

      private int advanceThroughNewline(int index)
      Advances through possible newline character and returns how many characters were used to represent the newline (windows uses two characters to represent one newline).
      Parameters:
      index - The index of the potential newline character
    • substring

      public String substring(int start, int end)
    • substring

      public String substring(int end)
    • length

      public int length()
      Specified by:
      length in interface CharSequence
    • charAt

      public char charAt(int index)
      Specified by:
      charAt in interface CharSequence
    • subSequence

      public CharSequence subSequence(int start, int end)
      Specified by:
      subSequence in interface CharSequence
    • toString

      public String toString()
      Specified by:
      toString in interface CharSequence
      Overrides:
      toString in class Object
    • getLineNumber

      public int getLineNumber()
    • getFilename

      public String getFilename()