59 lines
2.1 KiB
JavaScript
59 lines
2.1 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = exports.collect = void 0;
|
|
var _plugin = _interopRequireDefault(require("../plugin"));
|
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
/** @module */
|
|
|
|
/**
|
|
* Marpit collect plugin.
|
|
*
|
|
* Collect parsed tokens per slide and comments except marked as used for
|
|
* internally. These will store to lastSlideTokens and lastComments member of
|
|
* Marpit instance. It would use in the returned object from
|
|
* {@link Marpit#render}.
|
|
*
|
|
* @function collect
|
|
* @param {MarkdownIt} md markdown-it instance.
|
|
*/
|
|
function _collect(md) {
|
|
const {
|
|
marpit
|
|
} = md;
|
|
md.core.ruler.push('marpit_collect', state => {
|
|
if (state.inlineMode) return;
|
|
marpit.lastComments = [];
|
|
marpit.lastSlideTokens = [];
|
|
let currentPage;
|
|
let pageIdx = -1;
|
|
const collectComment = token => {
|
|
if (currentPage >= 0 && !(token.meta && token.meta.marpitCommentParsed !== undefined)) marpit.lastComments[currentPage].push(token.content);
|
|
};
|
|
const collectable = () => currentPage >= 0 && marpit.lastSlideTokens[currentPage] !== undefined;
|
|
for (const token of state.tokens) {
|
|
if (token.meta && token.meta.marpitSlideElement === 1) {
|
|
pageIdx += 1;
|
|
currentPage = pageIdx;
|
|
if (marpit.lastSlideTokens[currentPage] === undefined) {
|
|
marpit.lastSlideTokens[currentPage] = [token];
|
|
marpit.lastComments[currentPage] = [];
|
|
}
|
|
} else if (token.meta && token.meta.marpitSlideElement === -1) {
|
|
if (collectable()) marpit.lastSlideTokens[currentPage].push(token);
|
|
currentPage = undefined;
|
|
} else {
|
|
if (collectable()) marpit.lastSlideTokens[currentPage].push(token);
|
|
if (token.type === 'marpit_comment') {
|
|
collectComment(token);
|
|
} else if (token.type === 'inline') {
|
|
for (const t of token.children) if (t.type === 'marpit_comment') collectComment(t);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
const collect = exports.collect = (0, _plugin.default)(_collect);
|
|
var _default = exports.default = collect; |