Class: AwesomePrint::Inspector

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

Constant Summary collapse

AP =
:__awesome_print__

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Inspector

Returns a new instance of Inspector


55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/awesome_print/inspector.rb', line 55

def initialize(options = {})
  @options = { 
    :indent     => 4,      # Indent using 4 spaces.
    :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 object instance variables.
    :sort_keys  => false,  # Do not sort hash keys.
    :limit      => false,  # Limit large output for arrays and hashes. Set to a boolean or integer.
    :color => { 
      :args       => :pale,
      :array      => :white,
      :bigdecimal => :blue,
      :class      => :yellow,
      :date       => :greenish,
      :falseclass => :red,
      :fixnum     => :blue,
      :float      => :blue,
      :hash       => :pale,
      :keyword    => :cyan,
      :method     => :purpleish,
      :nilclass   => :red,
      :rational   => :blue,
      :string     => :yellowish,
      :struct     => :pale,
      :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 = AwesomePrint::Formatter.new(self)
  Thread.current[AP] ||= []
end

Instance Attribute Details

#optionsObject

Returns the value of attribute options


51
52
53
# File 'lib/awesome_print/inspector.rb', line 51

def options
  @options
end

Instance Method Details

#awesome(object) ⇒ Object

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



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

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)

113
114
115
116
# File 'lib/awesome_print/inspector.rb', line 113

def colorize?
  AwesomePrint.force_colors ||= false
  AwesomePrint.force_colors || (STDOUT.tty? && ((ENV['TERM'] && ENV['TERM'] != 'dumb') || ENV['ANSICON']))
end