summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-01-15 21:30:28 +0200
committerPaul Buetow <paul@buetow.org>2025-01-15 21:30:28 +0200
commit5c3813b593415615116acbe8d21f262c1f20e9f8 (patch)
tree614c4aeec89c24587eee7123b9a901aceb4b6788
parent94d9b5f48147ee9cc6ca57177e00f8679224603d (diff)
fix bug in regards to inline tags extractions involving newlines
-rw-r--r--go.mod22
-rw-r--r--go.sum32
-rw-r--r--internal/tags/inline.go5
-rw-r--r--internal/tags/inline_test.go10
4 files changed, 59 insertions, 10 deletions
diff --git a/go.mod b/go.mod
index b0d340f..649b5d9 100644
--- a/go.mod
+++ b/go.mod
@@ -3,14 +3,24 @@ module codeberg.org/snonux/gos
go 1.23.2
require (
- github.com/fatih/color v1.17.0
- golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561
- golang.org/x/net v0.30.0
- golang.org/x/oauth2 v0.23.0
+ github.com/fatih/color v1.18.0
+ golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8
+ golang.org/x/net v0.34.0
+ golang.org/x/oauth2 v0.25.0
)
require (
- github.com/mattn/go-colorable v0.1.13 // indirect
+ cloud.google.com/go/compute/metadata v0.6.0 // indirect
+ github.com/google/go-cmp v0.6.0 // indirect
+ github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
- golang.org/x/sys v0.26.0 // indirect
+ github.com/yuin/goldmark v1.7.8 // indirect
+ golang.org/x/crypto v0.32.0 // indirect
+ golang.org/x/mod v0.22.0 // indirect
+ golang.org/x/sync v0.10.0 // indirect
+ golang.org/x/sys v0.29.0 // indirect
+ golang.org/x/telemetry v0.0.0-20250105011419-6d9ea865d014 // indirect
+ golang.org/x/term v0.28.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
+ golang.org/x/tools v0.29.0 // indirect
)
diff --git a/go.sum b/go.sum
index 23d1a28..2ed1f37 100644
--- a/go.sum
+++ b/go.sum
@@ -1,19 +1,51 @@
+cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I=
+cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg=
github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
+github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
+github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
+github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic=
+github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
+golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
+golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561 h1:MDc5xs78ZrZr3HMQugiXOAkSZtfTpbJLDr/lwfgO53E=
golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
+golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA=
+golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU=
+golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
+golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
+golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
+golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
+golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
+golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/telemetry v0.0.0-20250105011419-6d9ea865d014 h1:r3fGtUghGlLJqjla3K3bVBiP7WyAWj8p6m1HNYae4Ho=
+golang.org/x/telemetry v0.0.0-20250105011419-6d9ea865d014/go.mod h1:Vee8NMPWD3JyoiukFTC6ehhS08hoyu5WYDePTtR6e6s=
+golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
+golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
+golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE=
+golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588=
diff --git a/internal/tags/inline.go b/internal/tags/inline.go
index da31acf..a4d90cc 100644
--- a/internal/tags/inline.go
+++ b/internal/tags/inline.go
@@ -57,7 +57,7 @@ func inlineExtractTagsFromContent(content string) ([]string, string, error) {
isShare := func(tag string) bool {
return strings.HasPrefix(tag, "share:")
}
- parts := strings.Split(content, " ")
+ parts := strings.Fields(content)
// First word must contain certain symbols to clarify as (inline) tags.
if !inlineTagRE.MatchString(parts[0]) {
return []string{}, content, nil
@@ -77,7 +77,8 @@ func inlineExtractTagsFromContent(content string) ([]string, string, error) {
}
}
}
- return tags, strings.TrimSpace(strings.Join(parts[1:], " ")), nil
+ content = strings.TrimPrefix(content, parts[0])
+ return tags, strings.TrimSpace(content), nil
}
return []string{}, content, nil
diff --git a/internal/tags/inline_test.go b/internal/tags/inline_test.go
index 9fafcf8..af089ed 100644
--- a/internal/tags/inline_test.go
+++ b/internal/tags/inline_test.go
@@ -17,6 +17,7 @@ func TestInlineExtractTagsToFilePath(t *testing.T) {
"share:li,foo this is the main content": "./gosdir/foo.golang.rox.share:linkedin.foo.extracted.txt",
"share:li:ma this is the main content": "./gosdir/foo.golang.rox.share:linkedin:mastodon.extracted.txt",
"share:li:ma,now this is the main content": "./gosdir/foo.golang.rox.share:linkedin:mastodon.now.extracted.txt",
+ "share,soon this will be shared soon": "./gosdir/foo.golang.rox.share.soon.extracted.txt",
}
for content, expectedFilePath := range table {
@@ -42,6 +43,11 @@ func TestInlineExtractTagsFromContent(t *testing.T) {
"share:li,foo this is the main content": {"share:linkedin", "foo"},
"shar()e:li,foo this is the main content": {"shar()e:li", "foo"},
"share this post": {},
+ "share,soon the main content here": {"share", "soon"},
+ `share,soon
+
+ the main content here
+ #foo`: {"share", "soon"},
}
for input, expectedTags := range table {
@@ -63,9 +69,9 @@ func TestInlineExtractTagsFromContent(t *testing.T) {
}
expectedMainContent := input
- parts := strings.Split(input, " ")
+ parts := strings.Fields(input)
if inlineTagRE.MatchString(parts[0]) {
- expectedMainContent = strings.Join(parts[1:], " ")
+ expectedMainContent = strings.TrimPrefix(expectedMainContent, parts[0])
}
if contentWithoutTags != strings.TrimSpace(expectedMainContent) {