Skip to main content

rumdl_lib/rules/
code_fence_utils.rs

1use std::fmt;
2
3/// The style for code fence markers (MD048)
4#[derive(Debug, PartialEq, Eq, Clone, Copy, Default, Hash)]
5pub enum CodeFenceStyle {
6    /// Consistent with the first code fence style found
7    #[default]
8    Consistent,
9    /// Backtick style (```)
10    Backtick,
11    /// Tilde style (~~~)
12    Tilde,
13}
14
15impl fmt::Display for CodeFenceStyle {
16    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
17        match self {
18            CodeFenceStyle::Backtick => write!(f, "backtick"),
19            CodeFenceStyle::Tilde => write!(f, "tilde"),
20            CodeFenceStyle::Consistent => write!(f, "consistent"),
21        }
22    }
23}
24
25#[cfg(test)]
26mod tests {
27    use super::*;
28
29    #[test]
30    fn test_code_fence_style_default() {
31        let style = CodeFenceStyle::default();
32        assert_eq!(style, CodeFenceStyle::Consistent);
33    }
34
35    #[test]
36    fn test_code_fence_style_display() {
37        assert_eq!(format!("{}", CodeFenceStyle::Backtick), "backtick");
38        assert_eq!(format!("{}", CodeFenceStyle::Tilde), "tilde");
39        assert_eq!(format!("{}", CodeFenceStyle::Consistent), "consistent");
40    }
41}