Types

/views/components/edit/AnyByType.html (2.4 KB)

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
{% import (
"fmt"

"{{{ .Package }}}/app/lib/types"
) %}

{% func AnyByType(key string, id string, x any, t *types.Wrapped) %}{% stripspace %}
{% switch t.Key() %}
{% case types.KeyAny %}
{%= Default(key, id, x, t) %}
{% case types.KeyBit %}
{%= Default(key, id, x, t) %}
{% case types.KeyBool %}
{%= Bool(key, id, x, false) %}
{% case types.KeyByte %}
{%= Default(key, id, x, t) %}
{% case types.KeyChar %}
{%= Default(key, id, x, t) %}
{% case types.KeyDate %}
{%= Default(key, id, x, t) %}
{% case types.KeyEnum %}
<span title="enum:{%s t.T.(*types.Enum).Ref %}">{%v x %}</span>
{% case types.KeyEnumValue %}
{%= Default(key, id, x, t) %}
{% case types.KeyError %}
{%= Default(key, id, x, t) %}
{% case types.KeyFloat %}
{%= Default(key, id, x, t) %}
{% case types.KeyInt %}
{%= Int(key, id, x) %}
{% case types.KeyJSON %}
{%= Default(key, id, x, t) %}
{% case types.KeyList %}
{%= Default(key, id, x, t) %}
{% case types.KeyMap %}
{%= Default(key, id, x, t) %}
{% case types.KeyMethod %}
{%= Default(key, id, x, t) %}
{% case types.KeyNil %}
{%= Default(key, id, x, t) %}
{% case types.KeyOption %}
{%= Option(key, id, x, t.T.(*types.Option)) %}
{% case types.KeyOrderedMap %}
{%= Default(key, id, x, t) %}
{% case types.KeyRange %}
{%= Default(key, id, x, t) %}
{% case types.KeyReference %}
{%= Default(key, id, x, t) %}
{% case types.KeySet %}
{%= Default(key, id, x, t) %}
{% case types.KeyString %}
{%= String(key, id, fmt.Sprint(x)) %}
{% case types.KeyTime %}
{%= Default(key, id, x, t) %}
{% case types.KeyTimestamp %}
{%= Default(key, id, x, t) %}
{% case types.KeyTimestampZoned %}
{%= Default(key, id, x, t) %}
{% case types.KeyUnknown %}
{%= Default(key, id, x, t) %}
{% case types.KeyUUID %}
{%= Default(key, id, x, t) %}
{% case types.KeyValueMap %}
{%= Default(key, id, x, t) %}
{% case types.KeyXML %}
{%= Default(key, id, x, t) %}
{% default %}
{%= Default(key, id, x, t) %}
{% endswitch %}
{% endstripspace %}{% endfunc %}

{% func Default(key string, id string, x any, t types.Type) %}{% stripspace %}
{% code
msg := fmt.Sprintf("unhandled type: %s (%T)", t.String(), x)
if x == nil {
x = "∅"
}
%}
<input title="{%s msg %}" value="{%v x %}" name="{%s key %}" id="{%s id %}" />
{% endstripspace %}{% endfunc %}