]> Sergey Matveev's repositories - sgblog.git/commitdiff
Use external recfiles parser library v0.9.1
authorSergey Matveev <stargrave@stargrave.org>
Thu, 15 Oct 2020 15:58:14 +0000 (18:58 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 15 Oct 2020 15:58:14 +0000 (18:58 +0300)
cmd/sgblog/main.go
common.go
go.mod
go.sum

index 088d6646ed1f13a7ae6fc5702a821b9b42d780b8..f5b45823510e36a62f025335e741e22d0ecc8339 100644 (file)
@@ -32,6 +32,7 @@ import (
        "github.com/go-git/go-git/v5"
        "github.com/go-git/go-git/v5/plumbing"
        "github.com/go-git/go-git/v5/plumbing/object"
+       "go.cypherpunks.ru/recfile"
 )
 
 const (
@@ -118,36 +119,24 @@ func getNote(tree *object.Tree, what plumbing.Hash) []byte {
 
 func parseComments(data []byte) []string {
        comments := []string{}
-       isBody := false
-       comment := make([]string, 0, 4)
-       lines := strings.Split(strings.TrimSuffix(string(data), "\n"), "\n")
-       if len(lines) == 1 {
-               return comments
-       }
-       for _, s := range lines {
-               if s == "" {
-                       comments = append(comments, strings.Join(comment, "\n"))
-                       comment = make([]string, 0, 4)
-                       isBody = false
-                       continue
-               }
-               if s == "Body:" {
-                       isBody = true
-                       comment = append(comment, "")
-                       continue
+       r := recfile.NewReader(bytes.NewReader(data))
+       for {
+               fields, err := r.Next()
+               if err != nil {
+                       break
                }
-               if isBody {
-                       if s == "+" {
-                               comment = append(comment, "")
-                       } else {
-                               comment = append(comment, strings.TrimPrefix(s, "+ "))
-                       }
+               if len(fields) != 3 ||
+                       fields[0].Name != "From" ||
+                       fields[1].Name != "Date" ||
+                       fields[2].Name != "Body" {
                        continue
                }
-               comment = append(comment, s)
-       }
-       if len(comment) > 1 {
-               comments = append(comments, strings.Join(comment, "\n"))
+               comments = append(comments, fmt.Sprintf(
+                       "%s: %s\n%s: %s\n%s",
+                       fields[0].Name, fields[0].Value,
+                       fields[1].Name, fields[1].Value,
+                       fields[2].Value,
+               ))
        }
        return comments
 }
index 7fae06b6c1a2254883b610a49238f9683842e684..55d2d5f3eb1632e8a3133880e897e073dbb603cc 100644 (file)
--- a/common.go
+++ b/common.go
@@ -2,6 +2,6 @@
 package sgblog
 
 const (
-       Version = "0.9.0"
+       Version = "0.9.1"
        WhenFmt = "2006-01-02 15:04:05Z07:00"
 )
diff --git a/go.mod b/go.mod
index 25f4d41a8df1a93476c28d78c735bf43254f764c..e9cd706946f750abe3c8f989355f3aea5842c9a1 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -6,6 +6,7 @@ require (
        github.com/go-git/go-git/v5 v5.1.0
        github.com/hjson/hjson-go v3.0.1+incompatible
        github.com/imdario/mergo v0.3.11 // indirect
+       go.cypherpunks.ru/recfile v0.1.0
        golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a
        golang.org/x/net v0.0.0-20200925080053-05aa5d4ee321 // indirect
        golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d // indirect
diff --git a/go.sum b/go.sum
index a1fa6911dfe1a5d1cd897054dcc1aeb40088df00..757f0c602b88fcdbef8b389ea5035c20a5d727be 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -57,6 +57,8 @@ github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJy
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70=
 github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
+go.cypherpunks.ru/recfile v0.1.0 h1:JNtRwUpA6zXl/mJTBY3zK0ynmh3Dbp4dZb2zN+HUmnk=
+go.cypherpunks.ru/recfile v0.1.0/go.mod h1:p1ZUMeyQQbQg+ICtKH3+Zt59QLI0tCZYZj/75Vp1buk=
 golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=