Add syntax for empty attributes
This commit is contained in:
parent
e0f11ac9e3
commit
e047b3fbb3
2 changed files with 23 additions and 7 deletions
|
@ -14,6 +14,9 @@ macro_rules! dollar {
|
||||||
macro_rules! eq {
|
macro_rules! eq {
|
||||||
() => (TtToken(_, token::Eq))
|
() => (TtToken(_, token::Eq))
|
||||||
}
|
}
|
||||||
|
macro_rules! not {
|
||||||
|
() => (TtToken(_, token::Not))
|
||||||
|
}
|
||||||
macro_rules! semi {
|
macro_rules! semi {
|
||||||
() => (TtToken(_, token::Semi))
|
() => (TtToken(_, token::Semi))
|
||||||
}
|
}
|
||||||
|
@ -154,14 +157,22 @@ impl<'cx, 's, 'i, 'r, 'o> Parser<'cx, 's, 'i, 'r, 'o> {
|
||||||
fn attrs(&mut self) {
|
fn attrs(&mut self) {
|
||||||
while let [ident!(name), eq!(), ..] = self.input {
|
while let [ident!(name), eq!(), ..] = self.input {
|
||||||
self.shift(2);
|
self.shift(2);
|
||||||
self.render.attribute_start(name.as_str());
|
if let [not!(), ..] = self.input {
|
||||||
{
|
// Empty attribute
|
||||||
let old_in_attr = self.in_attr;
|
self.shift(1);
|
||||||
self.in_attr = true;
|
self.render.attribute_empty(name.as_str());
|
||||||
self.markup();
|
} else {
|
||||||
self.in_attr = old_in_attr;
|
// Non-empty attribute
|
||||||
|
self.render.attribute_start(name.as_str());
|
||||||
|
{
|
||||||
|
// Parse a value under an attribute context
|
||||||
|
let old_in_attr = self.in_attr;
|
||||||
|
self.in_attr = true;
|
||||||
|
self.markup();
|
||||||
|
self.in_attr = old_in_attr;
|
||||||
|
}
|
||||||
|
self.render.attribute_end();
|
||||||
}
|
}
|
||||||
self.render.attribute_end();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,11 @@ impl<'cx, 's, 'o> Renderer<'cx, 's, 'o> {
|
||||||
self.write("=\"");
|
self.write("=\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn attribute_empty(&mut self, name: &str) {
|
||||||
|
self.write(" ");
|
||||||
|
self.write(name);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn attribute_end(&mut self) {
|
pub fn attribute_end(&mut self) {
|
||||||
self.write("\"");
|
self.write("\"");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue