Module: Ruflet::Extensions
- Defined in:
- lib/ruflet_ui/ruflet/extensions.rb,
lib/ruflet_ui/ruflet/extensions/qrcode_scanner.rb
Overview
Registry used by Ruflet extension gems to add typed Ruby controls and
describe the matching Flet Flutter package. Registering a control makes its
helpers available in the bare DSL, Ruflet::DSL, Ruflet, Ruflet::UI, and
WidgetBuilder without editing Ruflet's generated control method tables.
Defined Under Namespace
Classes: QrCodeScannerControl, Registration
Class Method Summary
collapse
Class Method Details
.[](name) ⇒ Object
42
43
44
|
# File 'lib/ruflet_ui/ruflet/extensions.rb', line 42
def [](name)
@registrations[normalize_name(name)]
end
|
.each(&block) ⇒ Object
46
47
48
49
50
|
# File 'lib/ruflet_ui/ruflet/extensions.rb', line 46
def each(&block)
return enum_for(:each) unless block
@registrations.values.each(&block)
end
|
.register_control(name, control_class:, helpers: nil, flutter: nil) ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/ruflet_ui/ruflet/extensions.rb', line 20
def register_control(name, control_class:, helpers: nil, flutter: nil)
key = normalize_name(name)
helper_names = Array(helpers || key).map { |helper| normalize_name(helper) }.uniq.freeze
registration = Registration.new(
name: key,
control_class: control_class,
helpers: helper_names,
flutter: normalize_flutter_metadata(flutter)
).freeze
existing = @registrations[key]
if existing && existing != registration
raise ArgumentError, "Ruflet extension `#{key}` is already registered"
end
helper_names.each do |helper|
UI::ControlFactory.register_extension(helper, control_class)
define_control_helper(helper)
end
@registrations[key] = registration
end
|
.registered?(name) ⇒ Boolean
52
53
54
|
# File 'lib/ruflet_ui/ruflet/extensions.rb', line 52
def registered?(name)
@registrations.key?(normalize_name(name))
end
|