Pre-release
AdventureJS Docs Downloads
Score: 0 Moves: 0
// lowercaseUnquotedText.js

(function () {
  /* global adventurejs A */

  var p = adventurejs.Parser.prototype;

  /**
   * Set input to lower case, exclusive of any text
   * inside double quotes.
   * Ex: In the phrase 'Say "Hello" to Fred' we want
   * to lowercase Say and Fred but not Hello.
   * @memberOf adventurejs.Parser
   * @method adventurejs.Parser#lowercaseUnquotedText
   * @param {String} input
   * @returns {String}
   */
  p.lowercaseUnquotedText = function Parser_unquotedToLowerCase(input) {
    this.game.log(
      "L1601",
      "log",
      "low",
      `[lowercaseUnquotedText.js] lowercaseUnquotedText() receive: ${input}`,
      "Parser"
    );

    let quoted = false;
    let cased_input = "";

    for (let i = 0; i < input.length; i++) {
      const char = input[i];
      if (char === '"') {
        quoted = !quoted; // Toggle the flag when encountering quotes
      }
      if (quoted) {
        cased_input += char; // Keep the characters inside quotes unchanged
      } else {
        cased_input += char.toLowerCase(); // Convert characters outside quotes to lowercase
      }
    }
    input = cased_input;

    this.game.log(
      "L1602",
      "log",
      "low",
      `[lowercaseUnquotedText.js] lowercaseUnquotedText() return: ${input}`,
      "Parser"
    );
    return input;
  };
})();