Skip to main content

usage/docs/markdown/
flag.rs

1use crate::docs::markdown::renderer::MarkdownRenderer;
2use crate::docs::models::SpecFlag;
3use crate::error::UsageErr;
4
5impl MarkdownRenderer {
6    pub fn render_flag(&self, flag: &crate::SpecFlag) -> Result<String, UsageErr> {
7        let mut flag = SpecFlag::from(flag);
8        flag.render_md(self);
9        self.render_with("flag_template.md.tera", |ctx| ctx.insert("flag", &flag))
10    }
11}
12
13#[cfg(test)]
14mod tests {
15    use crate::docs::markdown::renderer::MarkdownRenderer;
16    use crate::spec;
17    use insta::assert_snapshot;
18
19    #[test]
20    fn test_render_markdown_flag() {
21        let spec = spec! { r#"flag "--flag1" help="flag1 description""# }.unwrap();
22        let ctx = MarkdownRenderer::new(spec.clone()).with_replace_pre_with_code_fences(true);
23        assert_snapshot!(ctx.render_flag(&spec.cmd.flags[0]).unwrap(), @r"
24
25
26flag1 description");
27    }
28}