use wana_kana::ConvertJapanese;
pub trait Format {
fn format(&self, base: &str, text: &str) -> String;
}
pub struct Markdown;
impl Format for Markdown {
fn format(&self, base: &str, text: &str) -> String {
format!("[{base}]{{{text}}}")
}
}
pub struct Html;
impl Format for Html {
fn format(&self, base: &str, text: &str) -> String {
format!("<ruby>{base}<rp>(</rp><rt>{text}</rt><rp>)</rp></ruby>")
}
}
pub struct Latex;
impl Format for Latex {
fn format(&self, base: &str, text: &str) -> String {
format!("\\ruby{{{base}}}{{{text}}}")
}
}
pub struct WithKatakana<'a>(pub &'a dyn Format);
impl<'a> Format for WithKatakana<'a> {
fn format(&self, base: &str, text: &str) -> String {
self.0.format(base, &text.to_katakana())
}
}