code: function tokenizeSingleQuotedString(sNext, sOption, iAt) {
  		var i;
  
  		function nextChar(bConsume) {
  			var c = sNext[i];
  
  			if (c === "%" && sNext[i + 1] === "2" && sNext[i + 2] === "7") {
  				c = "'";
  				if (bConsume) {
  					i += 2;
  				}
  			}
  			if (bConsume) {
  				i += 1;
  			}
  			return c;
  		}
  
  		for (i = 1; i < sNext.length; ) {
  			if (nextChar(true) === "'") {
  				if (nextChar(false) !== "'") {
  					return sNext.slice(0, i);
  				}
  				nextChar(true); // consume 2nd quote
  			}
  		}
  		throw new SyntaxError("Unterminated string at " + iAt + ": " + sOption);
  	}
docs: Tokenizes a string starting and ending with a single quote (which may be %-encoded).
  A contained single quote is escaped by doubling it.
  
  @param {string} sNext The untokenized input starting with the opening quote
  @param {string} sOption The option string (for an error message)
  @param {number} iAt The position in the option string (for an error message)
  @returns {string} The unconverted string including the quotes.