0x4a52466c696e74 10 months ago
parent
commit
76070eb778
2 changed files with 14 additions and 6 deletions
  1. 13 5
      parser.go
  2. 1 1
      z_test.go

+ 13 - 5
parser.go

@@ -3,6 +3,7 @@ package metla
 import (
 	"bytes"
 	"fmt"
+	"log"
 )
 
 type tokenType uint8
@@ -60,6 +61,7 @@ func (s tError) Error() string {
 }
 
 func parseBytes(src []byte, alias string) (res []byte, err error) {
+	log.Println("parse bytes")
 	var rb bytes.Buffer
 	lp, lastPos, lastLine := lineParser{src: src}, 0, 0
 
@@ -70,7 +72,11 @@ func parseBytes(src []byte, alias string) (res []byte, err error) {
 				offset = 1
 			}
 			rb.Write([]byte("flush('"))
-			rb.Write(bytes.ReplaceAll(bytes.ReplaceAll(lp.Block(lastPos, offset), []byte("'"), []byte("\\'")), []byte("\n"), []byte("\\n")))
+			bl := lp.Block(lastPos, offset)
+			rpl := bytes.ReplaceAll(bl, []byte("'"), []byte("\\'"))
+			rpl = bytes.ReplaceAll(rpl, []byte{13}, []byte(""))
+			rpl = bytes.ReplaceAll(rpl, []byte("\n"), []byte("\\n"))
+			rb.Write(rpl)
 			rb.Write([]byte("');"))
 			lastPos, lastLine = lp.Pos(), lp.Line()
 		}
@@ -148,10 +154,12 @@ func (s *lineParser) Next() bool {
 	return false
 }
 
-func (s *lineParser) Block(start int, offsetRight int) []byte { return s.src[start : s.pos-offsetRight] }
-func (s *lineParser) Line() int                               { return s.line }
-func (s *lineParser) Pos() int                                { return s.pos }
-func (s *lineParser) Val() byte                               { return s.src[s.pos] }
+func (s *lineParser) Block(start int, offsetRight int) []byte {
+	return s.src[start : s.pos-offsetRight]
+}
+func (s *lineParser) Line() int { return s.line }
+func (s *lineParser) Pos() int  { return s.pos }
+func (s *lineParser) Val() byte { return s.src[s.pos] }
 
 func (s *lineParser) FindNext(val byte) bool {
 	for {

+ 1 - 1
z_test.go

@@ -35,7 +35,7 @@ func TestParser(t *testing.T) {
 	params := map[string]interface{}{
 		"name": "Heya ))",
 	}
-	log.Println(m.Exec("index.html", params, &b))
+	log.Println(m.Exec("index1.html", params, &b))
 
 	log.Println(b.String())
 }