nmd_core/codex/modifier/
constants.rs

1use once_cell::sync::Lazy;
2use regex::Regex;
3
4pub fn build_strict_reserved_line_pattern(delimiter: &str) -> String {
5    format!(r"(?m)^[ \t]*{}[ \t]*$", delimiter)
6}
7
8pub const CHAPTER_TAGS_PATTERN: &str = r"(?:\r?\n@(.*))*";
9pub const CHAPTER_STYLE_PATTERN: &str = r"(\r?\n\{(?s:(.*))\})?";
10pub const IDENTIFIER_PATTERN: &str = r"#([\w-]+)";
11pub const NEW_LINE_PATTERN: &str = r"(?:\n|\r\n)";
12pub const MULTI_LINES_CONTENT_PATTERN: &str = r"([\s\S]*?)";
13pub const MULTI_LINES_CONTENT_EXCLUDING_HEADINGS_PATTERN: &str = r"(?m)^([^#\n][\s\S]*?)";
14
15pub const MAX_HEADING_LEVEL: u32 = 6;
16
17
18pub const STYLE_PATTERN: &str = r"([^{}]*(?:\.(?:\w+|\d+)\s*|(?:\w+\s*:\s*[^;{}]+\s*;?))*)";
19pub const ABRIDGED_STYLE_PATTERN: &str = r"((#?[\w\d\-]+)?;(#?[\w\d\-]+)?;?([\w\d\-]+)?)";
20
21pub static STYLE_REGEX: Lazy<Regex> = Lazy::new(|| {Regex::new(STYLE_PATTERN).unwrap()});
22pub static ABRIDGED_STYLE_REGEX: Lazy<Regex> = Lazy::new(|| {Regex::new(ABRIDGED_STYLE_PATTERN).unwrap()});