class AmazingPrint::Formatters::HashFormatter
Attributes
hash[R]
inspector[R]
options[R]
Public Class Methods
new(hash, inspector)
click to toggle source
Calls superclass method
# File lib/amazing_print/formatters/hash_formatter.rb, line 10 def initialize(hash, inspector) super() @hash = hash @inspector = inspector @options = inspector.options end
Public Instance Methods
format()
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 17 def format if hash.empty? empty_hash elsif multiline_hash? multiline_hash else simple_hash end end
Private Instance Methods
empty_hash()
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 29 def empty_hash '{}' end
left_width(keys)
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 62 def left_width(keys) result = max_key_width(keys) result += indentation if options[:indent].positive? result end
max_key_width(keys)
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 68 def max_key_width(keys) keys.map { |key, _value| key.size }.max || 0 end
multiline_hash()
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 37 def multiline_hash ["{\n", printable_hash.join(",\n"), "\n#{outdent}}"].join end
multiline_hash?()
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 33 def multiline_hash? options[:multiline] end
plain_single_line() { || ... }
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 97 def plain_single_line plain = options[:plain] multiline = options[:multiline] options[:plain] = true options[:multiline] = false yield ensure options[:plain] = plain options[:multiline] = multiline end
pre_ruby19_syntax(key, value, width)
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 93 def pre_ruby19_syntax(key, value, width) "#{align(key, width)}#{colorize(' => ', :hash)}#{inspector.awesome(value)}" end
printable_hash()
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 45 def printable_hash data = printable_keys width = left_width(data) data.map! do |key, value| indented do if options[:ruby19_syntax] && symbol?(key) ruby19_syntax(key, value, width) else pre_ruby19_syntax(key, value, width) end end end should_be_limited? ? limited(data, width, is_hash: true) : data end
printable_keys()
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 72 def printable_keys keys = hash.keys keys.sort! { |a, b| a.to_s <=> b.to_s } if options[:sort_keys] keys.map! do |key| plain_single_line do [inspector.awesome(key), hash[key]] end end end
ruby19_syntax(key, value, width)
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 88 def ruby19_syntax(key, value, width) key[0] = '' "#{align(key, width - 1)}#{colorize(': ', :hash)}#{inspector.awesome(value)}" end
simple_hash()
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 41 def simple_hash "{ #{printable_hash.join(', ')} }" end
symbol?(key)
click to toggle source
# File lib/amazing_print/formatters/hash_formatter.rb, line 84 def symbol?(key) key[0] == ':' end