aboutsummaryrefslogtreecommitdiffhomepage
path: root/vendor/github.com/zclconf/go-cty/cty/map_type.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/zclconf/go-cty/cty/map_type.go')
-rw-r--r--vendor/github.com/zclconf/go-cty/cty/map_type.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/vendor/github.com/zclconf/go-cty/cty/map_type.go b/vendor/github.com/zclconf/go-cty/cty/map_type.go
new file mode 100644
index 0000000..ae9abae
--- /dev/null
+++ b/vendor/github.com/zclconf/go-cty/cty/map_type.go
@@ -0,0 +1,68 @@
1package cty
2
3import (
4 "fmt"
5)
6
7// TypeList instances represent specific list types. Each distinct ElementType
8// creates a distinct, non-equal list type.
9type typeMap struct {
10 typeImplSigil
11 ElementTypeT Type
12}
13
14// Map creates a map type with the given element Type.
15//
16// Map types are CollectionType implementations.
17func Map(elem Type) Type {
18 return Type{
19 typeMap{
20 ElementTypeT: elem,
21 },
22 }
23}
24
25// Equals returns true if the other Type is a map whose element type is
26// equal to that of the receiver.
27func (t typeMap) Equals(other Type) bool {
28 ot, isMap := other.typeImpl.(typeMap)
29 if !isMap {
30 return false
31 }
32
33 return t.ElementTypeT.Equals(ot.ElementTypeT)
34}
35
36func (t typeMap) FriendlyName() string {
37 return "map of " + t.ElementTypeT.FriendlyName()
38}
39
40func (t typeMap) ElementType() Type {
41 return t.ElementTypeT
42}
43
44func (t typeMap) GoString() string {
45 return fmt.Sprintf("cty.Map(%#v)", t.ElementTypeT)
46}
47
48// IsMapType returns true if the given type is a list type, regardless of its
49// element type.
50func (t Type) IsMapType() bool {
51 _, ok := t.typeImpl.(typeMap)
52 return ok
53}
54
55// MapElementType is a convenience method that checks if the given type is
56// a map type, returning a pointer to its element type if so and nil
57// otherwise. This is intended to allow convenient conditional branches,
58// like so:
59//
60// if et := t.MapElementType(); et != nil {
61// // Do something with *et
62// }
63func (t Type) MapElementType() *Type {
64 if lt, ok := t.typeImpl.(typeMap); ok {
65 return &lt.ElementTypeT
66 }
67 return nil
68}