index.js
function Lexer(str, options) {
  options = options || {};
  if (typeof str !== 'string') {
    throw new Error('Expected source code to be a string but got "' + (typeof str) + '"')
  }
  if (typeof options !== 'object') {
    throw new Error('Expected "options" to be an object but got "' + (typeof options) + '"')
  }
  //Strip any UTF-8 BOM off of the start of `str`, if it exists.
  str = str.replace(/^\uFEFF/, '');
  this.input = str.replace(/\r\n|\r/g, '\n');
  this.originalInput = this.input;
  this.filename = options.filename;
  this.interpolated = options.interpolated || false;
  this.lineno = options.startingLine || 1;
  this.colno = options.startingColumn || 1;
  this.plugins = options.plugins || [];
  this.indentStack = [0];
  this.indentRe = null;
  // If #{} or !{} syntax is allowed when adding text
  this.interpolationAllowed = true;

  this.tokens = [];
  this.ended = false;
}
function Lexer(str, options) {
  options = options || {};
  if (typeof str !== 'string') {
    throw new Error('Expected source code to be a string but got "' + (typeof str) + '"')
  }
  if (typeof options !== 'object') {
    throw new Error('Expected "options" to be an object but got "' + (typeof options) + '"')
  }
  //Strip any UTF-8 BOM off of the start of `str`, if it exists.
  str = str.replace(/^\uFEFF/, '');
  this.input = str.replace(/\r\n|\r/g, '\n');
  this.originalInput = this.input;
  this.filename = options.filename;
  this.interpolated = options.interpolated || false;
  this.lineno = options.startingLine || 1;
  this.colno = options.startingColumn || 1;
  this.plugins = options.plugins || [];
  this.indentStack = [0];
  this.indentRe = null;
  // If #{} or !{} syntax is allowed when adding text
  this.interpolationAllowed = true;

  this.tokens = [];
  this.ended = false;
}
function Lexer ( str , options ) { options = options || { } ; if ( typeof str !== 'string' ) { throw new Error ( 'Expected source code to be a string but got "' + ( typeof str ) + '"' ) } if ( typeof options !== 'object' ) { throw new Error ( 'Expected "options" to be an object but got "' + ( typeof options ) + '"' ) } //Strip any UTF-8 BOM off of the start of `str`, if it exists. str = str . replace ( / ^\uFEFF / , '' ) ; this . input = str . replace ( / \r\n|\r / g , '\n' ) ; this . originalInput = this . input ; this . filename = options . filename ; this . interpolated = options . interpolated || false ; this . lineno = options . startingLine || 1 ; this . colno = options . startingColumn || 1 ; this . plugins = options . plugins || [ ] ; this . indentStack = [ 0 ] ; this . indentRe = null ; // If #{} or !{} syntax is allowed when adding text this . interpolationAllowed = true ; this . tokens = [ ] ; this . ended = false ; }
Initialize `Lexer` with the given `str`.

@param {String} str
@param {String} filename
@api private
Initialize Lexer with the given str .