Scanner.prototype.handleQuotedString = function()

in loader/lib/Scanner.js [345:383]


Scanner.prototype.handleQuotedString = function(doEval) {
  if(udebug.is_debug) { doEval = true; }
  var inquote, value, consume, scanner;
  if(doEval)  {
    scanner = this;
    value = "";
    consume = function() { value += scanner.c; };
  } else {
    consume = function() {};
  }

  assert(this.c === this.opt.fieldQuoteStart);

  inquote = true;
  do {
    this.advance(1);

    if(this.isQuote() && (this.c === this.peek())) {      /**** Doubled quote */
      consume();       /* CONSUME A QUOTE */
      this.advance(2); /* SKIP PAST A QUOTE */
    }
    else if(this.c === this.opt.fieldQuoteEnd) {          /**** Closing quote */
      // this.advance(1); /* ADVANCE PAST CLOSING QUOTE CHAR */
      inquote = false; /* TERMINATE LOOP */
    }
    else if(this.isEsc()) {                               /** Escape Sequence */
      this.advance(1); /* SKIP PAST ESCAPE CHAR */
      if(this.isQuote()) {                     // quote
        consume();
        this.advance(1);
      }
    }
    else {                                                /* Normal character */
      consume();
    }
  } while(inquote && this.c);

  return value;
};