diff --git a/formatter/html/html.go b/formatter/html/html.go index 58093fa..9e2be50 100644 --- a/formatter/html/html.go +++ b/formatter/html/html.go @@ -256,6 +256,9 @@ func (h *HTMLFormatter) Format() string { } else if entry.Break != nil { // Write break tag to output h.out.WriteString("
") + } else if entry.Hline != nil { + // Write horizonhal line tag to output + h.out.WriteString("
") } } diff --git a/parser/parser.go b/parser/parser.go index fdfa5d1..18b0a6e 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -112,15 +112,6 @@ func (b *buffer) pop() (scanner.Token, string) { return scanner.EOF, "" } -func (b *buffer) peek() (scanner.Token, string) { - if b.tok.Size() > 0 { - tok := b.tok.Peek() - lit := b.lit.Peek() - return tok.(scanner.Token), lit.(string) - } - return scanner.EOF, "" -} - // Parse parses the input into an AST func (p *Parser) Parse() (*ast.AST, error) { // Create new AST @@ -172,6 +163,29 @@ parseLoop: // Continue to next token continue } + } else if tok == scanner.PUNCT && lit == "-" { + // Scan token + tok, lit = p.scan() + // If token is not PUNCT or literal is not "-" + if tok != scanner.PUNCT || lit != "-" { + // Unscan token + p.unscan() + // Continue parsing next token + continue + } + // Scan token + tok, lit = p.scan() + // If token is not PUNCT or literal is not "-" + if tok != scanner.PUNCT || lit != "-" { + // Unscan two tokens + p.unscanMulti(2) + // Continue parsing next token + continue + } + // Add Hline to AST + AST.Entries = append(AST.Entries, ast.Entry{Hline: &ast.Hline{}}) + // Continue parsing next token + continue } // Unscan token as it will be needed for parsing para p.unscan()