@@ -31,55 +31,7 @@ func init() {
3131 }
3232}
3333
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 {
8335 v := reflect .ValueOf (val )
8436 // deref if needed
8537 if v .Kind () == reflect .Ptr {
@@ -95,6 +47,7 @@ func RegisterTopLevelStringer(name string, val interface{}) error {
9547 }
9648
9749 d1Val := v .FieldByIndex (f .Index )
50+ d1ValOrig := d1Val
9851 if d1Val .Kind () == reflect .Ptr {
9952 d1Val = d1Val .Elem ()
10053 }
@@ -105,9 +58,8 @@ func RegisterTopLevelStringer(name string, val interface{}) error {
10558 switch d1Val .Type ().Kind () {
10659 // Convert type (to map-map) to express advanced control like tag handling.
10760 case reflect .Struct :
108- m := makeEntryMapMap(d1Val)
10961 name := strings .ToLower (f .Name )
110- err := RegisterExpander(name, makeExpanderFuncFromMap(m ))
62+ err := RegisterExpander (name , makeLazyExpanderFuncFromPtrToStruct ( d1ValOrig ))
11163 if err != nil {
11264 return locale .WrapError (
11365 err , "project_expand_register_expander_map" ,
@@ -133,7 +85,7 @@ func RegisterTopLevelStringer(name string, val interface{}) error {
13385 }
13486
13587 return nil
136- }*/
88+ }
13789
13890// RegisterExpander registers an Expander Func for some given handler value. The handler value
13991// must not effectively be a blank string and the Func must be defined. It is definitely possible
0 commit comments