class Pseudoo::ModelExt::Definer::PseudoMethodList

Constants

METHOD_TYPES

Public Class Methods

define_methods(cls) click to toggle source
# File lib/pseudoo/model/ext/definer/pseudo_method_list.rb, line 15
def define_methods(cls)
  instance = new(cls)

  instance.define_pseudo_methods
  instance.define_pseudized_methods
end
new(cls) click to toggle source
# File lib/pseudoo/model/ext/definer/pseudo_method_list.rb, line 23
def initialize(cls)
  @class = cls
end

Public Instance Methods

define_pseudized_methods() click to toggle source
# File lib/pseudoo/model/ext/definer/pseudo_method_list.rb, line 33
def define_pseudized_methods
  define_pseudized_method('instance_methods')
end
define_pseudo_methods() click to toggle source
# File lib/pseudoo/model/ext/definer/pseudo_method_list.rb, line 27
def define_pseudo_methods
  METHOD_TYPES.each do |type|
    define_pseudo_method(type)
  end
end

Private Instance Methods

define_pseudized_method(m) click to toggle source

Define the class method of “pseudized_*” series

It returns an array including the names of methods overriding the model's.

@m [String] method name of the method to list methods

# File lib/pseudoo/model/ext/definer/pseudo_method_list.rb, line 48
        def define_pseudized_method(m)
          @class.class_eval <<-EOT
            define_method('#{pseudized_method_name(m)}') do
              collection = ancestors[0..-2].inject([]) do |result, cls|
                result |= cls.#{m}
              end & pseudo_model.#{m}

              head_of_commons = collection.index(:instance_eval)
              collection[0...head_of_commons]
            end
          EOT
        end
define_pseudo_method(m) click to toggle source

Define the class method of “pseudo_*” series

It returns an array including the names of methods defined in Pseudoo.

@m [String] method name of the method to list methods

# File lib/pseudoo/model/ext/definer/pseudo_method_list.rb, line 67
        def define_pseudo_method(m)
          @class.class_eval <<-EOT
            define_method('#{pseudo_method_name(m)}') do
              ancestors[0..-2].inject([]) do |result, cls|
                result |= cls.#{m}
              end - pseudo_model.#{m}
            end
          EOT
        end
pseudized_method_name(method_name) click to toggle source
                              • -

Parts

# File lib/pseudoo/model/ext/definer/pseudo_method_list.rb, line 80
def pseudized_method_name(method_name)
  'pseudized_%s' % method_name
end
pseudo_method_name(method_name) click to toggle source
# File lib/pseudoo/model/ext/definer/pseudo_method_list.rb, line 84
def pseudo_method_name(method_name)
  'pseudo_%s' % method_name
end