Class TemplateSource
java.lang.Object
io.pebbletemplates.pebble.lexer.TemplateSource
- All Implemented Interfaces:
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 Summary
FieldsModifier and TypeFieldDescriptionprivate static final intDefault capacityprivate final StringFilename of the templateprivate intTracking the line number that we are currently tokenizing.private final org.slf4j.Loggerprivate intAn index of the first character for the remaining un-tokenized source.private intNumber of characters stored in source array remaining to be tokenizedprivate char[]The characters found within the template. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidadvance(int amount) Moves the start index a certain amount.private intadvanceThroughNewline(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).voidprivate voidappend(char[] characters, int amount) Append characters to the internal array.charcharAt(int index) private voidcopyReaderIntoCharArray(Reader reader) Read the contents of the template into the internal char[].private voidensureCapacity(int minCapacity) Ensure that the internal array has a minimum capacity.intprivate voidgrow(int minCapacity) Grow the internal array to at least the desired minimum capacity.intlength()subSequence(int start, int end) substring(int end) substring(int start, int end) toString()Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface CharSequence
chars, codePoints
-
Field Details
-
logger
private final org.slf4j.Logger logger -
source
private char[] sourceThe characters found within the template. -
size
private int sizeNumber of characters stored in source array remaining to be tokenized -
DEFAULT_CAPACITY
private static final int DEFAULT_CAPACITYDefault capacity- See Also:
-
offset
private int offsetAn index of the first character for the remaining un-tokenized source. -
lineNumber
private int lineNumberTracking the line number that we are currently tokenizing. -
filename
Filename of the template
-
-
Constructor Details
-
TemplateSource
Constructor- Parameters:
reader- Reader provided by the Loaderfilename- Filename of the template- Throws:
IOException- Exceptions thrown from the reader
-
-
Method Details
-
copyReaderIntoCharArray
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
-
substring
-
length
public int length()- Specified by:
lengthin interfaceCharSequence
-
charAt
public char charAt(int index) - Specified by:
charAtin interfaceCharSequence
-
subSequence
- Specified by:
subSequencein interfaceCharSequence
-
toString
- Specified by:
toStringin interfaceCharSequence- Overrides:
toStringin classObject
-
getLineNumber
public int getLineNumber() -
getFilename
-