function newMdReader(...contentReaders) {
const {
TokenizerContext,
newCodeReader,
newCompositeTokenizer,
newMdReader,
newBlockReader
} = tknz;
const readCode = newCodeReader();
const readNewCodeBlock = tknz.newTextFencedBlockReader(
"Code",
"{{",
"}}",
readCode
);
const contentTokenizers = [...contentReaders, readNewCodeBlock, readCode];
const readContent = newCompositeTokenizer(contentTokenizers);
const options = {
readHeaderTokens: readCode,
readOpenTagTokens: readCode,
readInstructionsTokens: readCode,
readTagContentTokens: readContent,
readBlockContent: readContent
};
const readToken = newBlockReader("MdDocument", newMdReader(options));
return (str) => {
const ctx = new TokenizerContext(str || "\n");
return readToken(ctx);
};
}