Class: Dry::Interface

Inherits:
Struct
  • Object
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

.namedObject



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

.newObject



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

.typeObject



38
39
40
# File 'lib/dry/interface.rb', line 38

def self.type
  direct_descendants.map(&:type).reduce(&:|)
end

.ValueObject



34
35
36
# File 'lib/dry/interface.rb', line 34

def self.Value(...)
  Types.Value(...)
end