aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/Xe/ln/context.go
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2017-12-13 10:43:58 -0800
committerChristine Dodrill <me@christine.website>2017-12-13 11:42:37 -0800
commit3a21ef192628f6952eaa981bcdf718a35a4b43c7 (patch)
tree9c88a3ddc57ab5014f436ec2c08c96280872632e /vendor/github.com/Xe/ln/context.go
parent3b4b6cede9bc30008b0f40989a1564b26e64fd05 (diff)
downloadxesite-3a21ef192628f6952eaa981bcdf718a35a4b43c7.tar.xz
xesite-3a21ef192628f6952eaa981bcdf718a35a4b43c7.zip
convert to go buildpack
Diffstat (limited to 'vendor/github.com/Xe/ln/context.go')
-rw-r--r--vendor/github.com/Xe/ln/context.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/vendor/github.com/Xe/ln/context.go b/vendor/github.com/Xe/ln/context.go
new file mode 100644
index 0000000..0ea3229
--- /dev/null
+++ b/vendor/github.com/Xe/ln/context.go
@@ -0,0 +1,38 @@
+package ln
+
+import (
+ "context"
+)
+
+type ctxKey int
+
+const (
+ fKey = iota
+)
+
+// WithF stores or appends a given F instance into a context.
+func WithF(ctx context.Context, f F) context.Context {
+ pf, ok := FFromContext(ctx)
+ if !ok {
+ return context.WithValue(ctx, fKey, f)
+ }
+
+ pf.Extend(f)
+
+ return context.WithValue(ctx, fKey, pf)
+}
+
+// FFromContext fetches the `F` out of the context if it exists.
+func FFromContext(ctx context.Context) (F, bool) {
+ fvp := ctx.Value(fKey)
+ if fvp == nil {
+ return nil, false
+ }
+
+ f, ok := fvp.(F)
+ if !ok {
+ return nil, false
+ }
+
+ return f, true
+}