This commit is contained in:
PoiScript 2019-01-04 16:53:20 +08:00
parent 2fef529f57
commit a85efe2056
22 changed files with 1776 additions and 7 deletions

32
src/elements/rule.rs Normal file
View file

@ -0,0 +1,32 @@
pub struct Rule;
impl Rule {
pub fn parse(src: &str) -> Option<usize> {
let end = eol!(src);
let leading = until_while!(src, 0, b'-', |c| c == b' ' || c == b'\t');
if src[leading..end].chars().all(|c| c == '-') && end - leading > 4 {
Some(end)
} else {
None
}
}
}
#[test]
fn parse() {
assert!(Rule::parse("-----").is_some());
assert!(Rule::parse("--------").is_some());
assert!(Rule::parse(" -----").is_some());
assert!(Rule::parse("\t\t-----").is_some());
assert!(Rule::parse("").is_none());
assert!(Rule::parse("----").is_none());
assert!(Rule::parse(" ----").is_none());
assert!(Rule::parse(" 0----").is_none());
assert!(Rule::parse("0 ----").is_none());
assert!(Rule::parse("0------").is_none());
assert!(Rule::parse("----0----").is_none());
assert!(Rule::parse("\t\t----").is_none());
assert!(Rule::parse("------0").is_none());
assert!(Rule::parse("----- 0").is_none());
}