@@ -31,55 +31,7 @@ func init() {
31
31
}
32
32
}
33
33
34
- func RegisterTopLevelStruct (name string , val interface {}) error {
35
- v := reflect .ValueOf (val )
36
- if v .Kind () == reflect .Ptr {
37
- v = v .Elem ()
38
- }
39
-
40
- m := makeEntryMapMap (v )
41
- name = strings .ToLower (name )
42
- err := RegisterExpander (name , makeExpanderFuncFromMap (m ))
43
- if err != nil {
44
- return locale .WrapError (
45
- err , "project_expand_register_expander_map" ,
46
- "Cannot register expander (map)" ,
47
- )
48
- }
49
-
50
- return nil
51
- }
52
-
53
- func RegisterTopLevelFunc (name string , val interface {}) error {
54
- v := reflect .ValueOf (val )
55
- if v .Kind () == reflect .Ptr {
56
- v = v .Elem ()
57
- }
58
-
59
- name = strings .ToLower (name )
60
- err := RegisterExpander (name , makeExpanderFuncFromFunc (v ))
61
- if err != nil {
62
- return locale .WrapError (
63
- err , "project_expand_register_expander_func" ,
64
- "Cannot register expander (func)" ,
65
- )
66
- }
67
-
68
- return nil
69
- }
70
-
71
- func RegisterTopLevelStringer (name string , val interface {}) error {
72
- v := reflect .ValueOf (val )
73
- if v .Kind () == reflect .Ptr {
74
- v = v .Elem ()
75
- }
76
-
77
- topLevelLookup [strings .ToLower (name )] = fmt .Sprintf ("%v" , v .Interface ())
78
-
79
- return nil
80
- }
81
-
82
- /*func RegisterStruct(val interface{}) error {
34
+ func RegisterStruct (val interface {}) error {
83
35
v := reflect .ValueOf (val )
84
36
// deref if needed
85
37
if v .Kind () == reflect .Ptr {
@@ -95,6 +47,7 @@ func RegisterTopLevelStringer(name string, val interface{}) error {
95
47
}
96
48
97
49
d1Val := v .FieldByIndex (f .Index )
50
+ d1ValOrig := d1Val
98
51
if d1Val .Kind () == reflect .Ptr {
99
52
d1Val = d1Val .Elem ()
100
53
}
@@ -105,9 +58,8 @@ func RegisterTopLevelStringer(name string, val interface{}) error {
105
58
switch d1Val .Type ().Kind () {
106
59
// Convert type (to map-map) to express advanced control like tag handling.
107
60
case reflect .Struct :
108
- m := makeEntryMapMap(d1Val)
109
61
name := strings .ToLower (f .Name )
110
- err := RegisterExpander(name, makeExpanderFuncFromMap(m ))
62
+ err := RegisterExpander (name , makeLazyExpanderFuncFromPtrToStruct ( d1ValOrig ))
111
63
if err != nil {
112
64
return locale .WrapError (
113
65
err , "project_expand_register_expander_map" ,
@@ -133,7 +85,7 @@ func RegisterTopLevelStringer(name string, val interface{}) error {
133
85
}
134
86
135
87
return nil
136
- }*/
88
+ }
137
89
138
90
// RegisterExpander registers an Expander Func for some given handler value. The handler value
139
91
// must not effectively be a blank string and the Func must be defined. It is definitely possible
0 commit comments