Class: Module
Instance Method Summary collapse
- #as_interface(iface, runtime_checks: true) ⇒ Object
- #assert_implements(iface) ⇒ Object
- #implements(mod, runtime_checks: true) ⇒ Object
- #shell_implements(mod) ⇒ Object
- #with_trait(trait, aliases: {}, suppresses: []) ⇒ Object
Instance Method Details
#as_interface(iface, runtime_checks: true) ⇒ Object
251 252 253 |
# File 'lib/cube/interfaces.rb', line 251 def as_interface(iface, runtime_checks: true) clone.implements(iface, runtime_checks: runtime_checks) end |
#assert_implements(iface) ⇒ Object
255 256 257 |
# File 'lib/cube/interfaces.rb', line 255 def assert_implements(iface) clone.implements(iface, false) end |
#implements(mod, runtime_checks: true) ⇒ Object
243 244 245 246 247 248 249 |
# File 'lib/cube/interfaces.rb', line 243 def implements(mod, runtime_checks: true) unless is_a? Class raise "Non-Class modules should not implement interfaces" end instance_variable_set(:@__interface_runtime_check, true) if runtime_checks include(mod) end |
#shell_implements(mod) ⇒ Object
259 260 261 262 263 |
# File 'lib/cube/interfaces.rb', line 259 def shell_implements(mod) instance_variable_set(:@__interface_runtime_check, false) instance_variable_set(:@__interface_arity_skip, true) include(mod) end |
#with_trait(trait, aliases: {}, suppresses: []) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/cube/traits.rb', line 39 def with_trait(trait, aliases: {}, suppresses: []) 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 aliases.is_a?(Hash) raise ArgumentError, "supresses must be a Array" unless suppresses.is_a?(Array) al_trait = trait_with_resolutions(trait, aliases, suppresses) al_trait.instance_variable_set(:@__interface_runtime_check, false) cls.include(al_trait) cls end |