This commit is contained in:
Kunall Banerjee 2017-10-26 19:25:01 +00:00 committed by GitHub
commit 58c2060097
3 changed files with 13 additions and 0 deletions

View file

@ -5,6 +5,7 @@ const toString = Object.prototype.toString;
const getObjectType = x => toString.call(x).slice(8, -1); const getObjectType = x => toString.call(x).slice(8, -1);
const isOfType = type => x => typeof x === type; // eslint-disable-line valid-typeof const isOfType = type => x => typeof x === type; // eslint-disable-line valid-typeof
const isObjectOfType = type => x => getObjectType(x) === type; const isObjectOfType = type => x => getObjectType(x) === type;
const emojiRegex = /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32-\ude3a]|[\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/;
const is = value => { const is = value => {
if (value === null) { if (value === null) {
@ -196,6 +197,7 @@ const isEmptyMapOrSet = x => (is.map(x) || is.set(x)) && x.size === 0;
is.empty = x => is.falsy(x) || isEmptyStringOrArray(x) || isEmptyObject(x) || isEmptyMapOrSet(x); is.empty = x => is.falsy(x) || isEmptyStringOrArray(x) || isEmptyObject(x) || isEmptyMapOrSet(x);
is.emptyOrWhitespace = x => is.empty(x) || isWhiteSpaceString(x); is.emptyOrWhitespace = x => is.empty(x) || isWhiteSpaceString(x);
is.emoji = x => is.string(x) && emojiRegex.test(x);
const predicateOnArray = (method, predicate, values) => { const predicateOnArray = (method, predicate, values) => {
// `values` is the calling function's "arguments object". // `values` is the calling function's "arguments object".

View file

@ -212,6 +212,8 @@ Returns `true` if `value` is an odd integer.
Returns `true` if `value` is falsy or an empty string, array, object, map, or set. Returns `true` if `value` is falsy or an empty string, array, object, map, or set.
##### .emoji(value)
##### .emptyOrWhitespace(value) ##### .emptyOrWhitespace(value)
Returns `true` if `is.empty(value)` or a string that is all whitespace. Returns `true` if `is.empty(value)` or a string that is all whitespace.

View file

@ -504,6 +504,15 @@ test('is.emptyOrWhitespace', t => {
t.false(m.emptyOrWhitespace('unicorn')); t.false(m.emptyOrWhitespace('unicorn'));
}); });
test('is.emoji', t => {
t.true(m.emoji('🙏'));
t.true(m.emoji('👑'));
t.true(m.emoji('\uD83D\uDC04'));
t.true(m.emoji('9⃣'));
t.true(m.emoji('🎌'));
t.false(m.emoji(':unicorn:'));
});
test('is.any', t => { test('is.any', t => {
t.true(m.any(m.string, {}, true, '🦄')); t.true(m.any(m.string, {}, true, '🦄'));
t.true(m.any(m.object, false, {}, 'unicorns')); t.true(m.any(m.object, false, {}, 'unicorns'));