X-Git-Url: http://www.git.cypherpunks.ru/?p=gorecfile.git;a=blobdiff_plain;f=r.go;fp=r.go;h=9a4420d7b6968f8649c44d9ec3481227adf6896c;hp=36141715f151f5b8027ac962adf692897b40b4df;hb=e3bf526c33e545694fafdf4e67ad7a92183d52c3;hpb=d2a8c845d659ec5b5dbda5e9c5207e7f09269c50 diff --git a/r.go b/r.go index 3614171..9a4420d 100644 --- a/r.go +++ b/r.go @@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +// GNU recutils'es recfiles parser on pure Go package recfile import ( @@ -25,10 +26,14 @@ import ( "strings" ) +var KeyValRe = regexp.MustCompile(`([a-zA-Z%][a-zA-Z0-9_]*):\s*(.*)$`) + type Reader struct { scanner *bufio.Scanner } +// Create Reader for iterating through the records. It uses +// bufio.Scanner, so can read more than currently parsed records take. func NewReader(r io.Reader) *Reader { return &Reader{bufio.NewScanner(r)} } @@ -38,8 +43,8 @@ type Field struct { Value string } -var KeyValRe = regexp.MustCompile(`([a-zA-Z%][a-zA-Z0-9_]*):\s*(.*)$`) - +// Get next record. Each record is just a collection of fields. io.EOF +// is returned if there is nothing to read more. func (r *Reader) Next() ([]Field, error) { fields := make([]Field, 0, 1) var text string