diff options
Diffstat (limited to 'src/parse')
| -rw-r--r-- | src/parse/mod.rs | 6 | ||||
| -rw-r--r-- | src/parse/tokens.rs | 13 |
2 files changed, 11 insertions, 8 deletions
diff --git a/src/parse/mod.rs b/src/parse/mod.rs index 5bda818f..4c935579 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -61,7 +61,7 @@ fn node(p: &mut Parser, at_start: &mut bool) -> Option<Node> { // Markup. Token::Star => Node::Strong(span), Token::Underscore => Node::Emph(span), - Token::Eq => { + Token::Hashtag => { if *at_start { return Some(heading(p)); } else { @@ -128,11 +128,11 @@ fn node(p: &mut Parser, at_start: &mut bool) -> Option<Node> { /// Parse a heading. fn heading(p: &mut Parser) -> Node { let start = p.start(); - p.assert(Token::Eq); + p.assert(Token::Hashtag); // Count depth. let mut level: usize = 1; - while p.eat_if(Token::Eq) { + while p.eat_if(Token::Hashtag) { level += 1; } diff --git a/src/parse/tokens.rs b/src/parse/tokens.rs index 62d2e68e..fa86d2f1 100644 --- a/src/parse/tokens.rs +++ b/src/parse/tokens.rs @@ -73,7 +73,7 @@ impl<'s> Iterator for Tokens<'s> { '{' => Token::LeftBrace, '}' => Token::RightBrace, - // Keywords, variables, functions, colors. + // Headings, keywords, identifiers, colors. '#' => self.hash(start), // Whitespace. @@ -93,7 +93,6 @@ impl<'s> Iterator for Tokens<'s> { // Markup. '*' => Token::Star, '_' => Token::Underscore, - '=' => Token::Eq, '~' => Token::Tilde, '`' => self.raw(), '$' => self.math(), @@ -157,6 +156,10 @@ impl<'s> Tokens<'s> { match self.mode { TokenMode::Markup => { + if read.is_empty() { + return Token::Hashtag; + } + if let Some(token) = keyword(read) { return token; } @@ -607,8 +610,8 @@ mod tests { // Test markup tokens. t!(Markup[" a1"]: "*" => Star); t!(Markup: "_" => Underscore); - t!(Markup[""]: "===" => Eq, Eq, Eq); - t!(Markup["a1/"]: "= " => Eq, Space(0)); + t!(Markup[""]: "###" => Hashtag, Hashtag, Hashtag); + t!(Markup["a1/"]: "# " => Hashtag, Space(0)); t!(Markup: "~" => Tilde); t!(Markup[" "]: r"\" => Backslash); } @@ -666,7 +669,7 @@ mod tests { for &(s, t) in &keywords { t!(Markup[" "]: format!("#{}", s) => t); t!(Markup[" "]: format!("#{0}#{0}", s) => t, t); - t!(Markup[" /"]: format!("# {}", s) => Token::Invalid("#"), Space(0), Text(s)); + t!(Markup[" /"]: format!("# {}", s) => Token::Hashtag, Space(0), Text(s)); } for &(s, t) in &keywords { |
