UNPKG

parser-combinator

Version:
77 lines (57 loc) 2.25 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _index = require('../../parsec/index'); var _index2 = require('../../stream/index'); var _index3 = _interopRequireDefault(_index2); var _textParser = require('./text-parser'); var _textParser2 = _interopRequireDefault(_textParser); var _token = require('./token'); var _token2 = _interopRequireDefault(_token); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Created by Simon on 24/12/2016. */ function stop() { return _index.F.eos.or(_index.C.charIn('\r\n*`')); } function pureText() { return _index.F.not(stop()).rep().map(function (chars) { return chars.join(''); }); } function formattedSequence() { return _textParser2.default.formattedSequence(pureText(), stop()); } function bulletLv1() { return _index.C.char('\n').optrep().then(_index.C.charIn('*-')) //first character of a bullet is * or - .then(_index.C.charIn(' \xA0')) // second character of a bullet is space or non-breakable space .thenRight(formattedSequence()).map(function (someText) { return { bullet: { level: 1, content: someText.array() } }; }); } function bulletLv2() { return _index.C.char('\n').optrep().then(_token2.default.fourSpacesBlock()).then(_index.C.char(' ').optrep()) //careful. This will accept 8 space. therefore the code-parser must have higher priority .then(_index.C.charIn('*-')) //first character of a bullet is * or - .then(_index.C.charIn(' \xA0')) // second character of a bullet is space or non-breakable space .thenRight(formattedSequence()).map(function (someText) { return { bullet: { level: 2, content: someText.array() } }; }); } function bullet() { return _index.F.try(bulletLv2()).or(bulletLv1()); } function parseBullet(line) { var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; return bullet().parse(_index3.default.ofString(line), offset); } exports.default = { bulletLv1: bulletLv1, bulletLv2: bulletLv2, bullet: bullet, parse: function parse(line) { return parseBullet(line, 0); } }; //# sourceMappingURL=bullet-parser.js.map