code: function distance(str1, str2, options_p) {
          /**
           * Calculate levenshtein distance of the two strings.
           *
           * @function distance
           * @param {string} str1 - the first string.
           * @param {string} str2 - the second string.
           * @param {Object} [options_p] - Additional options.
           * @param {boolean} [options_p.useCollator] - Use `Intl.Collator` for locale-sensitive string comparison.
           * @param {boolean} [options_p.full_process] - Apply basic cleanup, non-alphanumeric to whitespace etc. if true. default true
           * @param {boolean} [options_p.force_ascii] - Strip non-ascii in full_process if true (non-ascii will not become whtespace), only applied if full_process is true as well, default true
           * @param {boolean} [options_p.collapseWhitespace] - Collapse consecutive white space during full_process, default true
           * @param {string} [options_p.wildcards] - characters that will be used as wildcards if provided
           * @returns {number} - the levenshtein distance (0 and above).
           */
          var options = _clone_and_set_option_defaults(options_p);
          str1 = options.full_process ? full_process(str1, options) : str1;
          str2 = options.full_process ? full_process(str2, options) : str2;
          if (typeof options.subcost === "undefined") options.subcost = 1;
          if (options.astral) return _iLeven(str1, str2, options, _toArray);
          else return _wildLeven(str1, str2, options, _leven); // falls back to _leven if no wildcards
      }
docs: Mostly follows after python fuzzywuzzy, https://github.com/seatgeek/fuzzywuzzy Public functions