2 var Parser
= require("./parser");
4 // produces a document parser from a word parser in an arbitrary mode
5 module
.exports
= makeDocumentParser
;
6 function makeDocumentParser(parseWord
, makeOptions
) {
7 var parseLine
= Parser
.makeDelimitedParser(parseWord
, parseSomeSpaces
);
8 var parseParagraph
= Parser
.makeDelimitedParser(parseLine
, parseNewlineSpace
);
9 var parseSection
= Parser
.makeDelimitedParser(parseParagraph
, parseNewlineSpace
);
10 var parseDocument
= Parser
.makeDelimitedParser(parseSection
, parseNewlineSpaces
);
11 return Parser
.makeParser(function (callback
, options
) {
12 options
= makeOptions(options
);
13 var state
= parseDocument(callback
, options
);
18 var parseSpace
= Parser
.makeExpect(" ");
19 var parseAnySpaces
= Parser
.makeParseAny(parseSpace
);
20 var parseSomeSpaces
= Parser
.makeParseSome(parseSpace
);
21 var parseNewline
= Parser
.makeExpect("\n");
22 var parseNewlines
= Parser
.makeParseSome(parseNewline
);
24 function parseNewlineSpace(callback
) {
25 return parseAnySpaces(function () {
26 return parseNewline(function () {
27 return parseAnySpaces(callback
);
32 function parseNewlineSpaces(callback
) {
33 return parseAnySpaces(function () {
34 return parseNewlines(function () {
35 return parseAnySpaces(callback
);