Module: Omakase::Doc

Defined in:
lib/omakase/doc.rb

Overview

What an object offers, for a model that has never seen its type: what the object's own classes define, not what Ruby gives everything.

Constant Summary collapse

CORE =
[Object, Kernel, BasicObject, Struct, Data, Enumerable, Comparable].freeze

Class Method Summary collapse

Class Method Details

.of(object) ⇒ Object



11
12
13
14
# File 'lib/omakase/doc.rb', line 11

def of(object)
  state = object.instance_variables.map { |name| "  #{name} = #{object.instance_variable_get(name).inspect}" }
  [object.class.to_s, *signatures(object), *state].join("\n")
end

.signatures(object) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/omakase/doc.rb', line 16

def signatures(object)
  object.class.ancestors
    .take_while { |mod| !CORE.include?(mod) }
    .flat_map { |mod| mod.public_instance_methods(false) }
    .uniq.sort
    .map { |name| "  #{name}(#{Capabilities.parameters(object.method(name))})" }
end