module Wongi::Engine::CoreExt::ClassMethods
Public Instance Methods
abstract(name)
click to toggle source
# File lib/wongi-engine/core_ext.rb, line 43 def abstract(name) define_method name do |*_args| raise NoMethodError.new "#{name} is not implemented for #{self.class.name}", name end end
attr_predicate(*names)
click to toggle source
# File lib/wongi-engine/core_ext.rb, line 4 def attr_predicate(*names) names_hash = names.inject({}) do |hash, element| if element.is_a?(Hash) hash.merge element else hash[element] = false hash end end names_hash.each do |name, def_value| varname = "@#{name}".to_sym predname = "#{name}?".to_sym setname = "#{name}=".to_sym exclname = "#{name}!".to_sym noexclname = "no_#{name}!".to_sym define_method predname do if instance_variable_defined?(varname) instance_variable_get(varname) else def_value end end define_method setname do |newvalue| instance_variable_set(varname, newvalue == true) end define_method exclname do instance_variable_set(varname, true) end define_method noexclname do instance_variable_set(varname, false) end end end