white_gold 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/dll/tgui.dll +0 -0
- data/ext/so/libtgui.so +0 -0
- data/lib/white_gold/abi/enum.rb +1 -1
- data/lib/white_gold/abi/extern_object.rb +2 -2
- data/lib/white_gold/abi/interface/interface.rb +3 -7
- data/lib/white_gold/convention/container_widgets.rb +47 -87
- data/lib/white_gold/convention/page.rb +18 -8
- data/lib/white_gold/convention/theme/boolean_attribute.rb +11 -9
- data/lib/white_gold/convention/theme/color_attribute.rb +11 -9
- data/lib/white_gold/convention/theme/float_attribute.rb +11 -9
- data/lib/white_gold/convention/theme/outline_attribute.rb +11 -9
- data/lib/white_gold/convention/theme/text_styles_attribute.rb +14 -12
- data/lib/white_gold/convention/theme/texture_attribute.rb +14 -12
- data/lib/white_gold/convention/theme/theme_attributed.rb +2 -2
- data/lib/white_gold/convention/theme/theme_component.rb +2 -2
- data/lib/white_gold/convention/theme_attributes.rb +6 -2
- data/lib/white_gold/convention/widget/keyboard_control.rb +30 -0
- data/lib/white_gold/convention/widget_class_aliases.rb +24 -0
- data/lib/white_gold/convention/widget_like.rb +1 -4
- data/lib/white_gold/dsl/backend_gui.rb +5 -4
- data/lib/white_gold/dsl/canvas.rb +5 -5
- data/lib/white_gold/dsl/chat_box.rb +1 -1
- data/lib/white_gold/dsl/child_window.rb +2 -2
- data/lib/white_gold/dsl/color.rb +39 -29
- data/lib/white_gold/dsl/combo_box.rb +2 -2
- data/lib/white_gold/dsl/container.rb +1 -1
- data/lib/white_gold/dsl/custom_widget.rb +28 -0
- data/lib/white_gold/dsl/edit_box.rb +1 -2
- data/lib/white_gold/dsl/font.rb +4 -0
- data/lib/white_gold/dsl/grid.rb +34 -10
- data/lib/white_gold/dsl/gui.rb +14 -1
- data/lib/white_gold/dsl/label.rb +3 -2
- data/lib/white_gold/dsl/list_box.rb +2 -2
- data/lib/white_gold/dsl/list_view.rb +12 -12
- data/lib/white_gold/dsl/menu_bar.rb +4 -4
- data/lib/white_gold/dsl/message_box.rb +3 -3
- data/lib/white_gold/dsl/outline.rb +4 -0
- data/lib/white_gold/dsl/panel.rb +8 -0
- data/lib/white_gold/dsl/panel_list_box.rb +12 -3
- data/lib/white_gold/dsl/picture.rb +0 -2
- data/lib/white_gold/dsl/radio_button.rb +16 -3
- data/lib/white_gold/dsl/scrollable_panel.rb +7 -0
- data/lib/white_gold/dsl/sfml/circle_shape.rb +4 -0
- data/lib/white_gold/dsl/sfml/convex_shape.rb +4 -0
- data/lib/white_gold/dsl/sfml/rectangle_shape.rb +4 -0
- data/lib/white_gold/dsl/sfml/shape.rb +3 -2
- data/lib/white_gold/dsl/sfml/text.rb +7 -1
- data/lib/white_gold/dsl/signal/global_signal.rb +1 -1
- data/lib/white_gold/dsl/signal/signal.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_animation_type.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_bool.rb +4 -4
- data/lib/white_gold/dsl/signal/signal_color.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_float.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_int.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_pointer.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_range.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_show_effect.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_string.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_u_int.rb +1 -1
- data/lib/white_gold/dsl/signal/signal_vector2f.rb +1 -1
- data/lib/white_gold/dsl/tab_container.rb +2 -2
- data/lib/white_gold/dsl/tabs.rb +2 -2
- data/lib/white_gold/dsl/texture.rb +6 -1
- data/lib/white_gold/dsl/theme.rb +3 -4
- data/lib/white_gold/dsl/toggle_button.rb +3 -0
- data/lib/white_gold/dsl/tree_view.rb +2 -2
- data/lib/white_gold/dsl/util.rb +3 -1
- data/lib/white_gold/dsl/widget.rb +59 -27
- data/lib/white_gold/dsl/window.rb +12 -2
- data/lib/white_gold/generated/tgui-abi-loader.gf.rb +106 -15
- data/lib/white_gold/library/theme/light.rb +8 -1
- data/lib/white_gold/master.rb +77 -44
- data/lib/white_gold/path/array.path.rb +9 -0
- data/lib/white_gold/path/object.path.rb +0 -6
- data/lib/white_gold/tgui-abi.rb +36 -31
- data/lib/white_gold/version.rb +1 -1
- data/lib/white_gold.rb +8 -6
- metadata +37 -9
- data/lib/white_gold/abi/reducer.rb +0 -12
- data/lib/white_gold/convention/bang_def.rb +0 -5
- data/lib/white_gold/convention/bang_nest.rb +0 -26
- data/lib/white_gold/convention/bang_nested_caller.rb +0 -48
- data/lib/white_gold/convention/proc_method_factory.rb +0 -22
data/lib/white_gold/tgui-abi.rb
CHANGED
@@ -29,7 +29,7 @@ module Tgui
|
|
29
29
|
'float y'
|
30
30
|
]
|
31
31
|
|
32
|
-
|
32
|
+
Vector2i = struct [
|
33
33
|
'int x',
|
34
34
|
'int y'
|
35
35
|
]
|
@@ -43,7 +43,7 @@ module Tgui
|
|
43
43
|
end
|
44
44
|
|
45
45
|
Vector2f = Abi::Vector2f
|
46
|
-
|
46
|
+
Vector2i = Abi::Vector2i
|
47
47
|
UIntRect = Abi::UIntRect
|
48
48
|
end
|
49
49
|
|
@@ -56,6 +56,8 @@ class ExternObject
|
|
56
56
|
:size_bottom_left, :size_top_right, :size_horizontal, :size_vertical,
|
57
57
|
:crosshair, :help, :not_allowed
|
58
58
|
|
59
|
+
abi_bit_enum "WindowStyle", :none, :titlebar, :resize, :close, :fullscreen, :topmost, default: 7
|
60
|
+
|
59
61
|
end
|
60
62
|
|
61
63
|
def each_file_ancestor base, dir, &b
|
@@ -69,21 +71,20 @@ def each_file_ancestor base, dir, &b
|
|
69
71
|
end
|
70
72
|
end
|
71
73
|
|
72
|
-
each_file_ancestor File.dirname(__FILE__), "dsl" do |
|
73
|
-
require_relative
|
74
|
+
each_file_ancestor File.dirname(__FILE__), "dsl" do |file|
|
75
|
+
require_relative file
|
76
|
+
end
|
77
|
+
each_file_ancestor File.dirname(__FILE__), "convention/widget" do |file|
|
78
|
+
require_relative file
|
74
79
|
end
|
75
80
|
|
76
81
|
# ABI loader should be required after dsl directory files because of class hierarchy
|
77
82
|
require_relative 'generated/tgui-abi-loader.gf'
|
83
|
+
require_relative 'convention/widget_class_aliases'
|
78
84
|
require_relative 'convention/container_widgets'
|
79
85
|
require_relative 'convention/theme_attributes'
|
80
86
|
|
81
87
|
class ExternObject
|
82
|
-
class << self
|
83
|
-
def finalizer pointer
|
84
|
-
Tgui::Util.free(pointer)
|
85
|
-
end
|
86
|
-
end
|
87
88
|
|
88
89
|
abi_packer Object do |o|
|
89
90
|
o = o.first if o.is_a? Array
|
@@ -155,7 +156,7 @@ class ExternObject
|
|
155
156
|
when Numeric then Unit.nominate o
|
156
157
|
when :center then "(parent.innersize - size) / 2"
|
157
158
|
when :begin then "0"
|
158
|
-
when :end then "parent.innersize - size
|
159
|
+
when :end then "parent.innersize - size"
|
159
160
|
else raise "Invalid value `#{o}` given"
|
160
161
|
end
|
161
162
|
end
|
@@ -172,24 +173,29 @@ class ExternObject
|
|
172
173
|
[abi_pack_float(x), abi_pack_float(y)]
|
173
174
|
end
|
174
175
|
|
175
|
-
abi_packer Tgui::Abi::
|
176
|
-
case
|
177
|
-
when
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
176
|
+
abi_packer Tgui::Abi::Vector2i do |*arg|
|
177
|
+
case arg.size
|
178
|
+
when 1
|
179
|
+
a = arg.first
|
180
|
+
x = y = a
|
181
|
+
when 2
|
182
|
+
x, y = *arg
|
183
|
+
else raise "Unsupported argument #{arg}"
|
182
184
|
end
|
185
|
+
[abi_pack_integer(x), abi_pack_integer(y)]
|
183
186
|
end
|
184
187
|
|
185
|
-
abi_packer Tgui::Abi::UIntRect do |
|
186
|
-
case
|
187
|
-
when
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
188
|
+
abi_packer Tgui::Abi::UIntRect do |*arg|
|
189
|
+
case arg.size
|
190
|
+
when 1
|
191
|
+
a = [arg.first] * 4
|
192
|
+
when 2
|
193
|
+
a = [arg[0], arg[0], arg[1], arg[1]]
|
194
|
+
when 4
|
195
|
+
a = arg
|
196
|
+
else raise "Unsupported argument #{arg}"
|
192
197
|
end
|
198
|
+
a.map{ abi_pack_integer _1 }
|
193
199
|
end
|
194
200
|
|
195
201
|
abi_packer Tgui::Color
|
@@ -201,11 +207,10 @@ class ExternObject
|
|
201
207
|
a = []
|
202
208
|
(0..).each do |i|
|
203
209
|
i *= 4
|
204
|
-
ch = (o[i]) | (o[i + 1] << 8) | (o[i + 2] << 16) | (o[i + 3] << 24)
|
210
|
+
ch = (o[i] & 0xFF) | ((o[i + 1] & 0xFF) << 8) | ((o[i + 2] & 0xFF) << 16) | ((o[i + 3] & 0xFF) << 24)
|
205
211
|
break if ch == 0
|
206
212
|
a << ch
|
207
213
|
end
|
208
|
-
raise "deleted string!" if a[0] == 572653601
|
209
214
|
a.pack("N*").encode("UTF-8", "UTF-32BE")
|
210
215
|
end
|
211
216
|
|
@@ -224,7 +229,7 @@ class ExternObject
|
|
224
229
|
vector2f_unpacker = proc do |o|
|
225
230
|
v = Tgui::Vector2f.new o
|
226
231
|
r = [v.x, v.y]
|
227
|
-
Util.
|
232
|
+
Tgui::Util.delete_vector2f(o)
|
228
233
|
r
|
229
234
|
end
|
230
235
|
|
@@ -234,17 +239,17 @@ class ExternObject
|
|
234
239
|
|
235
240
|
abi_unpacker Tgui::Vector2f, &vector2f_unpacker
|
236
241
|
|
237
|
-
abi_unpacker Tgui::
|
238
|
-
v = Tgui::
|
242
|
+
abi_unpacker Tgui::Vector2i do |o|
|
243
|
+
v = Tgui::Vector2i.new o
|
239
244
|
r = [v.x, v.y]
|
240
|
-
Util.
|
245
|
+
Tgui::Util.delete_vector2i(o)
|
241
246
|
r
|
242
247
|
end
|
243
248
|
|
244
249
|
abi_unpacker Tgui::UIntRect do |o|
|
245
250
|
v = Tgui::UIntRect.new o
|
246
251
|
r = [v.left, v.top, v.width, v.height]
|
247
|
-
Util.
|
252
|
+
Tgui::Util.delete_u_int_rect(o)
|
248
253
|
r
|
249
254
|
end
|
250
255
|
|
data/lib/white_gold/version.rb
CHANGED
data/lib/white_gold.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require_relative 'white_gold/master'
|
2
|
+
require_relative 'white_gold/path/array.path'
|
2
3
|
include Tgui
|
3
4
|
|
4
5
|
@white_gold_instance = WhiteGold.new
|
5
6
|
|
6
7
|
class << self
|
7
|
-
include
|
8
|
-
include BangDef
|
8
|
+
include Extree
|
9
9
|
|
10
10
|
def go page
|
11
11
|
@white_gold_instance.go page.is_a?(Symbol) ? proc{ send(page) } : page
|
@@ -17,19 +17,20 @@ class << self
|
|
17
17
|
|
18
18
|
def respond_to? name
|
19
19
|
super ||
|
20
|
-
(name.end_with?("!") &&
|
20
|
+
(name.end_with?("!") && extree_respond_to?(name[...-1])) ||
|
21
21
|
@white_gold_instance.page.respond_to?(name)
|
22
22
|
end
|
23
23
|
|
24
24
|
def method_missing name, *a, **na, &b
|
25
25
|
if name.end_with? "!"
|
26
|
-
|
26
|
+
extree_method_missing name[...-1], *a, **na, &b
|
27
27
|
elsif @white_gold_instance.page.respond_to? name
|
28
28
|
@white_gold_instance.page.send name, *a, **na, &b
|
29
29
|
else super
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
33
|
+
extend Extree::Branch
|
33
34
|
|
34
35
|
def! :run do |page = nil|
|
35
36
|
go page if page
|
@@ -37,7 +38,7 @@ def! :run do |page = nil|
|
|
37
38
|
@white_gold_instance = nil
|
38
39
|
end
|
39
40
|
|
40
|
-
@white_gold_instance.init
|
41
|
+
@white_gold_instance.init window_size: $window_size, window_style: $window_style
|
41
42
|
@white_gold_instance.load_page Page
|
42
43
|
if $0 != 'irb'
|
43
44
|
at_exit do
|
@@ -45,4 +46,5 @@ if $0 != 'irb'
|
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
48
|
-
|
49
|
+
Extree::Seed.open_scope self
|
50
|
+
Extree::Seed.push self
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: white_gold
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Łukasz Pomietło
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fiddle
|
@@ -24,10 +24,38 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: extree
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: procify
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.1'
|
27
55
|
description: |2
|
28
56
|
Ruby gem for building pure ruby graphical user interface.
|
29
57
|
Uses TGUI & SFML as a backend.
|
30
|
-
Dedicated to creating
|
58
|
+
Dedicated to creating simple applications and learning programming.
|
31
59
|
email: oficjalnyadreslukasza@gmail.com
|
32
60
|
executables: []
|
33
61
|
extensions: []
|
@@ -55,18 +83,13 @@ files:
|
|
55
83
|
- lib/white_gold/abi/interface/interface_composed_out.rb
|
56
84
|
- lib/white_gold/abi/interface/interface_single_out.rb
|
57
85
|
- lib/white_gold/abi/packer.rb
|
58
|
-
- lib/white_gold/abi/reducer.rb
|
59
86
|
- lib/white_gold/abi/unpacker.rb
|
60
87
|
- lib/white_gold/convention/api_child.rb
|
61
|
-
- lib/white_gold/convention/bang_def.rb
|
62
|
-
- lib/white_gold/convention/bang_nest.rb
|
63
|
-
- lib/white_gold/convention/bang_nested_caller.rb
|
64
88
|
- lib/white_gold/convention/bool_property.rb
|
65
89
|
- lib/white_gold/convention/boolean.rb
|
66
90
|
- lib/white_gold/convention/club.rb
|
67
91
|
- lib/white_gold/convention/container_widgets.rb
|
68
92
|
- lib/white_gold/convention/page.rb
|
69
|
-
- lib/white_gold/convention/proc_method_factory.rb
|
70
93
|
- lib/white_gold/convention/theme/boolean_attribute.rb
|
71
94
|
- lib/white_gold/convention/theme/color_attribute.rb
|
72
95
|
- lib/white_gold/convention/theme/float_attribute.rb
|
@@ -78,6 +101,8 @@ files:
|
|
78
101
|
- lib/white_gold/convention/theme_attributes.rb
|
79
102
|
- lib/white_gold/convention/tree_node.rb
|
80
103
|
- lib/white_gold/convention/unit.rb
|
104
|
+
- lib/white_gold/convention/widget/keyboard_control.rb
|
105
|
+
- lib/white_gold/convention/widget_class_aliases.rb
|
81
106
|
- lib/white_gold/convention/widget_like.rb
|
82
107
|
- lib/white_gold/dsl/backend_gui.rb
|
83
108
|
- lib/white_gold/dsl/bitmap_button.rb
|
@@ -94,6 +119,7 @@ files:
|
|
94
119
|
- lib/white_gold/dsl/color_picker.rb
|
95
120
|
- lib/white_gold/dsl/combo_box.rb
|
96
121
|
- lib/white_gold/dsl/container.rb
|
122
|
+
- lib/white_gold/dsl/custom_widget.rb
|
97
123
|
- lib/white_gold/dsl/edit_box.rb
|
98
124
|
- lib/white_gold/dsl/file_dialog.rb
|
99
125
|
- lib/white_gold/dsl/font.rb
|
@@ -162,6 +188,7 @@ files:
|
|
162
188
|
- lib/white_gold/generated/tgui-abi-loader.gf.rb
|
163
189
|
- lib/white_gold/library/theme/light.rb
|
164
190
|
- lib/white_gold/master.rb
|
191
|
+
- lib/white_gold/path/array.path.rb
|
165
192
|
- lib/white_gold/path/kernel.path.rb
|
166
193
|
- lib/white_gold/path/numeric.path.rb
|
167
194
|
- lib/white_gold/path/object.path.rb
|
@@ -174,6 +201,7 @@ licenses:
|
|
174
201
|
- Zlib
|
175
202
|
metadata:
|
176
203
|
documentation_uri: https://github.com/lpogic/white_gold/blob/master/doc/wiki/README.md
|
204
|
+
homepage_uri: https://github.com/lpogic/white_gold
|
177
205
|
post_install_message:
|
178
206
|
rdoc_options: []
|
179
207
|
require_paths:
|
@@ -189,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
189
217
|
- !ruby/object:Gem::Version
|
190
218
|
version: '0'
|
191
219
|
requirements: []
|
192
|
-
rubygems_version: 3.
|
220
|
+
rubygems_version: 3.5.6
|
193
221
|
signing_key:
|
194
222
|
specification_version: 4
|
195
223
|
summary: TGUI based Ruby gem for quick native application developing
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require_relative 'bang_nested_caller'
|
2
|
-
|
3
|
-
module BangNest
|
4
|
-
include BangNestedCaller
|
5
|
-
|
6
|
-
def respond_to? name
|
7
|
-
super || (name.end_with?("!") && bang_respond_to?(name[...-1]))
|
8
|
-
end
|
9
|
-
|
10
|
-
def method_missing name, *a, **na, &b
|
11
|
-
if name.end_with? "!"
|
12
|
-
bang_method_missing name[...-1], *a, **na, &b
|
13
|
-
else super
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def send! *a, **na, &b
|
18
|
-
a.each do |k|
|
19
|
-
send("#{k}=", true)
|
20
|
-
end
|
21
|
-
na.each do |k, v|
|
22
|
-
send("#{k}=", v)
|
23
|
-
end
|
24
|
-
super(&b)
|
25
|
-
end
|
26
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module BangNestedCaller
|
2
|
-
|
3
|
-
@@bang_stack = []
|
4
|
-
|
5
|
-
def self!
|
6
|
-
@@bang_stack.last
|
7
|
-
end
|
8
|
-
|
9
|
-
def bang_respond_to? name
|
10
|
-
top = @@bang_stack.include?(self) ? @@bang_stack.last : self
|
11
|
-
top.respond_to?("#{name}=") || top.respond_to?("api_bang_#{name}")
|
12
|
-
end
|
13
|
-
|
14
|
-
def bang_send name, *a, **na, &b
|
15
|
-
top = @@bang_stack.last
|
16
|
-
api_bang_name = "api_bang_#{name}".to_sym
|
17
|
-
return top.send(api_bang_name, *a, **na, &b) if top.respond_to? api_bang_name
|
18
|
-
setter = "#{name}=".to_sym
|
19
|
-
if top.respond_to? setter
|
20
|
-
return top.send(setter, a) if !a.empty?
|
21
|
-
return top.send(setter, na) if !na.empty?
|
22
|
-
return top.send(setter, b) if block_given?
|
23
|
-
return top.send(setter)
|
24
|
-
end
|
25
|
-
no_method_error = NoMethodError.new("bang method missing `#{name}!` for #{top.class}")
|
26
|
-
raise no_method_error
|
27
|
-
end
|
28
|
-
|
29
|
-
def bang_method_missing name, *a, **na, &b
|
30
|
-
if @@bang_stack.include?(self)
|
31
|
-
bang_send name, *a, **na, &b
|
32
|
-
else
|
33
|
-
@@bang_stack.push self
|
34
|
-
result = bang_send name, *a, **na, &b
|
35
|
-
@@bang_stack.pop
|
36
|
-
result
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def send! &b
|
41
|
-
if b
|
42
|
-
@@bang_stack.push self
|
43
|
-
b.call self
|
44
|
-
@@bang_stack.pop
|
45
|
-
end
|
46
|
-
self
|
47
|
-
end
|
48
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
class ProcMethodFactory
|
2
|
-
def initialize source
|
3
|
-
@source = source
|
4
|
-
end
|
5
|
-
|
6
|
-
def method_missing name, *curry
|
7
|
-
proc do |*a, **na, &b|
|
8
|
-
method = @source.method name
|
9
|
-
arity = method.arity
|
10
|
-
a = [*curry, *a]
|
11
|
-
if arity >= 0
|
12
|
-
@source.send(name, *a[...arity], **na, &b)
|
13
|
-
else
|
14
|
-
@source.send(name, *a, **na, &b)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def respond_to? name
|
20
|
-
@source.respond_to? name
|
21
|
-
end
|
22
|
-
end
|