Class: ObjectInspector::Inspector

Inherits:
Object
  • Object
show all
Defined in:
lib/object_inspector/inspector.rb

Overview

ObjectInspector::Inspector organizes inspection of the associated @object via the passed in options and via a BaseFormatter instance.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object, scope: ObjectInspector.configuration.default_scope, formatter: ObjectInspector.configuration.formatter_class, **kargs) ⇒ Inspector

Returns a new instance of Inspector.

Parameters:

  • object (Object)

    the object being inspected

  • scope (Symbol) (defaults to: ObjectInspector.configuration.default_scope)

    Object inspection type. For example: :self (default) – Means: Only interrogate self. Don’t visit neighbors. <custom> – Anything else that makes sense for @object to key

    on
    
  • formatter (ObjectInspector::BaseFormatter) (defaults to: ObjectInspector.configuration.formatter_class)

    (ObjectInspector.configuration.formatter) the formatter object type to use for formatting the inspect String

  • kargs (Hash)

    options to be sent to @object via the ObjectInterrogator when calling the ‘inspect_*` methods



29
30
31
32
33
34
35
36
37
38
# File 'lib/object_inspector/inspector.rb', line 29

def initialize(
      object,
      scope: ObjectInspector.configuration.default_scope,
      formatter: ObjectInspector.configuration.formatter_class,
      **kargs)
  @object = object
  @scope = Conversions.Scope(scope)
  @formatter_klass = formatter
  @kargs = kargs
end

Instance Attribute Details

#objectObject (readonly)

Returns the value of attribute object.



8
9
10
# File 'lib/object_inspector/inspector.rb', line 8

def object
  @object
end

Class Method Details

.inspect(object, **kargs) ⇒ String

Shortcuts the instantiation -> #to_s flow that would normally be required to use ObjectInspector::Inspector.

Returns:

  • (String)


14
15
16
# File 'lib/object_inspector/inspector.rb', line 14

def self.inspect(object, **kargs)
  new(object, **kargs).to_s
end

Instance Method Details

#flagsString, NilClass

Boolean flags/states applicable to @object.

Returns:

  • (String)

    if given

  • (NilClass)

    if not given



73
74
75
# File 'lib/object_inspector/inspector.rb', line 73

def flags
  value(key: :flags)
end

#identificationString

Core object identification details, such as the @object class name and any core-level attributes.

Returns:

  • (String)


65
66
67
# File 'lib/object_inspector/inspector.rb', line 65

def identification
  (value(key: :identification) || @object.class).to_s
end

#infoString, NilClass

Informational details applicable to @object.

Returns:

  • (String)

    if given

  • (NilClass)

    if not given



89
90
91
# File 'lib/object_inspector/inspector.rb', line 89

def info
  value(key: :info)
end

#issuesString, NilClass

Issues/Warnings applicable to @object.

Returns:

  • (String)

    if given

  • (NilClass)

    if not given



81
82
83
# File 'lib/object_inspector/inspector.rb', line 81

def issues
  value(key: :issues)
end

#nameString, NilClass

A human-friendly identifier for @object.

Returns:

  • (String)

    if given

  • (NilClass)

    if not given



97
98
99
100
101
102
103
104
105
106
107
# File 'lib/object_inspector/inspector.rb', line 97

def name
  key = :name

  if @kargs.key?(key)
    value(key: key)
  else
    interrogate_object_inspect_method(key) ||
      interrogate_object(method_name: :display_name,
                         kargs: object_method_keyword_arguments)
  end
end

#to_sString

Generate the formatted inspect String.

Returns:

  • (String)


43
44
45
# File 'lib/object_inspector/inspector.rb', line 43

def to_s
  formatter.call
end

#wrapped_object_inspection_resultString, NilClass

Generate the inspect String for the wrapped object, if present.

Returns:

  • (String)

    if #object_is_a_wrapper

  • (NilClass)

    if not #object_is_a_wrapper



51
52
53
54
55
56
57
58
59
# File 'lib/object_inspector/inspector.rb', line 51

def wrapped_object_inspection_result
  return unless object_is_a_wrapper?

  self.class.inspect(
    extract_wrapped_object,
    scope: @scope,
    formatter: @formatter_klass,
    kargs: @kargs)
end