block: enforce valid div classes
This commit is contained in:
parent
30351500bb
commit
6a94e694f9
2 changed files with 8 additions and 4 deletions
|
@ -262,11 +262,11 @@ impl<I: Iterator<Item = char>> Parser<I> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_name_start(c: char) -> bool {
|
pub fn is_name_start(c: char) -> bool {
|
||||||
c.is_ascii_alphanumeric() || matches!(c, '_' | ':')
|
c.is_ascii_alphanumeric() || matches!(c, '_' | ':')
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_name(c: char) -> bool {
|
pub fn is_name(c: char) -> bool {
|
||||||
is_name_start(c) || c.is_ascii_digit() || matches!(c, '-')
|
is_name_start(c) || c.is_ascii_digit() || matches!(c, '-')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -654,8 +654,12 @@ impl IdentifiedBlock {
|
||||||
f @ ('`' | ':' | '~') => {
|
f @ ('`' | ':' | '~') => {
|
||||||
let fence_length = 1 + (&mut chars).take_while(|c| *c == f).count();
|
let fence_length = 1 + (&mut chars).take_while(|c| *c == f).count();
|
||||||
let spec = &line_t[fence_length..].trim_start();
|
let spec = &line_t[fence_length..].trim_start();
|
||||||
let valid_spec =
|
let valid_spec = if f == ':' && !spec.starts_with('=') {
|
||||||
!spec.chars().any(char::is_whitespace) && !spec.chars().any(|c| c == '`');
|
spec.chars().next().map_or(true, attr::is_name_start)
|
||||||
|
&& spec.chars().skip(1).all(attr::is_name)
|
||||||
|
} else {
|
||||||
|
!spec.chars().any(char::is_whitespace) && !spec.chars().any(|c| c == '`')
|
||||||
|
};
|
||||||
let skip = line_t.len() - spec.len();
|
let skip = line_t.len() - spec.len();
|
||||||
(valid_spec && fence_length >= 3).then(|| {
|
(valid_spec && fence_length >= 3).then(|| {
|
||||||
(
|
(
|
||||||
|
|
Loading…
Reference in a new issue