UNPKG

takedown

Version:
43 lines (31 loc) 1.11 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var iterate = require('./iterate.js'); var streamer = require('./streamer.js'); function parser ({ document, agentPool, madoe }) { let inlineParser = ({ name, nestable }) => { if (nestable?.length ) { let entity = { name, type: 'inline', nestable }; return source => parse(source, entity).model.chunks } }; let context = { document, inlineParser, madoe }; let agenter = context => { let agent = (...args) => agentPool.get().initialize({ ...context, agent }, ...args); agent.repool = agentPool.renew; return agent; }; let parse = (source, entity) => { let [ stream, streamFn ] = streamer.default(source, madoe[madoe(entity).type]); let get = agenter({ ...context, current: {}, stream, streamFn }); // use `stream` (iterable) to parse `source` into `root` entity return iterate.default(get(entity), stream); }; return parse; } exports.default = parser;