]> Cypherpunks.ru repositories - gorecfile.git/blobdiff - r.go
Raised copyright years
[gorecfile.git] / r.go
diff --git a/r.go b/r.go
index 2b917ae554c7ca20fc7cf43dfae462440de41063..483fc2a67cb830076a5cbb69c2b7a539ed959f1a 100644 (file)
--- a/r.go
+++ b/r.go
@@ -1,6 +1,6 @@
 /*
 recfile -- GNU recutils'es recfiles parser on pure Go
-Copyright (C) 2020 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2020-2022 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -15,7 +15,6 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-// GNU recutils'es recfiles parser on pure Go
 package recfile
 
 import (
@@ -123,3 +122,29 @@ func (r *Reader) Next() ([]Field, error) {
        }
        return fields, nil
 }
+
+// Same as Next(), but with unique keys and last value.
+func (r *Reader) NextMap() (map[string]string, error) {
+       fields, err := r.Next()
+       if err != nil {
+               return nil, err
+       }
+       m := make(map[string]string, len(fields))
+       for _, f := range fields {
+               m[f.Name] = f.Value
+       }
+       return m, nil
+}
+
+// Same as Next(), but with unique keys and slices of values.
+func (r *Reader) NextMapWithSlice() (map[string][]string, error) {
+       fields, err := r.Next()
+       if err != nil {
+               return nil, err
+       }
+       m := make(map[string][]string)
+       for _, f := range fields {
+               m[f.Name] = append(m[f.Name], f.Value)
+       }
+       return m, nil
+}