markdown-formatter 0.0.13

Flavored Markdown (ZH) content formatter
Documentation
use lazy_static::lazy_static;
use regex::Regex;

lazy_static! {
    static ref REG_PREAMBLE: Regex = Regex::new(r"^---([\s\S]+)---").unwrap();
}

pub fn split_preamble(content: &str) -> (Option<String>, String) {
    if let Some(captures) = REG_PREAMBLE.captures(content.trim()) {
        if let Some(preamble_raw_content) = captures.get(0) {
            let mut preamble_content = preamble_raw_content.as_str();
            if preamble_content.contains("---") {
                let split: Vec<&str> = preamble_content.split("---").collect();
                if split.len() > 0 {
                    preamble_content = split[1];
                }
            }
            let mut markdown_bare = content.replace(preamble_content, "");
            markdown_bare = markdown_bare.trim().trim_start_matches("---").to_string();

            return (Some(preamble_content.to_string()), markdown_bare);
        }
    }
    return (None, content.to_string());
}