Class: AwesomePrint::Formatter

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

Constant Summary collapse

CORE =
[ :array, :bigdecimal, :class, :dir, :file, :hash, :method, :rational, :set, :struct, :unboundmethod ]
DEFAULT_LIMIT_SIZE =
7

Instance Method Summary collapse

Constructor Details

#initialize(inspector) ⇒ Formatter

Returns a new instance of Formatter.



15
16
17
18
19
# File 'lib/awesome_print/formatter.rb', line 15

def initialize(inspector)
  @inspector   = inspector
  @options     = inspector.options
  @indentation = @options[:indent].abs
end

Instance Method Details

#cast(object, type) ⇒ Object

Hook this when adding custom formatters. Check out lib/awesome_print/ext directory for custom formatters that ship with awesome_print.




36
37
38
# File 'lib/awesome_print/formatter.rb', line 36

def cast(object, type)
  CORE.grep(type)[0] || :self
end

#colorize(str, type) ⇒ Object

Pick the color and apply it to the given string as necessary.




42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/awesome_print/formatter.rb', line 42

def colorize(str, type)
  str = CGI.escapeHTML(str) if @options[:html]
  if @options[:plain] || !@options[:color][type] || !@inspector.colorize?
    str
  #
  # Check if the string color method is defined by awesome_print and accepts
  # html parameter or it has been overriden by some gem such as colorize.
  #
  elsif str.method(@options[:color][type]).arity == -1 # Accepts html parameter.
    str.send(@options[:color][type], @options[:html])
  else
    str = %Q|<kbd style="color:#{@options[:color][type]}">#{str}</kbd>| if @options[:html]
    str.send(@options[:color][type])
  end
end

#format(object, type = nil) ⇒ Object

Main entry point to format an object.




23
24
25
26
27
28
29
30
31
# File 'lib/awesome_print/formatter.rb', line 23

def format(object, type = nil)
  core_class = cast(object, type)
  awesome = if core_class != :self
    send(:"awesome_#{core_class}", object) # Core formatters.
  else
    awesome_self(object, type) # Catch all that falls back to object.inspect.
  end
  awesome
end