Module: DefinedMethods::Singleton

Defined in:
lib/defined_methods/singleton.rb

Constant Summary collapse

NOT_INCLUDED_PRIVATE_METHODS =
%i[
  inherited
  initialize
  attr_reader
  attr
  attr_accessor
  attr_writer
  remove_const
  extend_object
  append_features
  prepend_features
  undef_method
  method_added
  method_removed
  remove_method
  method_undefined
  alias_method
  public
  private
  initialize_copy
  initialize_clone
  protected
  included
  extended
  prepended
  define_method
  refine
  using
  module_function
]

Class Method Summary collapse

Class Method Details

.methods_defined_in(object) ⇒ Object



35
36
37
38
39
40
41
42
43
44
# File 'lib/defined_methods/singleton.rb', line 35

def methods_defined_in(object)
  {
    object_name: object.to_s,
         object: object.singleton_class,
        methods: object.methods(false) - object.protected_methods(false),
        private: false,
      protected: false,
      singleton: true
  }
end

.private_methods_defined_in(object) ⇒ Object



46
47
48
49
50
51
52
53
54
55
# File 'lib/defined_methods/singleton.rb', line 46

def private_methods_defined_in(object)
  {
    object_name: object.to_s,
         object: object.singleton_class,
        methods: object.private_methods(false) - NOT_INCLUDED_PRIVATE_METHODS - methods_from_extended_modules(object) - methods_from_ancestors(object),
        private: true,
      protected: false,
      singleton: true
  }
end

.protected_methods_defined_in(object) ⇒ Object



57
58
59
60
61
62
63
64
65
66
# File 'lib/defined_methods/singleton.rb', line 57

def protected_methods_defined_in(object)
  {
    object_name: object.to_s,
         object: object.singleton_class,
        methods: object.protected_methods(false) - methods_from_extended_modules(object) - methods_from_ancestors(object),
        private: false,
      protected: true,
      singleton: true
  }
end