|
@@ -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 {
|