aboutsummaryrefslogtreecommitdiff
path: root/src/post_proc.rs
blob: d8dfa743a0aed8d2fea68a9f2123be90e4e4b063 (plain) (blame)
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
mod r#trait;
pub use r#trait::*;

pub mod pinyin;

/// Look up a processor by name and run it.
pub fn run(text: &str, name: &str, args: &[&str]) -> Option<String> {
    macro_rules! match_processor {
        ($($processor:ty),+ $(,)?) => {
            match name {
                $(
                    n if n == <$processor as TextPostProcesser>::processer_name() => {
                        Some(<$processor as TextPostProcesser>::process(args, text))
                    }
                )+
                _ => None,
            }
        };
    }

    match_processor!(
        // +pinyin
        crate::post_proc::pinyin::PinyinPostProcesser,
    )
}