Class: Dry::Interface
- Inherits:
-
Struct
- Object
- Struct
- Dry::Interface
show all
- Extended by:
- ActiveSupport::DescendantsTracker, ActiveSupport::Inflector
- Defined in:
- lib/dry/interface.rb,
lib/dry/interface/interfaces.rb,
lib/dry/interface/interfaces/value.rb,
lib/dry/interface/interfaces/common.rb,
lib/dry/interface/interfaces/abstract.rb,
lib/dry/interface/interfaces/concrete.rb
Defined Under Namespace
Modules: Interfaces, Types
Class Method Summary
collapse
Class Method Details
.const_missing(name) ⇒ Object
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/dry/interface.rb', line 60
def self.const_missing(name)
case name
when :Abstract
return Class.new(self) do
include Interfaces::Abstract
end
when :Concrete
return Class.new(self) do
include Interfaces::Concrete
end
when :Value
return Class.new(self) do
include Interfaces::Value
end
end
super
end
|
.initializer(owner, &block) ⇒ Object
50
51
52
|
# File 'lib/dry/interface.rb', line 50
def self.initializer(owner, &block)
owner.schema owner.schema.constructor(&block)
end
|
.named ⇒ Object
42
43
44
|
# File 'lib/dry/interface.rb', line 42
def self.named
format "%<name>s<[%<names>s]>", { name: name, names: direct_descendants.map(&:named).join(" | ") }
end
|
.new ⇒ Object
46
47
48
|
# File 'lib/dry/interface.rb', line 46
def self.new(...)
type.call(...)
end
|
.otherwise(&block) ⇒ Object
54
55
56
57
58
|
# File 'lib/dry/interface.rb', line 54
def self.otherwise(&block)
initializer(self) do |input, type, &error|
type[input] { block[input, type, &error] }
end
end
|
.type ⇒ Object
38
39
40
|
# File 'lib/dry/interface.rb', line 38
def self.type
direct_descendants.map(&:type).reduce(&:|)
end
|
.Value ⇒ Object
34
35
36
|
# File 'lib/dry/interface.rb', line 34
def self.Value(...)
Types.Value(...)
end
|