awesome-print / awesome_print

Pretty print your Ruby objects with style -- in full color and with proper indentation
http://github.com/michaeldv/awesome_print
MIT License
4.07k stars 454 forks source link

Output of non-empty Hash object fails when using Ruby 3.0 #391

Closed s2k closed 3 years ago

s2k commented 3 years ago

When using Ruby 3 and the current version of awesome_print, the output of (non-empty) Cases and Arrays fails with an exception:

$ gem list awesome_print

*** LOCAL GEMS ***

awesome_print (1.8.0)
$ ruby -v
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin20]
stephan@seaside ~/tmp $ irb -r awesome_print
3.0.0 :001 > h = {foo: 'BAR'}
 => {:foo=>"BAR"}
3.0.0 :002 > ap h
Traceback (most recent call last):
       16: from /Users/stephan/.rvm/rubies/ruby-3.0.0/bin/irb:23:in `load'
       15: from /Users/stephan/.rvm/rubies/ruby-3.0.0/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in `<top (required)>'
       14: from (irb):2:in `<main>'
       13: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/core_ext/kernel.rb:20:in `ap'
       12: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/core_ext/kernel.rb:10:in `ai'
       11: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/inspector.rb:74:in `awesome'
       10: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/inspector.rb:115:in `unnested'
        9: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatter.rb:26:in `format'
        8: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatter.rb:79:in `awesome_hash'
        7: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/hash_formatter.rb:18:in `format'
        6: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/hash_formatter.rb:35:in `multiline_hash'
        5: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/hash_formatter.rb:46:in `printable_hash'
        4: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/hash_formatter.rb:46:in `map!'
        3: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/hash_formatter.rb:47:in `block in printable_hash'
        2: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/base_formatter.rb:113:in `indented'
        1: from /Users/stephan/.rvm/gems/ruby-3.0.0/gems/awesome_print-1.8.0/lib/awesome_print/formatters/base_formatter.rb:113:in `new'
ArgumentError (tried to create Proc object without a block)
BryanH commented 3 years ago

Fixed with latest PR