diff options
Diffstat (limited to 'node_modules/locutus/php/strings/htmlspecialchars_decode.js')
-rw-r--r-- | node_modules/locutus/php/strings/htmlspecialchars_decode.js | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/node_modules/locutus/php/strings/htmlspecialchars_decode.js b/node_modules/locutus/php/strings/htmlspecialchars_decode.js new file mode 100644 index 0000000..5609951 --- /dev/null +++ b/node_modules/locutus/php/strings/htmlspecialchars_decode.js @@ -0,0 +1,71 @@ +'use strict'; + +module.exports = function htmlspecialchars_decode(string, quoteStyle) { + // eslint-disable-line camelcase + // discuss at: http://locutus.io/php/htmlspecialchars_decode/ + // original by: Mirek Slugen + // improved by: Kevin van Zonneveld (http://kvz.io) + // bugfixed by: Mateusz "loonquawl" Zalega + // bugfixed by: Onno Marsman (https://twitter.com/onnomarsman) + // bugfixed by: Brett Zamir (http://brett-zamir.me) + // bugfixed by: Brett Zamir (http://brett-zamir.me) + // input by: ReverseSyntax + // input by: Slawomir Kaniecki + // input by: Scott Cariss + // input by: Francois + // input by: Ratheous + // input by: Mailfaker (http://www.weedem.fr/) + // revised by: Kevin van Zonneveld (http://kvz.io) + // reimplemented by: Brett Zamir (http://brett-zamir.me) + // example 1: htmlspecialchars_decode("<p>this -> "</p>", 'ENT_NOQUOTES') + // returns 1: '<p>this -> "</p>' + // example 2: htmlspecialchars_decode("&quot;") + // returns 2: '"' + + var optTemp = 0; + var i = 0; + var noquotes = false; + + if (typeof quoteStyle === 'undefined') { + quoteStyle = 2; + } + string = string.toString().replace(/</g, '<').replace(/>/g, '>'); + var OPTS = { + 'ENT_NOQUOTES': 0, + 'ENT_HTML_QUOTE_SINGLE': 1, + 'ENT_HTML_QUOTE_DOUBLE': 2, + 'ENT_COMPAT': 2, + 'ENT_QUOTES': 3, + 'ENT_IGNORE': 4 + }; + if (quoteStyle === 0) { + noquotes = true; + } + if (typeof quoteStyle !== 'number') { + // Allow for a single string or an array of string flags + quoteStyle = [].concat(quoteStyle); + for (i = 0; i < quoteStyle.length; i++) { + // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 + if (OPTS[quoteStyle[i]] === 0) { + noquotes = true; + } else if (OPTS[quoteStyle[i]]) { + optTemp = optTemp | OPTS[quoteStyle[i]]; + } + } + quoteStyle = optTemp; + } + if (quoteStyle & OPTS.ENT_HTML_QUOTE_SINGLE) { + // PHP doesn't currently escape if more than one 0, but it should: + string = string.replace(/�*39;/g, "'"); + // This would also be useful here, but not a part of PHP: + // string = string.replace(/'|�*27;/g, "'"); + } + if (!noquotes) { + string = string.replace(/"/g, '"'); + } + // Put this in last place to avoid escape being double-decoded + string = string.replace(/&/g, '&'); + + return string; +}; +//# sourceMappingURL=htmlspecialchars_decode.js.map
\ No newline at end of file |