@@ -14,59 +14,45 @@ return (function ()
1414 selfobject .private = props .private or {}
1515 selfobject .meta_table = props .meta_table or {}
1616
17- selfobject .set_meta_method = function (method_name ,callback )
18- selfobject .meta_table [method_name ] = function (...)
19- return callback (selfobject .public ,selfobject .private , ... )
20- end
21- herigitage .setmetatable (selfobject .public , selfobject .meta_table )
22- end
23- selfobject .meta_extends = function (props )
24- for k ,v in herigitage .pairs (props ) do
25- local item = selfobject .meta_table [k ]
26- if herigitage .type (item ) == " function" then
27- selfobject .set_meta_method (k , v )
28- else
29- selfobject .meta_table [k ] = v
17+ -- Factory function to create method setters
18+ local function createMethodSetter (target , extraAction )
19+ return function (method_name , callback )
20+ target [method_name ] = function (...)
21+ return callback (selfobject .public , selfobject .private , ... )
3022 end
31- end
32-
33- end
34-
35- selfobject .set_public_method = function (method_name , callback )
36- selfobject .public [method_name ] = function (...)
37- return callback (selfobject .public ,selfobject .private , ... )
38- end
39- end
40-
41- selfobject .public_extends = function (props )
42- for k ,v in herigitage .pairs (props ) do
43- local item = selfobject .public [k ]
44- if herigitage .type (item ) == " function" then
45- selfobject .set_public_method (k , v )
46- else
47- selfobject .public [k ] = v
23+ if extraAction then
24+ extraAction ()
4825 end
4926 end
50-
51- end
52-
53- selfobject .set_private_method = function (method_name , callback )
54- selfobject .private [method_name ] = function (...)
55- return callback (selfobject .public ,selfobject .private , ... )
56- end
5727 end
58- selfobject .private_extends = function (props )
59- for k ,v in herigitage .pairs (props ) do
60- local item = selfobject .private [k ]
61- if herigitage .type (item ) == " function" then
62- selfobject .set_private_method (k , v )
63- else
64- selfobject .private [k ] = v
28+
29+ -- Factory function to create extends functions
30+ local function createExtends (target , setter )
31+ return function (props )
32+ for k ,v in herigitage .pairs (props ) do
33+ if herigitage .type (v ) == " function" then
34+ setter (k , v )
35+ else
36+ target [k ] = v
37+ end
6538 end
6639 end
67-
6840 end
6941
42+ selfobject .set_meta_method = createMethodSetter (selfobject .meta_table , function ()
43+ herigitage .setmetatable (selfobject .public , selfobject .meta_table )
44+ end )
45+
46+ selfobject .set_public_method = createMethodSetter (selfobject .public )
47+
48+ selfobject .set_private_method = createMethodSetter (selfobject .private )
49+
50+ selfobject .meta_extends = createExtends (selfobject .meta_table , selfobject .set_meta_method )
51+
52+ selfobject .public_extends = createExtends (selfobject .public , selfobject .set_public_method )
53+
54+ selfobject .private_extends = createExtends (selfobject .private , selfobject .set_private_method )
55+
7056 return selfobject
7157 end
7258
0 commit comments