From 51f4f3d35f12e179ecea9bd433615fd1b27f9e94 Mon Sep 17 00:00:00 2001 From: Florian Schroedl Date: Thu, 20 Jan 2022 17:00:00 +0100 Subject: [PATCH] Use helper function --- src/org/org_text_delimiter.nim | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/org/org_text_delimiter.nim b/src/org/org_text_delimiter.nim index f11a790..ef94b54 100644 --- a/src/org/org_text_delimiter.nim +++ b/src/org/org_text_delimiter.nim @@ -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]