Added Map combinator

This commit is contained in:
Brandon Dyck 2024-09-09 10:33:46 -06:00
parent ef74691415
commit f75904ca93

View File

@ -191,3 +191,18 @@ func Try[In, Out any](p Parser[In, Out]) Parser[In, Out] {
return consumed, reply, err
}
}
func Map[In, Out1, Out2 any](p Parser[In, Out1], f func(Out1) Out2) Parser[In, Out2] {
return func(input State[In]) (bool, Result[In, Out2], error) {
consumed, reply, err := p(input)
if err != nil {
return consumed, Result[In, Out2]{}, err
}
reply2 := Result[In, Out2]{
Value: f(reply.Value),
State: reply.State,
Message: reply.Message,
}
return consumed, reply2, nil
}
}