UNPKG

@quarkly/atomize

Version:

Library for creating atomic react components

64 lines (56 loc) 1.33 kB
var PAIRED_CHARS = [{ open: '"', closed: '"' }, { open: "'", closed: "'" }, { open: '`', closed: '`' }, { open: '(', closed: ')' }, { open: '[', closed: ']' }, { open: '{', closed: '}' }, { open: '/*', closed: '*/' }]; var slash = function slash(string) { return string.replace(/(.)/g, '\\$1'); }; var charList = PAIRED_CHARS.map(function (_ref) { var open = _ref.open, closed = _ref.closed; return closed ? slash(open) + "|" + slash(closed) : "" + slash(open); }).join('|'); var getChar = function getChar(_char) { return PAIRED_CHARS.filter(function (_ref2) { var open = _ref2.open, closed = _ref2.closed; return open === _char || closed === _char; }); }; var validate = function validate(value) { var regexp = new RegExp("(" + charList + ")", 'g'); var matches = value.match(regexp); if (!matches) return true; var notPaired = matches.reduce(function (list, match) { var _getChar = getChar(match), _getChar$ = _getChar[0], open = _getChar$.open, closed = _getChar$.closed; var previous = list[list.length - 1]; if (previous && match === closed && previous === open) { list.pop(); return list; } return [].concat(list, [match]); }, []); return notPaired.length === 0; }; export default validate;