Use helper function

This commit is contained in:
Florian Schroedl
2022-01-20 17:00:00 +01:00
parent bec0742e51
commit 51f4f3d35f

View File

@@ -9,17 +9,20 @@ import ../utils/fp
import ../parser/parser_internals
import ../parser/parser_types
let parseBetweenDelimiter* = proc(delimiterParser: (Parser -> ParserResult)): (Parser -> ParserResult) {.closure.} =
ignore(delimiterParser) +
anyUntil(delimiterParser + whitespace) +
ignore(delimiterParser)
let parseBetweenDelimiter* = proc(start: (Parser -> ParserResult), stop: (Parser -> ParserResult)): (Parser -> ParserResult) {.closure.} =
ignore(start) +
anyUntil(stop + whitespace) +
ignore(start)
let boldParser* = parseBetweenDelimiter(ch('*'))
let italicParser* = parseBetweenDelimiter(ch('/'))
let underlineParser* = parseBetweenDelimiter(ch('_'))
let verbatimParser* = parseBetweenDelimiter(ch('='))
let codeParser* = parseBetweenDelimiter(ch('~'))
let strikeThroughParser* = parseBetweenDelimiter(ch('+'))
let parseBetweenIdenticalDelimiter* = proc(delimiterParser: (Parser -> ParserResult)): (Parser -> ParserResult) {.closure.} =
parseBetweenDelimiter(delimiterParser, delimiterParser)
let boldParser* = parseBetweenIdenticalDelimiter(ch('*'))
let italicParser* = parseBetweenIdenticalDelimiter(ch('/'))
let underlineParser* = parseBetweenIdenticalDelimiter(ch('_'))
let verbatimParser* = parseBetweenIdenticalDelimiter(ch('='))
let codeParser* = parseBetweenIdenticalDelimiter(ch('~'))
let strikeThroughParser* = parseBetweenIdenticalDelimiter(ch('+'))
type OrgBuilderT* = OrgElement
type OrgBuilder* = Builder[OrgBuilderT]