From e3bf526c33e545694fafdf4e67ad7a92183d52c3 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 15 Oct 2020 19:05:09 +0300 Subject: [PATCH] Slightly more documentation --- README | 8 +++++++- r.go | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/README b/README index 8489c68..23f1fa3 100644 --- a/README +++ b/README @@ -1 +1,7 @@ -GNU recutils'es recfile parser on pure Go. +GNU recutils'es recfile parser on pure Go. recfiles are human-editable, +plaintext databases. This library allows you to read records and their +fields from it. Look for cmd/gorecsel as an example usage. + +* iterate through the records and their fields +* ignore comments +* support continuation lines (\$) and multilines (^+) 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 -- 2.44.0