1 Star 1 Fork 0

bigbase / pg

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
streaming_parser.go 1.12 KB
一键复制 编辑 原始数据 按行查看 历史
Vladimir Mihailenco 提交于 2018-12-22 14:37 . Cleanup parsing
package parser
import (
"fmt"
"github.com/go-pg/pg/internal"
)
type StreamingParser struct {
internal.Reader
}
func NewStreamingParser(rd internal.Reader) StreamingParser {
return StreamingParser{
Reader: rd,
}
}
func (p StreamingParser) SkipByte(skip byte) error {
c, err := p.ReadByte()
if err != nil {
return err
}
if c == skip {
return nil
}
_ = p.UnreadByte()
return fmt.Errorf("got %q, wanted %q", c, skip)
}
func (p StreamingParser) ReadSubstring() ([]byte, error) {
var b []byte
c, err := p.ReadByte()
if err != nil {
return b, err
}
for {
if c == '"' {
return b, nil
}
next, err := p.ReadByte()
if err != nil {
return b, err
}
if c == '\\' {
switch next {
case '\\', '"':
b = append(b, next)
c, err = p.ReadByte()
if err != nil {
return nil, err
}
default:
b = append(b, '\\')
c = next
}
continue
}
if c == '\'' {
if next == '\'' {
b = append(b, '\'')
c, err = p.ReadByte()
if err != nil {
return nil, err
}
} else {
b = append(b, c)
c = next
}
continue
}
b = append(b, c)
c = next
}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/bigbase/pg.git
git@gitee.com:bigbase/pg.git
bigbase
pg
pg
v7.1.1

搜索帮助

344bd9b3 5694891 D2dac590 5694891