prettycats
Version:
Helpful, common, and curried predicates library built on Ramda.
69 lines (61 loc) • 10.2 kB
JavaScript
;
var R = require('ramda'),
__ = require('./_private.js');
var isString = R.is(String),
isStringOfLength = __.ofLength(String, 'equals'),
isStringOfLengthAtLeast = __.ofLength(String, 'gte'),
isStringOfLengthAtMost = __.ofLength(String, 'lte'),
isStringLongerThan = __.ofLength(String, 'gt'),
isStringShorterThan = __.ofLength(String, 'lt');
var isStringContaining = R.curry(function (subStr, str) {
return R.compose(R.not, R.equals(-1), R.indexOf(subStr))(str);
});
var isStringMatching = R.curry(function (pattern, str) {
return R.test(pattern, str);
});
var stringIsOneOf = R.curry(function (selectionArr, str) {
return R.allPass([R.is(String), R.includes(R.__, selectionArr)])(str);
});
var isStringOfLengthBetween = R.curry(function (min, max, str) {
return R.both(isStringLongerThan(min), isStringShorterThan(max))(str);
});
var isStringOfLengthBetweenInclusive = R.curry(function (min, max, str) {
return R.both(isStringOfLengthAtLeast(min), isStringOfLengthAtMost(max))(str);
});
var isEmail = R.test(/\S+@\S+/);
var isNumericString = function isNumericString(str) {
return isString(str) && !isNaN(parseInt(str, 10));
};
var isTimestamp = R.test(/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/);
var isMySqlTimestamp = R.test(/^([1-2][0-9]{3})-([0-1][0-9])-([0-3][0-9])(?:( [0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/);
var isUUID = R.test(/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/gi);
var isJSON = function isJSON(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return R.is(String, str);
};
module.exports = {
isString: isString,
isStringOfLength: isStringOfLength,
isStringOfLengthAtLeast: isStringOfLengthAtLeast,
isStringOfLengthAtMost: isStringOfLengthAtMost,
isStringLongerThan: isStringLongerThan,
isStringShorterThan: isStringShorterThan,
isStringOfLengthBetween: isStringOfLengthBetween,
isStringOfLengthBetweenInclusive: isStringOfLengthBetweenInclusive,
isStringContaining: isStringContaining,
isStringMatching: isStringMatching,
stringIsOneOf: stringIsOneOf,
isNumericString: isNumericString,
isTimestamp: isTimestamp,
isMySqlTimestamp: isMySqlTimestamp,
isEmail: isEmail,
isJSON: isJSON,
isUUID: isUUID,
isJson: isJSON,
isUuid: isUUID
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9wcmVkaWNhdGVzL3N0cmluZ3MuanMiXSwibmFtZXMiOlsiUiIsInJlcXVpcmUiLCJfXyIsImlzU3RyaW5nIiwiaXMiLCJTdHJpbmciLCJpc1N0cmluZ09mTGVuZ3RoIiwib2ZMZW5ndGgiLCJpc1N0cmluZ09mTGVuZ3RoQXRMZWFzdCIsImlzU3RyaW5nT2ZMZW5ndGhBdE1vc3QiLCJpc1N0cmluZ0xvbmdlclRoYW4iLCJpc1N0cmluZ1Nob3J0ZXJUaGFuIiwiaXNTdHJpbmdDb250YWluaW5nIiwiY3VycnkiLCJzdWJTdHIiLCJzdHIiLCJjb21wb3NlIiwibm90IiwiZXF1YWxzIiwiaW5kZXhPZiIsImlzU3RyaW5nTWF0Y2hpbmciLCJwYXR0ZXJuIiwidGVzdCIsInN0cmluZ0lzT25lT2YiLCJzZWxlY3Rpb25BcnIiLCJhbGxQYXNzIiwiaW5jbHVkZXMiLCJpc1N0cmluZ09mTGVuZ3RoQmV0d2VlbiIsIm1pbiIsIm1heCIsImJvdGgiLCJpc1N0cmluZ09mTGVuZ3RoQmV0d2VlbkluY2x1c2l2ZSIsImlzRW1haWwiLCJpc051bWVyaWNTdHJpbmciLCJpc05hTiIsInBhcnNlSW50IiwiaXNUaW1lc3RhbXAiLCJpc015U3FsVGltZXN0YW1wIiwiaXNVVUlEIiwiaXNKU09OIiwiSlNPTiIsInBhcnNlIiwiZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJpc0pzb24iLCJpc1V1aWQiXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBLElBQU1BLENBQUMsR0FBSUMsT0FBTyxDQUFDLE9BQUQsQ0FBbEI7QUFBQSxJQUNNQyxFQUFFLEdBQUdELE9BQU8sQ0FBQyxlQUFELENBRGxCOztBQUdBLElBQU1FLFFBQVEsR0FBa0JILENBQUMsQ0FBQ0ksRUFBRixDQUFLQyxNQUFMLENBQWhDO0FBQUEsSUFDTUMsZ0JBQWdCLEdBQVVKLEVBQUUsQ0FBQ0ssUUFBSCxDQUFZRixNQUFaLEVBQW9CLFFBQXBCLENBRGhDO0FBQUEsSUFFTUcsdUJBQXVCLEdBQUdOLEVBQUUsQ0FB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VzFCLEdBQVg7QUFDRCxHQUZELENBRUUsT0FBTzJCLENBQVAsRUFBVTtBQUNWLFdBQU8sS0FBUDtBQUNEOztBQUNELFNBQU8xQyxDQUFDLENBQUNJLEVBQUYsQ0FBS0MsTUFBTCxFQUFhVSxHQUFiLENBQVA7QUFDRCxDQVBEOztBQVNBNEIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2Z6QyxFQUFBQSxRQUFRLEVBQVJBLFFBRGU7QUFFZkcsRUFBQUEsZ0JBQWdCLEVBQWhCQSxnQkFGZTtBQUdmRSxFQUFBQSx1QkFBdUIsRUFBdkJBLHVCQUhlO0FBSWZDLEVBQUFBLHNCQUFzQixFQUF0QkEsc0JBSmU7QUFLZkMsRUFBQUEsa0JBQWtCLEVBQWxCQSxrQkFMZTtBQU1mQyxFQUFBQSxtQkFBbUIsRUFBbkJBLG1CQU5lO0FBT2ZnQixFQUFBQSx1QkFBdUIsRUFBdkJBLHVCQVBlO0FBUWZJLEVBQUFBLGdDQUFnQyxFQUFoQ0EsZ0NBUmU7QUFTZm5CLEVBQUFBLGtCQUFrQixFQUFsQkEsa0JBVGU7QUFVZlEsRUFBQUEsZ0JBQWdCLEVBQWhCQSxnQkFWZTtBQVdmRyxFQUFBQSxhQUFhLEVBQWJBLGFBWGU7QUFZZlUsRUFBQUEsZUFBZSxFQUFmQSxlQVplO0FBYWZHLEVBQUFBLFdBQVcsRUFBWEEsV0FiZTtBQWNmQyxFQUFBQSxnQkFBZ0IsRUFBaEJBLGdCQWRlO0FBZWZMLEVBQUFBLE9BQU8sRUFBUEEsT0FmZTtBQWdCZk8sRUFBQUEsTUFBTSxFQUFOQSxNQWhCZTtBQWlCZkQsRUFBQUEsTUFBTSxFQUFOQSxNQWpCZTtBQWtCZk8sRUFBQUEsTUFBTSxFQUFHTixNQWxCTTtBQW1CZk8sRUFBQUEsTUFBTSxFQUFHUjtBQW5CTSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuY29uc3QgUiAgPSByZXF1aXJlKCdyYW1kYScpLFxuICAgICAgX18gPSByZXF1aXJlKCcuL19wcml2YXRlLmpzJyk7XG5cbmNvbnN0IGlzU3RyaW5nICAgICAgICAgICAgICAgID0gUi5pcyhTdHJpbmcpLFxuICAgICAgaXNTdHJpbmdPZkxlbmd0aCAgICAgICAgPSBfXy5vZkxlbmd0aChTdHJpbmcsICdlcXVhbHMnKSxcbiAgICAgIGlzU3RyaW5nT2ZMZW5ndGhBdExlYXN0ID0gX18ub2ZMZW5ndGgoU3RyaW5nLCAnZ3RlJyksXG4gICAgICBpc1N0cmluZ09mTGVuZ3RoQXRNb3N0ICA9IF9fLm9mTGVuZ3RoKFN0cmluZywgJ2x0ZScpLFxuICAgICAgaXNTdHJpbmdMb25nZXJUaGFuICAgICAgPSBfXy5vZkxlbmd0aChTdHJpbmcsICdndCcpLFxuICAgICAgaXNTdHJpbmdTaG9ydGVyVGhhbiAgICAgPSBfXy5vZkxlbmd0aChTdHJpbmcsICdsdCcpO1xuXG5jb25zdCBpc1N0cmluZ0NvbnRhaW5pbmcgPSBSLmN1cnJ5KChzdWJTdHIsIHN0cikgPT4ge1xuICByZXR1cm4gUi5jb21wb3NlKFIubm90LCBSLmVxdWFscygtMSksIFIuaW5kZXhPZihzdWJTdHIpKShzdHIpO1xufSk7XG5cbmNvbnN0IGlzU3RyaW5nTWF0Y2hpbmcgPSBSLmN1cnJ5KChwYXR0ZXJuLCBzdHIpID0+IHtcbiAgcmV0dXJuIFIudGVzdChwYXR0ZXJuLCBzdHIpO1xufSk7XG5cbmNvbnN0IHN0cmluZ0lzT25lT2YgPSBSLmN1cnJ5KChzZWxlY3Rpb25BcnIsIHN0cikgPT4ge1xuICByZXR1cm4gUi5hbGxQYXNzKFtSLmlzKFN0cmluZyksIFIuaW5jbHVkZXMoUi5fXywgc2VsZWN0aW9uQXJyKV0pKHN0cik7XG59KTtcblxuY29uc3QgaXNTdHJpbmdPZkxlbmd0aEJldHdlZW4gPSBSLmN1cnJ5KChtaW4sIG1heCwgc3RyKSA9PiB7XG4gIHJldHVybiBSLmJvdGgoaXNTdHJpbmdMb25nZXJUaGFuKG1pbiksIGlzU3RyaW5nU2hvcnRlclRoYW4obWF4KSkoc3RyKTtcbn0pO1xuXG5jb25zdCBpc1N0cmluZ09mTGVuZ3RoQmV0d2VlbkluY2x1c2l2ZSA9IFIuY3VycnkoKG1pbiwgbWF4LCBzdHIpID0+IHtcbiAgcmV0dXJuIFIuYm90aChpc1N0cmluZ09mTGVuZ3RoQXRMZWFzdChtaW4pLCBpc1N0cmluZ09mTGVuZ3RoQXRNb3N0KG1heCkpKHN0cik7XG59KTtcblxuY29uc3QgaXNFbWFpbCA9IFIudGVzdCgvXFxTK0BcXFMrLyk7XG5cbmNvbnN0IGlzTnVtZXJpY1N0cmluZyA9IHN0ciA9PiBpc1N0cmluZyhzdHIpICYmICFpc05hTihwYXJzZUludChzdHIsIDEwKSk7XG5cbmNvbnN0IGlzVGltZXN0YW1wID0gUi50ZXN0KC8oXFxkezR9LVswMV1cXGQtWzAtM11cXGRUWzAtMl1cXGQ6WzAtNV1cXGQ6WzAtNV1cXGRcXC5cXGQrKFsrLV1bMC0yXVxcZDpbMC01XVxcZHxaKSl8KFxcZHs0fS1bMDFdXFxkLVswLTNdXFxkVFswLTJdXFxkOlswLTVdXFxkOlswLTVdXFxkKFsrLV1bMC0yXVxcZDpbMC01XVxcZHxaKSl8KFxcZHs0fS1bMDFdXFxkLVswLTNdXFxkVFswLTJdXFxkOlswLTVdXFxkKFsrLV1bMC0yXVxcZDpbMC01XVxcZHxaKSkvKTtcblxuY29uc3QgaXNNeVNxbFRpbWVzdGFtcCA9IFIudGVzdCgvXihbMS0yXVswLTldezN9KS0oWzAtMV1bMC05XSktKFswLTNdWzAtOV0pKD86KCBbMC0yXVswLTldKTooWzAtNV1bMC05XSk6KFswLTVdWzAtOV0pKT8kLyk7XG5cbmNvbnN0IGlzVVVJRCA9IFIudGVzdCgvXlswLTlhLWZBLUZdezh9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezEyfSQvZ2kpO1xuXG5jb25zdCBpc0pTT04gPSAoc3RyKSA9PiB7XG4gIHRyeSB7XG4gICAgSlNPTi5wYXJzZShzdHIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBSLmlzKFN0cmluZywgc3RyKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc1N0cmluZyxcbiAgaXNTdHJpbmdPZkxlbmd0aCxcbiAgaXNTdHJpbmdPZkxlbmd0aEF0TGVhc3QsXG4gIGlzU3RyaW5nT2ZMZW5ndGhBdE1vc3QsXG4gIGlzU3RyaW5nTG9uZ2VyVGhhbixcbiAgaXNTdHJpbmdTaG9ydGVyVGhhbixcbiAgaXNTdHJpbmdPZkxlbmd0aEJldHdlZW4sXG4gIGlzU3RyaW5nT2ZMZW5ndGhCZXR3ZWVuSW5jbHVzaXZlLFxuICBpc1N0cmluZ0NvbnRhaW5pbmcsXG4gIGlzU3RyaW5nTWF0Y2hpbmcsXG4gIHN0cmluZ0lzT25lT2YsXG4gIGlzTnVtZXJpY1N0cmluZyxcbiAgaXNUaW1lc3RhbXAsXG4gIGlzTXlTcWxUaW1lc3RhbXAsXG4gIGlzRW1haWwsXG4gIGlzSlNPTixcbiAgaXNVVUlELFxuICBpc0pzb24gOiBpc0pTT04sXG4gIGlzVXVpZCA6IGlzVVVJRFxufTtcbiJdfQ==