unescape.js 1.1 KB
define(['../internal/baseToString', '../internal/unescapeHtmlChar'], function(baseToString, unescapeHtmlChar) {

  /** Used to match HTML entities and HTML characters. */
  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g,
      reHasEscapedHtml = RegExp(reEscapedHtml.source);

  /**
   * The inverse of `_.escape`; this method converts the HTML entities
   * `&`, `<`, `>`, `"`, `'`, and ``` in `string` to their
   * corresponding characters.
   *
   * **Note:** No other HTML entities are unescaped. To unescape additional HTML
   * entities use a third-party library like [_he_](https://mths.be/he).
   *
   * @static
   * @memberOf _
   * @category String
   * @param {string} [string=''] The string to unescape.
   * @returns {string} Returns the unescaped string.
   * @example
   *
   * _.unescape('fred, barney, & pebbles');
   * // => 'fred, barney, & pebbles'
   */
  function unescape(string) {
    string = baseToString(string);
    return (string && reHasEscapedHtml.test(string))
      ? string.replace(reEscapedHtml, unescapeHtmlChar)
      : string;
  }

  return unescape;
});