2022-10-21 19:34:27 -07:00
|
|
|
use crate::parser::{Parser, ParserInput};
|
|
|
|
|
|
|
|
pub fn map<P, F, I, O1, O2, E>(parser: P, map_fn: F) -> impl Parser<I, O2, E>
|
|
|
|
where
|
|
|
|
I: ParserInput,
|
|
|
|
P: Parser<I, O1, E>,
|
|
|
|
F: Fn(O1) -> O2,
|
|
|
|
{
|
2023-02-25 03:00:29 -08:00
|
|
|
let rep = parser.representation();
|
|
|
|
let p = move |input| {
|
2022-10-21 19:34:27 -07:00
|
|
|
parser
|
|
|
|
.parse(input)
|
|
|
|
.map(|(result, rest)| (map_fn(result), rest))
|
2023-02-25 03:00:29 -08:00
|
|
|
};
|
|
|
|
(p, rep)
|
2022-10-21 19:34:27 -07:00
|
|
|
}
|