part of mustache;

class _Token {
  
  _Token(this.type, this.value, this.start, this.end, {this.indent : ''});
  
  final int type;
  final String value;
  
  final int start;
  final int end;
  
  // Used to store the preceding whitespace before a partial tag, so that
  // it's content can be correctly indented.
  final String indent;
  
  toString() => "${_tokenTypeString(type)}: "
    "\"${value.replaceAll('\n', '\\n')}\"";
}

//FIXME use enums
const int _TEXT = 1;
const int _VARIABLE = 2;
const int _PARTIAL = 3;
const int _OPEN_SECTION = 4;
const int _OPEN_INV_SECTION = 5;
const int _CLOSE_SECTION = 6;
const int _COMMENT = 7;
const int _UNESC_VARIABLE = 8;
const int _WHITESPACE = 9; // Should be filtered out, before returned by scan.
const int _LINE_END = 10; // Should be filtered out, before returned by scan.
const int _CHANGE_DELIMITER = 11;

_tokenTypeString(int type) => [
  '?', 
  'Text',
  'Var',
  'Par',
  'Open',
  'OpenInv',
  'Close',
  'Comment',
  'UnescVar',
  'Whitespace',
  'LineEnd',
  'ChangeDelimiter'][type];
