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 |