aboutsummaryrefslogtreecommitdiff
path: root/src/post_proc.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-06-21 22:45:28 +0800
committer魏曹先生 <1992414357@qq.com>2026-06-21 22:45:28 +0800
commitc6885ae2312a1be589e945129bdd9d268f14c370 (patch)
tree919e0fe49331b533de312a39548f17b133ef4975 /src/post_proc.rs
parent291c01fd98d44e42bb0a65468e3b6cee3dc25044 (diff)
feat: replace `--pinyin` flag with generic `--post="+pinyin"` option
Diffstat (limited to 'src/post_proc.rs')
-rw-r--r--src/post_proc.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/post_proc.rs b/src/post_proc.rs
new file mode 100644
index 0000000..d8dfa74
--- /dev/null
+++ b/src/post_proc.rs
@@ -0,0 +1,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,
+ )
+}