Class: Module

Inherits:
Object
  • Object
show all
Defined in:
lib/cube/traits.rb

Instance Method Summary collapse

Instance Method Details

#with_trait(trait, rename: {}, suppress: []) ⇒ Object

Raises:

  • (ArgumentError)


82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/cube/traits.rb', line 82

def with_trait(trait, rename: {}, suppress: [])
  unless trait.is_a? Cube::Trait
    raise ArgumentError, "#{trait} is not an Cube::Trait"
  end
  cls = clone
  cls.instance_variable_set(:@__trait_allow_include, true)
  cls.instance_variable_set(:@__trait_cloned_from, self)
  raise ArgumentError, "aliases must be a Hash" unless rename.is_a?(Hash)
  raise ArgumentError, "supresses must be a Array" unless suppress.is_a?(Array)

  al_trait = trait_with_resolutions(trait, rename, suppress)
  al_trait.instance_variable_set(:@__interface_runtime_check, false)
  cls.include(al_trait)
  cls
end