1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
pub mod args;
pub mod formatter;
use formatter::{
    character::remove_white_space_around_enclosed_url,
    markdown::preamble::split_preamble,
    punctuation::{convert_colon, convert_parenthesis, convert_semicolon},
};

/// 使用选项控制格式化过程
///
/// # Arguments
/// - `args` - 从命令行选项中解析的结果,或是人为构造的参数
pub fn format(args: &args::Args, content: String) -> String {
    let (preamble_content, mut content) = split_preamble(&content);

    if args.flag_colon {
        // 格式化中文冒号
        content = convert_colon(content, true);
    }

    if args.flag_strip_enclosed_url {
        // 去除 <url> 内部多余的空格
        content = remove_white_space_around_enclosed_url(content);
    }

    if args.flag_semicolon {
        // 格式化中文分号
        content = convert_semicolon(content, true);
    }
    if args.flag_parenthesis {
        // 格式化中文圆括号
        content = convert_parenthesis(content, true);
    }

    content = formatter::character::add_space_between_words_and_chinese_symbols(content, true);
    content = formatter::markdown::markdown_pipeline(content, &args);

    if let Some(preamble_content) = preamble_content {
        let mut result = String::from(format!("---\n{}\n---\n\n", preamble_content.trim()));
        result.push_str(content.trim());
        content = result;
    } else {
        content = content.trim().to_string();
    }

    content
}