Module: ObjectShadow::InfoInspect

Included in:
ObjectShadow
Defined in:
lib/object_shadow/info_inspect.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.column100(input) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/object_shadow/info_inspect.rb', line 52

def column100(input)
  words = input.split(" ")
  lines = [""]
  words.each{ |word|
    if lines[-1].size + word.size < 95 # 95 + 1 word space + 4 indent spaces = 95
      lines[-1] = lines[-1] + word + " "
    else
      lines << word + " "
    end
  }

  lines.map{ |line|
    "    #{line}"
  }.join("\n")
end

Instance Method Details

#inspectObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/object_shadow/info_inspect.rb', line 5

def inspect
  public_methods = methods(scope: :public)
  protected_methods = methods(scope: :protected)
  private_methods = methods(scope: :private)

  inherit_till = object.instance_of?(Object) ? :all : Object
  lookup_chain = method_lookup_chain(inherit: inherit_till).join("") + " →  …"

  res = \
    "# ObjectShadow of Object #%{object_id}\n\n" \
    "## Lookup Chain\n\n%{method_lookup_chain}\n\n"

  unless variables.empty?
    res += "## %{variables_count} Instance Variable%{variables_plural}\n\n%{variables}\n\n" \
  end

  unless public_methods.empty?
    res += "## %{public_methods_count} Public Method%{public_methods_plural} (Non-Class/Object)\n\n%{public_methods}\n\n" \
  end

  unless protected_methods.empty?
    res += "## %{protected_methods_count} Protected Method%{protected_methods_plural} (Non-Class/Object)\n\n%{protected_methods}\n\n" \
  end

  unless private_methods.empty?
    res += "## %{private_methods_count} Private Method%{private_methods_plural} (Non-Class/Object)\n\n%{private_methods}\n\n" \
  end

  res % {
    object_id: object.object_id,
    method_lookup_chain: InfoInspect.column100(lookup_chain),
    variables_count: variables.size,
    variables_plural: variables.size == 1 ? "" : "s",
    variables: InfoInspect.column100(variables.inspect),
    public_methods_count: public_methods.size,
    public_methods_plural: public_methods.size == 1 ? "" : "s",
    public_methods: InfoInspect.column100(public_methods.inspect),
    protected_methods_count: protected_methods.size,
    protected_methods_plural: protected_methods.size == 1 ? "" : "s",
    protected_methods: InfoInspect.column100(protected_methods.inspect),
    private_methods_count: private_methods.size,
    private_methods_plural: private_methods.size == 1 ? "" : "s",
    private_methods: InfoInspect.column100(private_methods.inspect),
  }
end