UNPKG

parser-combinator

Version:
60 lines (50 loc) 1.87 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _index = require('../parsec/index'); function _inQuote() { return _index.C.char('"').then(_index.C.notChar('"').rep().map(function (item) { return item.array(); })).then(_index.C.char('"')); } // accept simon@gmail.com, but also simon"le gr@nd"@gmail.com function email() { var illegalCharSet1 = ' @\xA0\n\t'; var illegalCharSet2 = ' @\xA0\n\t.'; return _inQuote().or(_index.C.charNotIn(illegalCharSet1)).rep().map(function (item) { return item.array(); }) // this mean: repeat(inQuote or anyCharacter) .then(_index.C.char('@')).then(_index.C.charNotIn(illegalCharSet2).rep().map(function (item) { return item.array(); })).then(_index.C.char('.')).then(_index.C.charNotIn(illegalCharSet2).rep().map(function (item) { return item.array(); })).map(function (characters) { return { email: characters.join('') }; }); } function date() { return _index.N.digits.then(_index.C.charIn('-/').thenReturns('-')).then(_index.N.digits).then(_index.C.charIn('-/').thenReturns('-')).then(_index.N.digits).map(function (dateValues) { return dateValues[4] > 2000 ? dateValues.reverse() : dateValues; }).map(function (dateArray) { return dateArray.join(''); }); } function blank() { var charsOrParser = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ' \t'; if (typeof charsOrParser === 'string') { return _index.C.charIn(charsOrParser).optrep().thenReturns(''); } else { return charsOrParser.optrep().thenReturns(''); } } function eol() { return _index.C.char('\n').or(_index.C.string('\r\n')); } exports.default = { email: email, date: date, blank: blank, eol: eol() }; //# sourceMappingURL=token-bundle.js.map