Skip to content

Commit

Permalink
✨ between handler
Browse files Browse the repository at this point in the history
  • Loading branch information
nabeelvalley committed Jul 12, 2024
1 parent 48f8d7b commit 32e4fe6
Showing 1 changed file with 30 additions and 5 deletions.
35 changes: 30 additions & 5 deletions src/parsing.gleam
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ fn right(l: Parser, r: Parser) -> Parser {
Ok(okl) ->
case r(okl) {
Error(err) -> Error(err)
Ok(okr) -> Ok(ParserState(okr.target, okl.start, okr.end, okr.result))
Ok(okr) -> Ok(ParserState(okr.target, state.end, okr.end, okr.result))
}
}
}
Expand All @@ -174,7 +174,26 @@ fn left(l: Parser, r: Parser) -> Parser {
Ok(okl) ->
case r(okl) {
Error(err) -> Error(err)
Ok(okr) -> Ok(ParserState(okl.target, okl.start, okr.end, okl.result))
Ok(okr) -> Ok(ParserState(okl.target, state.end, okr.end, okl.result))
}
}
}
}

fn tap(val, label) {
io.debug(label)
io.debug(val)
val
}

fn between(l, keep, r) {
fn(state: ParserState) {
case l(state) {
Error(err) -> Error(err)
Ok(okl) ->
case left(keep, r)(okl) {
Error(err) -> Error(err)
Ok(okr) -> Ok(ParserState(okr.target, okl.start, okr.end, okr.result))
}
}
}
Expand All @@ -193,14 +212,20 @@ fn parse(target) {
str(": "),
sequence([str("hello"), str(" "), str("world")]),
many(choice([str("."), str("!"), str("?")])),
left(str("left"), str("right")),
right(str("left"), str("right")),
between(
str("'"),
sequence([
left(str("left"), str("right")),
right(str("left"), str("right")),
]),
str("'"),
),
])
run(parser, target)
}

pub fn main() {
let content = "message12: hello world!?!?leftrightleftright"
let content = "message12: hello world!?!?'leftrightleftright'"
io.debug(string.length(content))

let parsed = parse(content)
Expand Down

0 comments on commit 32e4fe6

Please sign in to comment.