regexp.prototype.flags
Advanced tools
Comparing version 1.3.2 to 1.4.0
@@ -8,2 +8,9 @@ # Changelog | ||
## [v1.4.0](https://github.com/es-shims/RegExp.prototype.flags/compare/v1.3.2...v1.4.0) - 2022-01-13 | ||
### Commits | ||
- [Tests] use `available-regexp-flags` [`95af246`](https://github.com/es-shims/RegExp.prototype.flags/commit/95af2463f1373282087528f8566e20ffae26c3db) | ||
- [New] add `hasIndices`/`d` flag [`89959ca`](https://github.com/es-shims/RegExp.prototype.flags/commit/89959ca1128ea48dcd0ec1416355264425fa3bc5) | ||
## [v1.3.2](https://github.com/es-shims/RegExp.prototype.flags/compare/v1.3.1...v1.3.2) - 2022-01-13 | ||
@@ -10,0 +17,0 @@ |
@@ -11,2 +11,5 @@ 'use strict'; | ||
var result = ''; | ||
if (this.hasIndices) { | ||
result += 'd'; | ||
} | ||
if (this.global) { | ||
@@ -13,0 +16,0 @@ result += 'g'; |
{ | ||
"name": "regexp.prototype.flags", | ||
"version": "1.3.2", | ||
"version": "1.4.0", | ||
"author": "Jordan Harband <ljharb@gmail.com>", | ||
@@ -50,5 +50,7 @@ "funding": { | ||
"auto-changelog": "^2.3.0", | ||
"available-regexp-flags": "^1.0.0", | ||
"covert": "^1.1.1", | ||
"eclint": "^2.8.1", | ||
"eslint": "^8.6.0", | ||
"foreach": "^2.0.5", | ||
"functions-have-names": "^1.2.2", | ||
@@ -55,0 +57,0 @@ "has": "^1.0.3", |
@@ -6,9 +6,12 @@ 'use strict'; | ||
var forEach = require('foreach'); | ||
var availableFlags = require('available-regexp-flags'); | ||
var regexProperties = require('available-regexp-flags/properties'); | ||
var sortedFlags = availableFlags.slice().sort(function (a, b) { return a.localeCompare(b); }).join(''); | ||
var getRegexLiteral = function (stringRegex) { | ||
try { | ||
/* jshint evil: true */ | ||
/* eslint-disable no-new-func */ | ||
// eslint-disable-next-line no-new-func | ||
return Function('return ' + stringRegex + ';')(); | ||
/* eslint-enable no-new-func */ | ||
/* jshint evil: false */ | ||
} catch (e) { /**/ } | ||
@@ -25,20 +28,11 @@ return null; | ||
t.test('sticky flag', { skip: !has(RegExp.prototype, 'sticky') }, function (st) { | ||
st.equal(flags(getRegexLiteral('/a/y')), 'y', 'flags(/a/y) !== "y"'); | ||
st.equal(flags(new RegExp('a', 'y')), 'y', 'flags(new RegExp("a", "y")) !== "y"'); | ||
st.end(); | ||
forEach(availableFlags, function (flag) { | ||
var property = regexProperties[flag]; | ||
t.test(property + ' flag', function (st) { | ||
st.equal(flags(getRegexLiteral('/a/' + flag)), flag, 'flags(/a/' + flag + ') !== ' + inspect(flag)); | ||
st.equal(flags(new RegExp('a', flag)), flag, 'flags(new RegExp("a", ' + inspect(flag) + ')) !== ' + inspect(flag)); | ||
st.end(); | ||
}); | ||
}); | ||
t.test('unicode flag', { skip: !has(RegExp.prototype, 'unicode') }, function (st) { | ||
st.equal(flags(getRegexLiteral('/a/u')), 'u', 'flags(/a/u) !== "u"'); | ||
st.equal(flags(new RegExp('a', 'u')), 'u', 'flags(new RegExp("a", "u")) !== "u"'); | ||
st.end(); | ||
}); | ||
t.test('dotAll flag', { skip: !has(RegExp.prototype, 'dotAll') }, function (st) { | ||
st.equal(flags(getRegexLiteral('/a/s')), 's', 'flags(/a/s) !== "s"'); | ||
st.equal(flags(new RegExp('a', 's')), 's', 'flags(new RegExp("a", "s")) !== "s"'); | ||
st.end(); | ||
}); | ||
t.test('sorting', function (st) { | ||
@@ -57,2 +51,10 @@ st.equal(flags(/a/gim), 'gim', 'flags(/a/gim) !== "gim"'); | ||
} | ||
var randomFlags = availableFlags.slice().sort(function () { return Math.random() > 0.5 ? 1 : -1; }).join(''); | ||
st.equal( | ||
flags(getRegexLiteral('/a/' + randomFlags)), | ||
sortedFlags, | ||
'random: flags(/a/' + randomFlags + ') === ' + inspect(sortedFlags) | ||
); | ||
st.end(); | ||
@@ -77,2 +79,8 @@ }); | ||
var obj = {}; | ||
forEach(availableFlags, function (flag) { | ||
obj[regexProperties[flag]] = true; | ||
}); | ||
st.equal(flags(obj), sortedFlags, 'an object with every available flag: ' + sortedFlags); | ||
st.end(); | ||
@@ -79,0 +87,0 @@ }); |
34000
229
16