add inspect mapper
This commit is contained in:
parent
197280fe3e
commit
5201191261
@ -284,10 +284,7 @@ where
|
||||
}
|
||||
|
||||
/// lowercase the input and pass it to the next mapper.
|
||||
pub fn lowercase<M>(inner: M) -> Lowercase<M>
|
||||
where
|
||||
M: Mapper<[u8]>,
|
||||
{
|
||||
pub fn lowercase<M>(inner: M) -> Lowercase<M> {
|
||||
Lowercase(inner)
|
||||
}
|
||||
/// The `Lowercase` mapper returned by [lowercase()](fn.lowercase.html)
|
||||
@ -328,6 +325,31 @@ impl<F> fmt::Debug for MapFn<F> {
|
||||
}
|
||||
}
|
||||
|
||||
/// inspect the input and pass it to the next mapper.
|
||||
///
|
||||
/// This logs the value as it passes it to the next mapper unchanged. Can be
|
||||
/// useful when troubleshooting why a matcher may not be working as intended.
|
||||
pub fn inspect<M>(inner: M) -> Inspect<M> {
|
||||
Inspect(inner)
|
||||
}
|
||||
/// The `Inspect` mapper returned by [inspect()](fn.inspect.html)
|
||||
#[derive(Debug)]
|
||||
pub struct Inspect<M>(M);
|
||||
impl<IN, M> Mapper<IN> for Inspect<M>
|
||||
where
|
||||
IN: fmt::Debug + ?Sized,
|
||||
M: Mapper<IN>,
|
||||
M::Out: fmt::Debug,
|
||||
{
|
||||
type Out = M::Out;
|
||||
|
||||
fn map(&mut self, input: &IN) -> M::Out {
|
||||
let output = self.0.map(input);
|
||||
log::debug!("{:?}.map({:?}) == {:?}", self.0, input, output);
|
||||
output
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
@ -445,4 +467,12 @@ mod tests {
|
||||
assert_eq!(true, c.map(&0));
|
||||
assert_eq!(false, c.map(&11));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_inspect() {
|
||||
let _ = pretty_env_logger::try_init();
|
||||
let mut c = inspect(lowercase(matches("^foobar$")));
|
||||
assert_eq!(true, c.map("Foobar"));
|
||||
assert_eq!(false, c.map("Foobar1"));
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user