Class 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 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

      Fields 
      Modifier and Type Field Description
      private static int DEFAULT_CAPACITY
      Default capacity
      private java.lang.String filename
      Filename of the template
      private 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 tokenized
      private 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()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.lang.CharSequence

        chars, codePoints
    • 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
    • Constructor Detail

      • TemplateSource

        public TemplateSource​(java.io.Reader reader,
                              java.lang.String filename)
                       throws java.io.IOException
        Constructor
        Parameters:
        reader - Reader provided by the Loader
        filename - Filename of the template
        Throws:
        java.io.IOException - Exceptions thrown from the reader
    • 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 interface java.lang.CharSequence
      • charAt

        public char charAt​(int index)
        Specified by:
        charAt in interface java.lang.CharSequence
      • subSequence

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

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

        public int getLineNumber()
      • getFilename

        public java.lang.String getFilename()