Class: AmazingPrint::Inspector

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

Constant Summary collapse

AP =
:__amazing_print__

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Inspector

Returns a new instance of Inspector.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/amazing_print/inspector.rb', line 29

def initialize(options = {})
  @options = {
    indent: 4, # Number of spaces for indenting.
    index: true, # Display array indices.
    html: false, # Use ANSI color codes rather than HTML.
    multiline: true, # Display in multiple lines.
    plain: false, # Use colors.
    raw: false, # Do not recursively format instance variables.
    sort_keys: false,  # Do not sort hash keys.
    sort_vars: true,   # Sort instance variables.
    limit: false, # Limit arrays & hashes. Accepts bool or int.
    ruby19_syntax: false, # Use Ruby 1.9 hash syntax in output.
    class_name: :class, # Method used to get Instance class name.
    object_id: true, # Show object_id.
    color: {
      args: :whiteish,
      array: :white,
      bigdecimal: :blue,
      class: :yellow,
      date: :greenish,
      falseclass: :red,
      fixnum: :blue,
      integer: :blue,
      float: :blue,
      hash: :whiteish,
      keyword: :cyan,
      method: :purpleish,
      nilclass: :red,
      rational: :blue,
      string: :yellowish,
      struct: :whiteish,
      symbol: :cyanish,
      time: :greenish,
      trueclass: :green,
      variable: :cyanish
    }
  }

  # Merge custom defaults and let explicit options parameter override them.
  merge_custom_defaults!
  merge_options!(options)

  @formatter = AmazingPrint::Formatter.new(self)
  @indentator = AmazingPrint::Indentator.new(@options[:indent].abs)
  Thread.current[AP] ||= []

  ExtLoader.call
end

Instance Attribute Details

#indentatorObject

Returns the value of attribute indentator.



16
17
18
# File 'lib/amazing_print/inspector.rb', line 16

def indentator
  @indentator
end

#optionsObject

Returns the value of attribute options.



16
17
18
# File 'lib/amazing_print/inspector.rb', line 16

def options
  @options
end

Class Method Details

.reload_dotfileObject

Unload the cached dotfile and load it again.



23
24
25
26
27
# File 'lib/amazing_print/inspector.rb', line 23

def self.reload_dotfile
  @@dotfile = nil
  new.send :load_dotfile
  true
end

Instance Method Details

#awesome(object) ⇒ Object

Dispatcher that detects data nesting and invokes object-aware formatter.




88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/amazing_print/inspector.rb', line 88

def awesome(object)
  if Thread.current[AP].include?(object.object_id)
    nested(object)
  else
    begin
      Thread.current[AP] << object.object_id
      unnested(object)
    ensure
      Thread.current[AP].pop
    end
  end
end

#colorize?Boolean

Return true if we are to colorize the output.


Returns:

  • (Boolean)


103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/amazing_print/inspector.rb', line 103

def colorize?
  AmazingPrint.force_colors ||= false
  AmazingPrint.force_colors || (
    if defined? @colorize_stdout
      @colorize_stdout
    else
      @colorize_stdout = $stdout.tty? && (
        (
          ENV['TERM'] &&
          ENV['TERM'] != 'dumb'
        ) ||
        ENV['ANSICON']
      )
    end
  )
end

#current_indentationObject



78
79
80
# File 'lib/amazing_print/inspector.rb', line 78

def current_indentation
  indentator.indentation
end

#increase_indentation(&blk) ⇒ Object



82
83
84
# File 'lib/amazing_print/inspector.rb', line 82

def increase_indentation(&blk)
  indentator.indent(&blk)
end