From 3efa1fc8a98d2d90c204c7bd5a0e2519e1ac7745 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 22 Nov 2017 22:04:14 -0500 Subject: split the parser up, and have read methods like write emethods --- ez.go | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 ez.go (limited to 'ez.go') diff --git a/ez.go b/ez.go new file mode 100644 index 0000000..4c220b5 --- /dev/null +++ b/ez.go @@ -0,0 +1,65 @@ +package libfastimport + +import ( + "strconv" + + "git.lukeshu.com/go/libfastimport/textproto" +) + +type ezfiw struct { + fiw *textproto.FIWriter + err error +} + +func (e *ezfiw) WriteLine(a ...interface{}) { + if e.err == nil { + e.err = e.fiw.WriteLine(a...) + } +} + +func (e *ezfiw) WriteData(data string) { + if e.err == nil { + e.err = e.fiw.WriteData(data) + } +} + +func (e *ezfiw) WriteMark(idnum int) { + if e.err == nil { + e.err = e.fiw.WriteLine("mark", ":"+strconv.Itoa(idnum)) + } +} + +type ezfir struct { + fir fiReader + err error +} + +func (e *ezfir) Defer() error { + if r := recover(); r != nil { + if e.err != nil { + return e.err + } + panic(r) + } + return nil +} + +func (e *ezfir) Errcheck(err error) { + if err == nil { + return + } + e.err = err + panic("everything is fine") +} + +func (e *ezfir) PeekLine() string { + line, err := e.fir.PeekLine() + e.Errcheck(err) + return line +} + +func (e *ezfir) ReadLine() string { + line, err := e.fir.ReadLine() + e.Errcheck(err) + return line +} -- cgit v1.2.3