Improve comment syntax
This commit is contained in:
parent
878a026851
commit
2db5b83461
|
@ -1,7 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<body>
|
<body>
|
||||||
<%# This is a comment %>
|
<%# This is a comment #%>
|
||||||
<% for (i, msg) in messages.iter().enumerate() { %>
|
<% for (i, msg) in messages.iter().enumerate() { %>
|
||||||
<% if i == 0 { %>
|
<% if i == 0 { %>
|
||||||
<h1>Hello, world!</h1>
|
<h1>Hello, world!</h1>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<body>
|
<body>
|
||||||
<%# This is a comment %>
|
<%# This is a comment #%>
|
||||||
<% for (i, msg) in messages.iter().enumerate() { %>
|
<% for (i, msg) in messages.iter().enumerate() { %>
|
||||||
<% if i == 0 { %>
|
<% if i == 0 { %>
|
||||||
<h1>Hello, world!</h1>
|
<h1>Hello, world!</h1>
|
||||||
|
|
|
@ -175,8 +175,14 @@ impl<'a> ParseStream<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if token_kind == TokenKind::Comment {
|
if token_kind == TokenKind::Comment {
|
||||||
|
let block_delim_end = self.block_delimiter.1.as_bytes();
|
||||||
let pos = self.source[start..]
|
let pos = self.source[start..]
|
||||||
.find(&*self.block_delimiter.1)
|
.as_bytes()
|
||||||
|
.windows(1 + block_delim_end.len())
|
||||||
|
.enumerate()
|
||||||
|
.position(|(_, window)| {
|
||||||
|
window[0] == b'#' && &window[1..] == block_delim_end
|
||||||
|
})
|
||||||
.ok_or_else(|| self.error("Unterminated comment block"))?;
|
.ok_or_else(|| self.error("Unterminated comment block"))?;
|
||||||
|
|
||||||
self.take_n(start);
|
self.take_n(start);
|
||||||
|
@ -186,7 +192,7 @@ impl<'a> ParseStream<'a> {
|
||||||
kind: token_kind,
|
kind: token_kind,
|
||||||
};
|
};
|
||||||
|
|
||||||
self.take_n(pos + self.block_delimiter.1.len());
|
self.take_n(pos + 1 + self.block_delimiter.1.len());
|
||||||
return Ok(token);
|
return Ok(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,7 +437,7 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn non_ascii_delimiter() {
|
fn non_ascii_delimiter() {
|
||||||
let src = r##"foo <🍣# This is a comment 🍣> bar <🍣= r"🍣>" 🍣> baz <🍣🍣"##;
|
let src = r##"foo <🍣# This is a comment #🍣> bar <🍣= r"🍣>" 🍣> baz <🍣🍣"##;
|
||||||
let parser = Parser::new().delimiter('🍣');
|
let parser = Parser::new().delimiter('🍣');
|
||||||
let tokens = parser.parse(src).into_vec().unwrap();
|
let tokens = parser.parse(src).into_vec().unwrap();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
@ -449,22 +455,22 @@ mod tests {
|
||||||
},
|
},
|
||||||
Token {
|
Token {
|
||||||
content: " bar ",
|
content: " bar ",
|
||||||
offset: 34,
|
offset: 35,
|
||||||
kind: TokenKind::Text
|
kind: TokenKind::Text
|
||||||
},
|
},
|
||||||
Token {
|
Token {
|
||||||
content: "r\"🍣>\"",
|
content: "r\"🍣>\"",
|
||||||
offset: 46,
|
offset: 47,
|
||||||
kind: TokenKind::BufferedCode { escape: true }
|
kind: TokenKind::BufferedCode { escape: true }
|
||||||
},
|
},
|
||||||
Token {
|
Token {
|
||||||
content: " baz ",
|
content: " baz ",
|
||||||
offset: 60,
|
offset: 61,
|
||||||
kind: TokenKind::Text
|
kind: TokenKind::Text
|
||||||
},
|
},
|
||||||
Token {
|
Token {
|
||||||
content: "<🍣",
|
content: "<🍣",
|
||||||
offset: 65,
|
offset: 66,
|
||||||
kind: TokenKind::Text
|
kind: TokenKind::Text
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue