LineScanner.prototype.scan = function()

in loader/lib/Scanner.js [495:532]


LineScanner.prototype.scan = function(spec) {
  var scanner = new Scanner(spec.source, spec.lineStart, this.options);
  var start, isEOL;

  /* Find start of line */
  do {
    start = scanner.i;
    scanner.skipWhitespace();
    if(scanner.isInlineComment()) {
     scanner.skipToEndOfLine();
    }
  } while(scanner.i > start);  // while making progress through the file

  scanner.skipLinePrefix();  // brings us to the end of prefix (if any)
  spec.lineStart = scanner.i;
  spec.lineHasFields = false;

  /* Find end of line; set lineEnd if reached */
  do {
    if(scanner.isFieldSeparator()) {
      if(udebug.is_debug && (! spec.lineHasFields)) {
        udebug.log("lineHasFields - true at pos:", scanner.i);
      }
      spec.lineHasFields = true;
    } else if(scanner.isStartQuote()) {
      scanner.handleQuotedString(false);
    }
    scanner.advance(1);
    isEOL = scanner.isEndOfLine();
  } while(scanner.c && ! isEOL);

  spec.atEnd = scanner.isAtEnd();
  if(isEOL) {
    spec.lineEnd = scanner.i;
  }
  udebug.log("LineScanner.scan returning", scanner.lineCount);
  return scanner.lineCount;
};