Module: Accord
- Defined in:
- lib/accord/ro.rb,
lib/accord/tags.rb,
lib/accord/version.rb,
lib/accord/extendor.rb,
lib/accord/interface.rb,
lib/accord/exceptions.rb,
lib/accord/interfaces.rb,
lib/accord/declarations.rb,
lib/accord/base_registry.rb,
lib/accord/specification.rb,
lib/accord/interface_body.rb,
lib/accord/signature_info.rb,
lib/accord/nested_key_hash.rb,
lib/accord/adapter_registry.rb,
lib/accord/interface_method.rb,
lib/accord/interface_members.rb,
lib/accord/extendor_container.rb,
lib/accord/subscription_registry.rb
Defined Under Namespace
Modules: Declarations, Interfaces
Classes: AdapterLookup, AdapterRegistry, BaseLookup, BaseRegistry, BrokenImplementation, DoesNotImplement, Error, Extendor, ExtendorContainer, InterfaceBody, InterfaceClass, InterfaceInvariants, InterfaceMembers, InterfaceMethod, Invalid, NestedKeyHash, RO, Registrations, SignatureInfo, Specification, SubscriberLookup, SubscriptionRegistry, Tags
Constant Summary
collapse
- VERSION =
'0.1.0'
- Interface =
InterfaceClass.new(:'Accord::Interface')
- UNSPECIFIED =
Object.new.tap do |o|
o.define_singleton_method(:inspect) { 'UNSPECIFIED' }
end
Class Method Summary
collapse
Class Method Details
.adapter_hooks ⇒ Object
20
21
22
|
# File 'lib/accord/interface.rb', line 20
def adapter_hooks
@adapter_hooks ||= []
end
|
.clear_adapter_hooks ⇒ Object
16
17
18
|
# File 'lib/accord/interface.rb', line 16
def clear_adapter_hooks
adapter_hooks.clear
end
|
.clear_default_adapter_hook ⇒ Object
98
99
100
|
# File 'lib/accord/adapter_registry.rb', line 98
def clear_default_adapter_hook
@default_adapter_registry = nil
end
|
.default_adapter_registry ⇒ Object
102
103
104
|
# File 'lib/accord/adapter_registry.rb', line 102
def default_adapter_registry
@default_adapter_registry ||= AdapterRegistry.new
end
|
.install_adapter_hook(hook) ⇒ Object
12
13
14
|
# File 'lib/accord/interface.rb', line 12
def install_adapter_hook(hook)
adapter_hooks << hook
end
|
.install_default_adapter_hook ⇒ Object
92
93
94
95
96
|
# File 'lib/accord/adapter_registry.rb', line 92
def install_default_adapter_hook
install_adapter_hook(Proc.new { |provided, *objects|
default_adapter_registry.get(objects, provided)
})
end
|
.Interface(*args, &block) ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/accord/interface.rb', line 24
def Interface(*args, &block)
first_arg = args.shift
if first_arg.is_a?(String) || first_arg.is_a?(Symbol)
const_name = nil
top_level = nil
name = first_arg.to_s
else
const_name = args.shift.to_s
top_level = first_arg
name = top_level.name + '::' + const_name
end
interface = InterfaceClass.new(name, [Interface])
InterfaceBody.run(interface, &block)
top_level.const_set(const_name, interface) if const_name
interface
end
|