summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/strings/htmlspecialchars_decode.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/locutus/php/strings/htmlspecialchars_decode.js')
-rw-r--r--node_modules/locutus/php/strings/htmlspecialchars_decode.js71
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 -&gt; &quot;</p>", 'ENT_NOQUOTES')
+ // returns 1: '<p>this -> &quot;</p>'
+ // example 2: htmlspecialchars_decode("&amp;quot;")
+ // returns 2: '&quot;'
+
+ var optTemp = 0;
+ var i = 0;
+ var noquotes = false;
+
+ if (typeof quoteStyle === 'undefined') {
+ quoteStyle = 2;
+ }
+ string = string.toString().replace(/&lt;/g, '<').replace(/&gt;/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(/&#0*39;/g, "'");
+ // This would also be useful here, but not a part of PHP:
+ // string = string.replace(/&apos;|&#x0*27;/g, "'");
+ }
+ if (!noquotes) {
+ string = string.replace(/&quot;/g, '"');
+ }
+ // Put this in last place to avoid escape being double-decoded
+ string = string.replace(/&amp;/g, '&');
+
+ return string;
+};
+//# sourceMappingURL=htmlspecialchars_decode.js.map \ No newline at end of file