Module: ExtendIt::Base
- Included in:
- AdminIt::Context, AdminIt::Field, AdminIt::Filter, AdminIt::Resource, AdminIt::Section
- Defined in:
- lib/extend_it/base.rb
Instance Method Summary collapse
- #attr_checker(*names) ⇒ Object
- #call_inherited(method_name, *args, base_first: false, &block) ⇒ Object
- #class_attr_reader(*attrs) ⇒ Object
- #inherited_class_reader(*names) ⇒ Object
- #metaclass(&block) ⇒ Object
Instance Method Details
#attr_checker(*names) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/extend_it/base.rb', line 24 def attr_checker(*names) names.ensure_symbols.each do |name| define_method "#{name}?" do instance_variable_get("@#{name}") == true end end end |
#call_inherited(method_name, *args, base_first: false, &block) ⇒ Object
32 33 34 35 36 |
# File 'lib/extend_it/base.rb', line 32 def call_inherited(method_name, *args, base_first: false, &block) arr = parents.select { |parent| parent.methods.include?(method_name) } arr.reverse! if base_first == true arr.reduce([]) { |a, e| a << e.send(method_name, *args, &block) } end |
#class_attr_reader(*attrs) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/extend_it/base.rb', line 48 def class_attr_reader(*attrs) attrs.ensure_symbols.each do |attr_name| attr_name.ensure_local_name || next next if instance_methods.include?(attr_name) var_name = attr_name.ensure_instance_variable_name if methods.include?(attr_name) define_method(attr_name) { self.class.send(attr_name) } else define_method attr_name do p = self.class.parents.find do |parent| parent.instance_variable_defined?(var_name) end p.nil? ? nil : p.instance_variable_get(var_name) end end end end |
#inherited_class_reader(*names) ⇒ Object
38 39 40 41 42 43 44 45 46 |
# File 'lib/extend_it/base.rb', line 38 def inherited_class_reader(*names) names.ensure_symbols.each do |name| var = "@#{name}" define_singleton_method(name) do p = parents.find { |parent| parent.instance_variable_defined?(var) } p.nil? ? nil : p.instance_variable_get(var) end end end |