| Leo Repp | 58b9f11 | 2021-11-22 11:57:47 +0100 | [diff] [blame^] | 1 | var toString = require('./toString'), |
| 2 | unescapeHtmlChar = require('./_unescapeHtmlChar'); |
| 3 | |
| 4 | /** Used to match HTML entities and HTML characters. */ |
| 5 | var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, |
| 6 | reHasEscapedHtml = RegExp(reEscapedHtml.source); |
| 7 | |
| 8 | /** |
| 9 | * The inverse of `_.escape`; this method converts the HTML entities |
| 10 | * `&`, `<`, `>`, `"`, and `'` in `string` to |
| 11 | * their corresponding characters. |
| 12 | * |
| 13 | * **Note:** No other HTML entities are unescaped. To unescape additional |
| 14 | * HTML entities use a third-party library like [_he_](https://mths.be/he). |
| 15 | * |
| 16 | * @static |
| 17 | * @memberOf _ |
| 18 | * @since 0.6.0 |
| 19 | * @category String |
| 20 | * @param {string} [string=''] The string to unescape. |
| 21 | * @returns {string} Returns the unescaped string. |
| 22 | * @example |
| 23 | * |
| 24 | * _.unescape('fred, barney, & pebbles'); |
| 25 | * // => 'fred, barney, & pebbles' |
| 26 | */ |
| 27 | function unescape(string) { |
| 28 | string = toString(string); |
| 29 | return (string && reHasEscapedHtml.test(string)) |
| 30 | ? string.replace(reEscapedHtml, unescapeHtmlChar) |
| 31 | : string; |
| 32 | } |
| 33 | |
| 34 | module.exports = unescape; |