summaryrefslogtreecommitdiff
path: root/src/parse
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse')
-rw-r--r--src/parse/mod.rs6
-rw-r--r--src/parse/tokens.rs13
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 {