aboutsummaryrefslogtreecommitdiff
path: root/parser
diff options
context:
space:
mode:
Diffstat (limited to 'parser')
-rw-r--r--parser/parser.go9
-rw-r--r--parser/parser_test.go10
2 files changed, 6 insertions, 13 deletions
diff --git a/parser/parser.go b/parser/parser.go
index b333506..7d69e30 100644
--- a/parser/parser.go
+++ b/parser/parser.go
@@ -32,7 +32,6 @@ type AstNode struct {
Text string
Attrs []Attr
Children []AstNode
- Newline bool
}
// ParseFile reads and parses a GSP-formatted text file and returns a GSP AST.
@@ -73,14 +72,8 @@ func (reader *reader) parseNode() (node AstNode, err error) {
return
}
- switch r {
- case '-', '=':
+ if r == '-' || r == '=' {
return reader.parseText(r == '=')
- case '>':
- node.Newline = true
- if _, err = reader.readRune(); err != nil {
- return
- }
}
if node.Text, err = reader.parseNodeName(); err != nil {
diff --git a/parser/parser_test.go b/parser/parser_test.go
index 1851307..66a76bf 100644
--- a/parser/parser_test.go
+++ b/parser/parser_test.go
@@ -11,14 +11,14 @@ import (
func TestParseFile(t *testing.T) {
s := `
html lang="en" {
- >head attr {
- >title {-
+ head attr {
+ title {-
My Website
}
meta .→{} x="y"{}
}
- >body {
- >div #some-id {}
+ body {
+ div #some-id {}
div key="val" .class-1 .class-2 {
p {- This is some @em{-emphatic} text }
}
@@ -39,7 +39,7 @@ func TestParseFile(t *testing.T) {
s = fmt.Sprintf("%+v", ast)
result := `{Type:1 Text: Attrs:[] Children:[{Type:0 Text:html Attrs:[{Key:lang Value:en}] Children:[{Type:0 Text:head Attrs:[{Key:attr Value:}] Children:[{Type:0 Text:title Attrs:[] Children:[{Type:1 Text: Attrs:[] Children:[{Type:3 Text:
My Website
- Attrs:[] Children:[] Newline:false}] Newline:false}] Newline:true} {Type:0 Text:meta Attrs:[{Key:class Value:→{}} {Key:x Value:y}] Children:[] Newline:false}] Newline:true} {Type:0 Text:body Attrs:[] Children:[{Type:0 Text:div Attrs:[{Key:id Value:some-id}] Children:[] Newline:true} {Type:0 Text:div Attrs:[{Key:key Value:val} {Key:class Value:class-1} {Key:class Value:class-2}] Children:[{Type:0 Text:p Attrs:[] Children:[{Type:1 Text: Attrs:[] Children:[{Type:3 Text: This is some Attrs:[] Children:[] Newline:false} {Type:0 Text:em Attrs:[] Children:[{Type:1 Text: Attrs:[] Children:[{Type:3 Text:emphatic Attrs:[] Children:[] Newline:false}] Newline:false}] Newline:false} {Type:3 Text: text Attrs:[] Children:[] Newline:false}] Newline:false}] Newline:false}] Newline:false} {Type:0 Text:tags Attrs:[{Key:key Value:Some long value}] Children:[] Newline:false}] Newline:true}] Newline:false}] Newline:false}`
+ Attrs:[] Children:[]}]}]} {Type:0 Text:meta Attrs:[{Key:class Value:→{}} {Key:x Value:y}] Children:[]}]} {Type:0 Text:body Attrs:[] Children:[{Type:0 Text:div Attrs:[{Key:id Value:some-id}] Children:[]} {Type:0 Text:div Attrs:[{Key:key Value:val} {Key:class Value:class-1} {Key:class Value:class-2}] Children:[{Type:0 Text:p Attrs:[] Children:[{Type:1 Text: Attrs:[] Children:[{Type:3 Text: This is some Attrs:[] Children:[]} {Type:0 Text:em Attrs:[] Children:[{Type:1 Text: Attrs:[] Children:[{Type:3 Text:emphatic Attrs:[] Children:[]}]}]} {Type:3 Text: text Attrs:[] Children:[]}]}]}]} {Type:0 Text:tags Attrs:[{Key:key Value:Some long value}] Children:[]}]}]}]}`
if s != result {
t.Fatalf("ParseFile() parsed unexpected AST ‘%s’", s)
}