summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/strings/substr_compare.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/locutus/php/strings/substr_compare.js')
-rw-r--r--node_modules/locutus/php/strings/substr_compare.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/node_modules/locutus/php/strings/substr_compare.js b/node_modules/locutus/php/strings/substr_compare.js
new file mode 100644
index 0000000..81e09cd
--- /dev/null
+++ b/node_modules/locutus/php/strings/substr_compare.js
@@ -0,0 +1,39 @@
+'use strict';
+
+module.exports = function substr_compare(mainStr, str, offset, length, caseInsensitivity) {
+ // eslint-disable-line camelcase
+ // discuss at: http://locutus.io/php/substr_compare/
+ // original by: Brett Zamir (http://brett-zamir.me)
+ // original by: strcasecmp, strcmp
+ // example 1: substr_compare("abcde", "bc", 1, 2)
+ // returns 1: 0
+
+ if (!offset && offset !== 0) {
+ throw new Error('Missing offset for substr_compare()');
+ }
+
+ if (offset < 0) {
+ offset = mainStr.length + offset;
+ }
+
+ if (length && length > mainStr.length - offset) {
+ return false;
+ }
+ length = length || mainStr.length - offset;
+
+ mainStr = mainStr.substr(offset, length);
+ // Should only compare up to the desired length
+ str = str.substr(0, length);
+ if (caseInsensitivity) {
+ // Works as strcasecmp
+ mainStr = (mainStr + '').toLowerCase();
+ str = (str + '').toLowerCase();
+ if (mainStr === str) {
+ return 0;
+ }
+ return mainStr > str ? 1 : -1;
+ }
+ // Works as strcmp
+ return mainStr === str ? 0 : mainStr > str ? 1 : -1;
+};
+//# sourceMappingURL=substr_compare.js.map \ No newline at end of file