Package io.pebbletemplates.pebble.lexer
Class TemplateSource
- java.lang.Object
-
- io.pebbletemplates.pebble.lexer.TemplateSource
-
- All Implemented Interfaces:
java.lang.CharSequence
public class TemplateSource extends java.lang.Object implements java.lang.CharSequence
An implementation of CharSequence that is tuned to be used specifically byLexerImpl
. 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 Summary
Fields Modifier and Type Field Description private static int
DEFAULT_CAPACITY
Default capacityprivate java.lang.String
filename
Filename of the templateprivate int
lineNumber
Tracking the line number that we are currently tokenizing.private org.slf4j.Logger
logger
private int
offset
An index of the first character for the remaining un-tokenized source.private int
size
Number of characters stored in source array remaining to be tokenizedprivate char[]
source
The characters found within the template.
-
Constructor Summary
Constructors Constructor Description TemplateSource(java.io.Reader reader, java.lang.String filename)
Constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
advance(int amount)
Moves the start index a certain amount.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).void
advanceThroughWhitespace()
private void
append(char[] characters, int amount)
Append characters to the internal array.char
charAt(int index)
private void
copyReaderIntoCharArray(java.io.Reader reader)
Read the contents of the template into the internal char[].private void
ensureCapacity(int minCapacity)
Ensure that the internal array has a minimum capacity.java.lang.String
getFilename()
int
getLineNumber()
private void
grow(int minCapacity)
Grow the internal array to at least the desired minimum capacity.int
length()
java.lang.CharSequence
subSequence(int start, int end)
java.lang.String
substring(int end)
java.lang.String
substring(int start, int end)
java.lang.String
toString()
-
-
-
Field Detail
-
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:
- Constant Field Values
-
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 java.lang.String filename
Filename of the template
-
-
Method Detail
-
copyReaderIntoCharArray
private void copyReaderIntoCharArray(java.io.Reader reader) throws java.io.IOException
Read the contents of the template into the internal char[].- Throws:
java.io.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 java.lang.String substring(int start, int end)
-
substring
public java.lang.String substring(int end)
-
length
public int length()
- Specified by:
length
in interfacejava.lang.CharSequence
-
charAt
public char charAt(int index)
- Specified by:
charAt
in interfacejava.lang.CharSequence
-
subSequence
public java.lang.CharSequence subSequence(int start, int end)
- Specified by:
subSequence
in interfacejava.lang.CharSequence
-
toString
public java.lang.String toString()
- Specified by:
toString
in interfacejava.lang.CharSequence
- Overrides:
toString
in classjava.lang.Object
-
getLineNumber
public int getLineNumber()
-
getFilename
public java.lang.String getFilename()
-
-