diff options
Diffstat (limited to 'node_modules/locutus/php/var/is_unicode.js')
-rw-r--r-- | node_modules/locutus/php/var/is_unicode.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/node_modules/locutus/php/var/is_unicode.js b/node_modules/locutus/php/var/is_unicode.js new file mode 100644 index 0000000..52b0a94 --- /dev/null +++ b/node_modules/locutus/php/var/is_unicode.js @@ -0,0 +1,39 @@ +'use strict'; + +module.exports = function is_unicode(vr) { + // eslint-disable-line camelcase + // discuss at: http://locutus.io/php/is_unicode/ + // original by: Brett Zamir (http://brett-zamir.me) + // note 1: Almost all strings in JavaScript should be Unicode + // example 1: is_unicode('We the peoples of the United Nations...!') + // returns 1: true + + if (typeof vr !== 'string') { + return false; + } + + // If surrogates occur outside of high-low pairs, then this is not Unicode + var arr = []; + var highSurrogate = '[\uD800-\uDBFF]'; + var lowSurrogate = '[\uDC00-\uDFFF]'; + var highSurrogateBeforeAny = new RegExp(highSurrogate + '([\\s\\S])', 'g'); + var lowSurrogateAfterAny = new RegExp('([\\s\\S])' + lowSurrogate, 'g'); + var singleLowSurrogate = new RegExp('^' + lowSurrogate + '$'); + var singleHighSurrogate = new RegExp('^' + highSurrogate + '$'); + + while ((arr = highSurrogateBeforeAny.exec(vr)) !== null) { + if (!arr[1] || !arr[1].match(singleLowSurrogate)) { + // If high not followed by low surrogate + return false; + } + } + while ((arr = lowSurrogateAfterAny.exec(vr)) !== null) { + if (!arr[1] || !arr[1].match(singleHighSurrogate)) { + // If low not preceded by high surrogate + return false; + } + } + + return true; +}; +//# sourceMappingURL=is_unicode.js.map
\ No newline at end of file |