1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use fmt;
use crate;
/// Coerces the output of a parser to another value.
///
/// # Examples
///
/// ```rust
/// # use kamo::{Position, parser::{prelude::*, code, CharacterError, Input}};
/// let mut parser = value('a', char('b'));
///
/// assert_eq!(parser.parse("bac".into()), Ok(('a', Input::from("ac"))));
/// assert_eq!(parser.parse("abc".into()), Err(ParseError::new(
/// Position::new(0, 1, 1),
/// code::ERR_CHAR,
/// CharacterError::Char('b')
/// )));
///
/// let error = parser.parse("".into()).expect_err("error output");
///
/// assert!(error.is_eof());
/// assert_eq!(error, ParseError::new(
/// Position::new(0, 1, 1),
/// code::ERR_CHAR,
/// CharacterError::Char('a'),
/// ));
/// ```