wip
This commit is contained in:
		
					parent
					
						
							
								78d6d502b6
							
						
					
				
			
			
				commit
				
					
						6f5829f686
					
				
			
		
					 3 changed files with 15 additions and 10 deletions
				
			
		| 
						 | 
				
			
			@ -14,11 +14,9 @@ pub enum Atom {
 | 
			
		|||
    Hardbreak,
 | 
			
		||||
    Escape,
 | 
			
		||||
    Nbsp,
 | 
			
		||||
    OpenMarker, // ??
 | 
			
		||||
    Ellipsis,
 | 
			
		||||
    ImageMarker, // ??
 | 
			
		||||
    EmDash,
 | 
			
		||||
    EnDash,
 | 
			
		||||
    EmDash,
 | 
			
		||||
    Lt,
 | 
			
		||||
    Gt,
 | 
			
		||||
    Ampersand,
 | 
			
		||||
| 
						 | 
				
			
			@ -29,13 +27,12 @@ pub enum Atom {
 | 
			
		|||
pub enum Node {
 | 
			
		||||
    Str,
 | 
			
		||||
    // link
 | 
			
		||||
    Url,
 | 
			
		||||
    ImageSource,
 | 
			
		||||
    LinkReference,
 | 
			
		||||
    FootnoteReference,
 | 
			
		||||
    // verbatim
 | 
			
		||||
    //Url,
 | 
			
		||||
    //ImageSource,
 | 
			
		||||
    //LinkReference,
 | 
			
		||||
    //FootnoteReference,
 | 
			
		||||
    Verbatim,
 | 
			
		||||
    RawFormat,
 | 
			
		||||
    RawFormat { format: Span },
 | 
			
		||||
    InlineMath,
 | 
			
		||||
    DisplayMath,
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -138,6 +135,9 @@ impl<'s> Parser<'s> {
 | 
			
		|||
        let atom = match first.kind {
 | 
			
		||||
            lex::Kind::Escape => Escape,
 | 
			
		||||
            lex::Kind::Nbsp => Nbsp,
 | 
			
		||||
            lex::Kind::Seq(lex::Sequence::Period) if first.len == 3 => Ellipsis,
 | 
			
		||||
            lex::Kind::Seq(lex::Sequence::Hyphen) if first.len == 2 => EnDash,
 | 
			
		||||
            lex::Kind::Seq(lex::Sequence::Hyphen) if first.len == 3 => EmDash,
 | 
			
		||||
            lex::Kind::Sym(lex::Symbol::Lt) => Lt,
 | 
			
		||||
            lex::Kind::Sym(lex::Symbol::Gt) => Gt,
 | 
			
		||||
            lex::Kind::Sym(lex::Symbol::Quote2) => Quote,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,8 +14,10 @@ pub(crate) struct Token {
 | 
			
		|||
#[derive(Debug, Clone, PartialEq, Eq)]
 | 
			
		||||
pub enum Kind {
 | 
			
		||||
    Text,
 | 
			
		||||
    Newline,
 | 
			
		||||
    Whitespace,
 | 
			
		||||
    Nbsp,
 | 
			
		||||
    Hardbreak,
 | 
			
		||||
    Escape,
 | 
			
		||||
    Integer,
 | 
			
		||||
    Open(Delimiter),
 | 
			
		||||
| 
						 | 
				
			
			@ -124,6 +126,7 @@ impl<'s> Lexer<'s> {
 | 
			
		|||
 | 
			
		||||
        let kind = match first {
 | 
			
		||||
            _ if escape && first == ' ' => Nbsp,
 | 
			
		||||
            _ if escape && first == '\n' => Hardbreak,
 | 
			
		||||
            _ if escape => Text,
 | 
			
		||||
 | 
			
		||||
            '\\' => {
 | 
			
		||||
| 
						 | 
				
			
			@ -136,6 +139,7 @@ impl<'s> Lexer<'s> {
 | 
			
		|||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            '\n' => Newline,
 | 
			
		||||
            _ if first.is_whitespace() => {
 | 
			
		||||
                self.eat_while(char::is_whitespace);
 | 
			
		||||
                Whitespace
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -436,7 +436,8 @@ mod test {
 | 
			
		|||
        test_parse!(
 | 
			
		||||
            "para0\n\npara1",
 | 
			
		||||
            Start(Paragraph, Attributes::none()),
 | 
			
		||||
            Str("para0\n"),
 | 
			
		||||
            Str("para0"),
 | 
			
		||||
            Atom(Softbreak),
 | 
			
		||||
            End(Paragraph),
 | 
			
		||||
            Atom(Blankline),
 | 
			
		||||
            Start(Paragraph, Attributes::none()),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue