summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/parse/mod.rs6
-rw-r--r--src/parse/tokens.rs13
-rw-r--r--src/pretty.rs4
-rw-r--r--src/syntax/token.rs7
4 files changed, 18 insertions, 12 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 {
diff --git a/src/pretty.rs b/src/pretty.rs
index 397bbc38..49f6fd82 100644
--- a/src/pretty.rs
+++ b/src/pretty.rs
@@ -141,7 +141,7 @@ impl PrettyWithMap for Node {
impl PrettyWithMap for HeadingNode {
fn pretty_with_map(&self, p: &mut Printer, map: Option<&NodeMap>) {
for _ in 0 .. self.level {
- p.push('=');
+ p.push('#');
}
self.contents.pretty_with_map(p, map);
}
@@ -666,7 +666,7 @@ mod tests {
roundtrip("hi");
// Heading.
- roundtrip("= *Ok*");
+ roundtrip("# *Ok*");
// Raw.
roundtrip("``");
diff --git a/src/syntax/token.rs b/src/syntax/token.rs
index 3484536d..538d81b7 100644
--- a/src/syntax/token.rs
+++ b/src/syntax/token.rs
@@ -20,8 +20,8 @@ pub enum Token<'s> {
Star,
/// An underscore: `_`.
Underscore,
- /// A single equals sign: `=`.
- Eq,
+ /// A single hashtag: `#`.
+ Hashtag,
/// A tilde: `~`.
Tilde,
/// A backslash followed by nothing or whitespace: `\`.
@@ -38,6 +38,8 @@ pub enum Token<'s> {
Hyph,
/// A slash: `/`.
Slash,
+ /// A single equals sign: `=`.
+ Eq,
/// Two equals signs: `==`.
EqEq,
/// An exclamation mark followed by an equals sign: `!=`.
@@ -200,6 +202,7 @@ impl<'s> Token<'s> {
Self::RightParen => "closing paren",
Self::Star => "star",
Self::Underscore => "underscore",
+ Self::Hashtag => "hashtag",
Self::Tilde => "tilde",
Self::Backslash => "backslash",
Self::Comma => "comma",