class AwesomePrint::Formatter
Constants
- CORE_FORMATTERS
Attributes
inspector[R]
options[R]
Public Class Methods
new(inspector)
click to toggle source
# File lib/awesome_print/formatter.rb, line 16 def initialize(inspector) @inspector = inspector @options = inspector.options end
Public Instance Methods
cast(object, type)
click to toggle source
Hook this when adding custom formatters. Check out lib/awesome_print/ext directory for custom formatters that ship with awesome_print.
# File lib/awesome_print/formatter.rb, line 36 def cast(object, type) CORE_FORMATTERS.include?(type) ? type : :self end
format(object, type = nil)
click to toggle source
Main entry point to format an object.
# 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
Private Instance Methods
awesome_array(a)
click to toggle source
# File lib/awesome_print/formatter.rb, line 70 def awesome_array(a) Formatters::ArrayFormatter.new(a, @inspector).format end
awesome_bigdecimal(n)
click to toggle source
# File lib/awesome_print/formatter.rb, line 54 def awesome_bigdecimal(n) o = n.to_s('F') type = :bigdecimal awesome_simple(o, type, @inspector) end
awesome_class(c)
click to toggle source
# File lib/awesome_print/formatter.rb, line 95 def awesome_class(c) Formatters::ClassFormatter.new(c, @inspector).format end
awesome_dir(d)
click to toggle source
# File lib/awesome_print/formatter.rb, line 103 def awesome_dir(d) Formatters::DirFormatter.new(d, @inspector).format end
awesome_file(f)
click to toggle source
# File lib/awesome_print/formatter.rb, line 99 def awesome_file(f) Formatters::FileFormatter.new(f, @inspector).format end
awesome_hash(h)
click to toggle source
# File lib/awesome_print/formatter.rb, line 78 def awesome_hash(h) Formatters::HashFormatter.new(h, @inspector).format end
awesome_method(m)
click to toggle source
# File lib/awesome_print/formatter.rb, line 90 def awesome_method(m) Formatters::MethodFormatter.new(m, @inspector).format end
Also aliased as: awesome_unboundmethod
awesome_object(o)
click to toggle source
# File lib/awesome_print/formatter.rb, line 82 def awesome_object(o) Formatters::ObjectFormatter.new(o, @inspector).format end
awesome_rational(n)
click to toggle source
# File lib/awesome_print/formatter.rb, line 60 def awesome_rational(n) o = n.to_s type = :rational awesome_simple(o, type, @inspector) end
awesome_self(object, type)
click to toggle source
Catch all method to format an arbitrary object.
# File lib/awesome_print/formatter.rb, line 44 def awesome_self(object, type) if @options[:raw] && object.instance_variables.any? awesome_object(object) elsif (hash = convert_to_hash(object)) awesome_hash(hash) else awesome_simple(object.inspect.to_s, type, @inspector) end end
awesome_set(s)
click to toggle source
# File lib/awesome_print/formatter.rb, line 74 def awesome_set(s) Formatters::ArrayFormatter.new(s.to_a, @inspector).format end
awesome_simple(o, type, inspector = @inspector)
click to toggle source
# File lib/awesome_print/formatter.rb, line 66 def awesome_simple(o, type, inspector = @inspector) AwesomePrint::Formatters::SimpleFormatter.new(o, type, inspector).format end
awesome_struct(s)
click to toggle source
# File lib/awesome_print/formatter.rb, line 86 def awesome_struct(s) Formatters::StructFormatter.new(s, @inspector).format end
convert_to_hash(object)
click to toggle source
# File lib/awesome_print/formatter.rb, line 119 def convert_to_hash(object) return nil if has_method_accessor?(object) return nil if !object.respond_to?(:to_hash) || object.method(:to_hash).arity != 0 # ActionController::Parameters will raise if they are not yet permitted # and we try to convert to hash. # https://api.rubyonrails.org/classes/ActionController/Parameters.html return nil if object.respond_to?(:permitted?) && !object.permitted? hash = object.to_hash return nil if !hash.respond_to?(:keys) || !hash.respond_to?(:[]) hash end
has_method_accessor?(object)
click to toggle source
A class (ex. ‘Net::HTTP.Get`) might have `attr_reader :method` accessor which causes `object.method(:to_hash)` throw `ArgumentError (wrong number of arguments (given 1, expected 0))`. The following tries to avoid that.
# File lib/awesome_print/formatter.rb, line 113 def has_method_accessor?(object) !object.method(:method) rescue ArgumentError true end