about summary refs log tree commit diff stats
path: root/gomponents_generic.go
diff options
context:
space:
mode:
authorMarkus Wüstenberg2022-09-22 09:41:06 +0200
committerGitHub2022-09-22 09:41:06 +0200
commitf387a7123040d9414350bf783bdeff17ac0572c7 (patch)
tree89859a54e3cd6bf3e6169c384529af98aeee4dc5 /gomponents_generic.go
parent3334d6c7d049cec57ad36f9d5cb0d491faf54a5d (diff)
downloadgomponents-f387a7123040d9414350bf783bdeff17ac0572c7.tar.lz
gomponents-f387a7123040d9414350bf783bdeff17ac0572c7.tar.zst
gomponents-f387a7123040d9414350bf783bdeff17ac0572c7.zip
Add generic Map implementation (#108)
Instead of waiting for a good time to switch the `Map` implementation,
I've decided to just offer two implementations: one for Go versions
before 1.18, and one for 1.18 and onwards. This is achieved using build
tags in the source files.

This is obviously a breaking change for consumers of this library that
use Go 1.18 and onwards.

See #88
Diffstat (limited to 'gomponents_generic.go')
-rw-r--r--gomponents_generic.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/gomponents_generic.go b/gomponents_generic.go
new file mode 100644
index 0000000..6e6500b
--- /dev/null
+++ b/gomponents_generic.go
@@ -0,0 +1,13 @@
+//go:build go1.18
+// +build go1.18
+
+package gomponents
+
+// Map a slice of anything to a slice of Nodes.
+func Map[T any](ts []T, cb func(T) Node) []Node {
+	var nodes []Node
+	for _, t := range ts {
+		nodes = append(nodes, cb(t))
+	}
+	return nodes
+}