Skip to content

Commit d22aff7

Browse files
committed
Use <> instead of []
Signed-off-by: Nico Burns <[email protected]>
1 parent a65a129 commit d22aff7

File tree

1 file changed

+74
-16
lines changed

1 file changed

+74
-16
lines changed

html5ever/src/tree_builder/rules.rs

Lines changed: 74 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,34 +35,90 @@ fn current_node<Handle>(open_elems: &[Handle]) -> &Handle {
3535
}
3636

3737
macro_rules! tag {
38-
($( $tag:tt )|+) => {
39-
$(tag!(__inner:$tag))|+
38+
// Any start tag
39+
(<>) => {
40+
crate::tokenizer::Tag {
41+
kind: crate::tokenizer::StartTag,
42+
..
43+
}
44+
};
45+
46+
// Any end tag
47+
(</>) => {
48+
crate::tokenizer::Tag {
49+
kind: crate::tokenizer::EndTag,
50+
..
51+
}
4052
};
53+
4154
// Named end tag
42-
(__inner:[/$tag:tt]) => {
43-
crate::tokenizer::Tag { kind: crate::tokenizer::EndTag, name: local_name!($tag), .. }
55+
(<$tag:tt>) => {
56+
crate::tokenizer::Tag {
57+
kind: crate::tokenizer::StartTag,
58+
name: local_name!($tag),
59+
..
60+
}
4461
};
62+
4563
// Named start tag
46-
(__inner:[$tag:tt]) => {
47-
crate::tokenizer::Tag { kind: crate::tokenizer::StartTag, name: local_name!($tag), .. }
64+
(</$tag:tt>) => {
65+
crate::tokenizer::Tag {
66+
kind: crate::tokenizer::EndTag,
67+
name: local_name!($tag),
68+
..
69+
}
70+
};
71+
}
72+
73+
macro_rules! tags {
74+
// Any start tag
75+
(<>) => {
76+
tag!(<>)
77+
};
78+
(<>|$($tail:tt)*) => {
79+
tag!(<>) | tags!($($tail)*)
80+
};
81+
82+
// Any end tag
83+
(</>) => {
84+
tag!(</>)
85+
};
86+
(</>|$($tail:tt)*) => {
87+
tag!(</>) | tags!($($tail)*)
88+
};
89+
90+
// Named start tag
91+
(<$tag:tt>) => {
92+
tag!(<$tag>)
93+
};
94+
(<$tag:tt>|$($tail:tt)*) => {
95+
tag!(<$tag>) | tags!($($tail)*)
96+
};
97+
98+
// Named end tag
99+
(</$tag:tt>) => {
100+
tag!(</$tag>)
101+
};
102+
(</$tag:tt>|$($tail:tt)*) => {
103+
tag!(</$tag>) | tags!($($tail)*)
48104
};
49105
}
50106

51107
macro_rules! is_not_tag {
52-
($input:ident, $( $tag:tt )|+) => {
53-
!matches!($input, $(tag!(__inner:$tag))|+)
108+
($input:ident, $($tail:tt)*) => {
109+
!matches!($input, tags!($($tail)*))
54110
};
55111
}
56112

57113
macro_rules! tag_token {
58-
($id:ident @ $( $tag:tt )|+) => {
114+
($id:ident @ $($tail:tt)*) => {
59115
crate::tree_builder::types::Token::Tag(
60-
$id @ ( tag!($($tag)|+) )
116+
$id @ ( tags!($($tail)*) )
61117
)
62118
};
63-
($($tag:tt)|+) => {
119+
($($tail:tt)*) => {
64120
crate::tree_builder::types::Token::Tag(
65-
tag!($($tag)|+)
121+
tags!($($tail)*)
66122
)
67123
};
68124
}
@@ -142,14 +198,16 @@ where
142198
},
143199
Token::Characters(SplitStatus::Whitespace, _) => ProcessResult::Done,
144200
Token::Comment(text) => self.append_comment_to_doc(text),
145-
// Token::Tag(tag @ tag!(["html"] | [/"body"])) => {
146-
tag_token!(tag @ ["html"] | [/"body"]) => {
201+
Token::Tag(tag @ tags!(<"html"> | </"body">)) => {
202+
// tag_token!(tag @ <"html"> | </"body">) => {
147203
self.create_root(tag.attrs);
148204
self.mode.set(InsertionMode::BeforeHead);
149205
ProcessResult::Done
150206
},
151-
// Token::Tag(tag @ any_end_tag!()) if !matches!(tag, tag!([/"head"] | [/"body"] | [/"html"] | [/"br"])) =>
152-
any_end_tag_token!(tag) if is_not_tag!(tag, [/"head"] | [/"body"] | [/"html"] | [/"br"]) => {
207+
Token::Tag(tag @ tag!(</>))
208+
if !matches!(tag, tags!(</"head"> | </"body"> | </"html"> | </"br">)) =>
209+
{
210+
// any_end_tag_token!(tag) if is_not_tag!(tag, </"head"> | </"body"> | </"html"> | </"br">) => {
153211
self.unexpected(&tag)
154212
},
155213
token => {

0 commit comments

Comments
 (0)