amazing_print 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +0 -6
  3. data/CHANGELOG.md +18 -0
  4. data/Gemfile.lock +34 -36
  5. data/README.md +8 -5
  6. data/lib/amazing_print/colorize.rb +1 -3
  7. data/lib/amazing_print/core_ext/awesome_method_array.rb +4 -4
  8. data/lib/amazing_print/core_ext/class.rb +1 -1
  9. data/lib/amazing_print/core_ext/logger.rb +1 -3
  10. data/lib/amazing_print/core_ext/object.rb +1 -1
  11. data/lib/amazing_print/custom_defaults.rb +10 -3
  12. data/lib/amazing_print/ext/active_record.rb +5 -9
  13. data/lib/amazing_print/ext/active_support.rb +1 -3
  14. data/lib/amazing_print/ext/mongo_mapper.rb +4 -7
  15. data/lib/amazing_print/ext/mongoid.rb +2 -6
  16. data/lib/amazing_print/ext/nobrainer.rb +3 -5
  17. data/lib/amazing_print/ext/nokogiri.rb +1 -3
  18. data/lib/amazing_print/ext/ostruct.rb +1 -3
  19. data/lib/amazing_print/ext/ripple.rb +4 -5
  20. data/lib/amazing_print/formatter.rb +5 -6
  21. data/lib/amazing_print/formatters/array_formatter.rb +6 -5
  22. data/lib/amazing_print/formatters/base_formatter.rb +20 -25
  23. data/lib/amazing_print/formatters/class_formatter.rb +1 -0
  24. data/lib/amazing_print/formatters/dir_formatter.rb +1 -0
  25. data/lib/amazing_print/formatters/file_formatter.rb +1 -0
  26. data/lib/amazing_print/formatters/hash_formatter.rb +3 -2
  27. data/lib/amazing_print/formatters/method_formatter.rb +1 -0
  28. data/lib/amazing_print/formatters/object_formatter.rb +2 -1
  29. data/lib/amazing_print/formatters/simple_formatter.rb +1 -0
  30. data/lib/amazing_print/formatters/struct_formatter.rb +2 -1
  31. data/lib/amazing_print/inspector.rb +29 -5
  32. data/lib/amazing_print/version.rb +1 -1
  33. data/lib/amazing_print.rb +2 -6
  34. data/spec/active_record_helper.rb +3 -0
  35. data/spec/colors_spec.rb +6 -2
  36. data/spec/core_ext/logger_spec.rb +7 -7
  37. data/spec/core_ext/string_spec.rb +2 -2
  38. data/spec/ext/action_controller_spec.rb +2 -2
  39. data/spec/ext/active_model_spec.rb +1 -1
  40. data/spec/ext/active_record_spec.rb +23 -23
  41. data/spec/ext/active_support_spec.rb +3 -3
  42. data/spec/ext/mongo_mapper_spec.rb +15 -11
  43. data/spec/ext/mongoid_spec.rb +7 -3
  44. data/spec/ext/nobrainer_spec.rb +6 -2
  45. data/spec/ext/nokogiri_spec.rb +3 -3
  46. data/spec/ext/ripple_spec.rb +6 -2
  47. data/spec/formats_spec.rb +24 -18
  48. data/spec/methods_spec.rb +12 -4
  49. data/spec/misc_spec.rb +15 -10
  50. data/spec/objects_spec.rb +4 -0
  51. data/spec/spec_helper.rb +4 -8
  52. metadata +19 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 63ce7e50d17b53a5270709def03c7f3075a7068ada7d11ca7f124bda5cddc735
4
- data.tar.gz: de6d68e51a4e70fdad3fff7fc5050ab6984280afaa3851a9958bf24731bb022d
3
+ metadata.gz: 95f05f3413c3497f346ec0bb7de2ed94a065aa6224a0a6bc8b36c699728ea4b2
4
+ data.tar.gz: 112760cadb1e3b76240163a64a462323975e5885ea0e002845790d75fb0c6858
5
5
  SHA512:
6
- metadata.gz: cb0a4eb248f06fd34e28d5161ab984653af5661347e4d32e76ec3b2be995ff31f9fec4b5c8355a19908bd16f7219ed2148556d383bbb36af740925e5a4ec9004
7
- data.tar.gz: c48fe1109d33a49653f8f506233c5bf674137008fed98d083022b46a72b26aa0cd469f13bca4ef1b6b2bdee1657bcf8d66481e505cca045de47dd00a40a6475f
6
+ metadata.gz: 2f2e2fddf5cbf25953721ab0bc8f0ff0648fbe93710508137af6022ef5b8c5153be9292cbea2910fe4ef8b434c2a3510585f2ef5e98097296f78e0c74f292140
7
+ data.tar.gz: 0b2e88771d4c2835e586a5ccf5c3c6e8822267475a65ddd80faf5908e526b099ea888953395fb77047df776ba7f6e7e63cf8bf50cb7676b253b2c67987b1437c
data/Appraisals CHANGED
@@ -1,12 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  if RUBY_VERSION < '3'
4
- appraise 'rails-5.1' do
5
- gem 'activerecord-jdbcsqlite3-adapter', '~> 51.0', platform: :jruby
6
- gem 'rails', '~> 5.1.0'
7
- gem 'sqlite3', platform: :mri
8
- end
9
-
10
4
  appraise 'rails-5.2' do
11
5
  gem 'activerecord-jdbcsqlite3-adapter', '~> 52.0', platform: :jruby
12
6
  gem 'rails', '~> 5.2.0'
data/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## Unreleased
2
+
3
+ ## v1.4.0
4
+ - Support loading config from `$XDG_CONFIG_HOME/aprc` - #63
5
+ - Remove support for Rails 5.1 #75
6
+ - Update AR specs for Ruby 2.6.7 #76
7
+ - Load .aprc configs only once. #74
8
+ - Add XDG config support #77
9
+ - Rubocop updates #79
10
+ - Update Irb integration for v1.2.6+ #81
11
+
12
+ ## v1.3.0
13
+ - Fix HTML escaping problems #53
14
+ - Update test suite for Ruby 2.7.2 and JRuby #61
15
+ - Add ActionView spec for html_safe #65
16
+ - Add support for Rails 6.1 #68
17
+ - Update specs for Ruby 3.0 #69
18
+
1
19
  ## v1.2.2
2
20
  - Support Ruby 3.0 / IRB 1.2.6 - #57
3
21
  - Fix FrozenError - #51
data/Gemfile.lock CHANGED
@@ -1,69 +1,66 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- amazing_print (1.2.3.pre)
4
+ amazing_print (1.3.1.pre)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- appraisal (2.3.0)
9
+ appraisal (2.4.1)
10
10
  bundler
11
11
  rake
12
12
  thor (>= 0.14.0)
13
- ast (2.4.1)
13
+ ast (2.4.2)
14
14
  coderay (1.1.3)
15
15
  diff-lcs (1.4.4)
16
- fakefs (1.2.2)
17
- ffi (1.13.1-java)
18
- jaro_winkler (1.5.4)
19
- jaro_winkler (1.5.4-java)
16
+ fakefs (1.3.2)
20
17
  method_source (1.0.0)
21
- mini_portile2 (2.4.0)
22
- nokogiri (1.10.10)
23
- mini_portile2 (~> 2.4.0)
24
- nokogiri (1.10.10-java)
25
- parallel (1.20.0)
26
- parser (2.7.2.0)
18
+ mini_portile2 (2.6.1)
19
+ nokogiri (1.12.5)
20
+ mini_portile2 (~> 2.6.1)
21
+ racc (~> 1.4)
22
+ parallel (1.21.0)
23
+ parser (3.0.2.0)
27
24
  ast (~> 2.4.1)
28
- pry (0.13.1)
25
+ pry (0.14.1)
29
26
  coderay (~> 1.1)
30
27
  method_source (~> 1.0)
31
- pry (0.13.1-java)
32
- coderay (~> 1.1)
33
- method_source (~> 1.0)
34
- spoon (~> 0.0)
28
+ racc (1.5.2)
35
29
  rainbow (3.0.0)
36
- rake (13.0.1)
37
- rexml (3.2.4)
30
+ rake (13.0.6)
31
+ regexp_parser (2.1.1)
32
+ rexml (3.2.5)
38
33
  rspec (3.10.0)
39
34
  rspec-core (~> 3.10.0)
40
35
  rspec-expectations (~> 3.10.0)
41
36
  rspec-mocks (~> 3.10.0)
42
- rspec-core (3.10.0)
37
+ rspec-core (3.10.1)
43
38
  rspec-support (~> 3.10.0)
44
- rspec-expectations (3.10.0)
39
+ rspec-expectations (3.10.1)
45
40
  diff-lcs (>= 1.2.0, < 2.0)
46
41
  rspec-support (~> 3.10.0)
47
- rspec-mocks (3.10.0)
42
+ rspec-mocks (3.10.2)
48
43
  diff-lcs (>= 1.2.0, < 2.0)
49
44
  rspec-support (~> 3.10.0)
50
- rspec-support (3.10.0)
51
- rubocop (0.81.0)
52
- jaro_winkler (~> 1.5.1)
45
+ rspec-support (3.10.2)
46
+ rubocop (1.22.1)
53
47
  parallel (~> 1.10)
54
- parser (>= 2.7.0.1)
48
+ parser (>= 3.0.0.0)
55
49
  rainbow (>= 2.2.2, < 4.0)
50
+ regexp_parser (>= 1.8, < 3.0)
56
51
  rexml
52
+ rubocop-ast (>= 1.12.0, < 2.0)
57
53
  ruby-progressbar (~> 1.7)
58
- unicode-display_width (>= 1.4.0, < 2.0)
59
- ruby-progressbar (1.10.1)
60
- spoon (0.0.6)
61
- ffi
62
- thor (1.0.1)
63
- unicode-display_width (1.7.0)
54
+ unicode-display_width (>= 1.4.0, < 3.0)
55
+ rubocop-ast (1.12.0)
56
+ parser (>= 3.0.1.1)
57
+ rubocop-rspec (2.5.0)
58
+ rubocop (~> 1.19)
59
+ ruby-progressbar (1.11.0)
60
+ thor (1.1.0)
61
+ unicode-display_width (2.1.0)
64
62
 
65
63
  PLATFORMS
66
- java
67
64
  ruby
68
65
 
69
66
  DEPENDENCIES
@@ -73,7 +70,8 @@ DEPENDENCIES
73
70
  nokogiri (~> 1.10)
74
71
  pry
75
72
  rspec (~> 3.9)
76
- rubocop (~> 0.81.0)
73
+ rubocop (~> 1.20)
74
+ rubocop-rspec (~> 2.4)
77
75
 
78
76
  BUNDLED WITH
79
- 2.1.4
77
+ 2.2.27
data/README.md CHANGED
@@ -15,8 +15,8 @@ AmazingPrint is a fork of [AwesomePrint](https://github.com/awesome-print/awesom
15
15
 
16
16
  ### Supported Versions ###
17
17
 
18
- - Ruby >= 2.3
19
- - Rails >= 5.1
18
+ - Ruby >= 2.5
19
+ - Rails >= 5.2
20
20
 
21
21
  ### Installation ###
22
22
  # Installing as Ruby gem
@@ -325,12 +325,13 @@ red text # (it's red)
325
325
  ```
326
326
 
327
327
  ### Setting Custom Defaults ###
328
- You can set your own default options by creating ``.aprc`` file in your home
329
- directory. Within that file assign your defaults to ``AmazingPrint.defaults``.
328
+ You can set your own default options by creating ``aprc`` file in your `$XDG_CONFIG_HOME`
329
+ directory (defaults to `~/.config` if undefined). Within that file assign your defaults
330
+ to ``AmazingPrint.defaults``.
330
331
  For example:
331
332
 
332
333
  ```ruby
333
- # ~/.aprc file.
334
+ # ~/.config/aprc file.
334
335
  AmazingPrint.defaults = {
335
336
  :indent => -2,
336
337
  :color => {
@@ -340,6 +341,8 @@ AmazingPrint.defaults = {
340
341
  }
341
342
  ```
342
343
 
344
+ The previous `~/.aprc` location is still supported as fallback.
345
+
343
346
  ## Versioning
344
347
 
345
348
  AmazingPrint follows the [Semantic Versioning](http://semver.org/) standard.
@@ -17,9 +17,7 @@ module AmazingPrint
17
17
  elsif str.method(options[:color][type]).arity == -1 # Accepts html parameter.
18
18
  str.send(options[:color][type], options[:html])
19
19
  else
20
- if options[:html]
21
- str = %(<kbd style="color:#{options[:color][type]}">#{str}</kbd>)
22
- end
20
+ str = %(<kbd style="color:#{options[:color][type]}">#{str}</kbd>) if options[:html]
23
21
  str.send(options[:color][type])
24
22
  end
25
23
  end
@@ -14,14 +14,14 @@
14
14
  #
15
15
  # If you could think of a better way please let me know :-)
16
16
  #
17
- module AwesomeMethodArray #:nodoc:
18
- def -(_other_ary)
17
+ module AwesomeMethodArray # :nodoc:
18
+ def -(other)
19
19
  super.tap do |arr|
20
20
  arr.instance_variable_set(:@__awesome_methods__, instance_variable_get(:@__awesome_methods__))
21
21
  end
22
22
  end
23
23
 
24
- def &(_other_ary)
24
+ def &(other)
25
25
  super.tap do |arr|
26
26
  arr.instance_variable_set(:@__awesome_methods__, instance_variable_get(:@__awesome_methods__))
27
27
  end
@@ -68,7 +68,7 @@ module AwesomeMethodArray #:nodoc:
68
68
  # [ 0, 1, 2, 3, 4 ].grep(1..2, &:succ)
69
69
  #
70
70
  begin
71
- eval("%Q/#{match.to_s.gsub('/', '\/')}/ =~ #{pattern.inspect}", blk.binding)
71
+ eval("%Q/#{match.to_s.gsub('/', '\/')}/ =~ #{pattern.inspect}", blk.binding, __FILE__, __LINE__)
72
72
  rescue StandardError
73
73
  ArgumentError
74
74
  end
@@ -5,7 +5,7 @@
5
5
  # AmazingPrint is freely distributable under the terms of MIT license.
6
6
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
7
7
  #------------------------------------------------------------------------------
8
- class Class #:nodoc:
8
+ class Class # :nodoc:
9
9
  #
10
10
  # Intercept methods below to inject @__amazing_print__ instance variable
11
11
  # so we know it is the *methods* array when formatting an array.
@@ -25,6 +25,4 @@ module AmazingPrint
25
25
  end
26
26
 
27
27
  Logger.include AmazingPrint::Logger
28
- if defined?(ActiveSupport::BufferedLogger)
29
- ActiveSupport::BufferedLogger.include AmazingPrint::Logger
30
- end
28
+ ActiveSupport::BufferedLogger.include AmazingPrint::Logger if defined?(ActiveSupport::BufferedLogger)
@@ -5,7 +5,7 @@
5
5
  # AmazingPrint is freely distributable under the terms of MIT license.
6
6
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
7
7
  #------------------------------------------------------------------------------
8
- class Object #:nodoc:
8
+ class Object # :nodoc:
9
9
  #
10
10
  # Intercept methods below to inject @__amazing_print__ instance variable
11
11
  # so we know it is the *methods* array when formatting an array.
@@ -7,8 +7,8 @@ module AmazingPrint
7
7
  # Class accessor to force colorized output (ex. forked subprocess where TERM
8
8
  # might be dumb).
9
9
  #---------------------------------------------------------------------------
10
- def force_colors!(value = true)
11
- @force_colors = value
10
+ def force_colors!(colors: true)
11
+ @force_colors = colors
12
12
  end
13
13
 
14
14
  def console?
@@ -29,7 +29,7 @@ module AmazingPrint
29
29
 
30
30
  def usual_rb
31
31
  IRB::Irb.class_eval do
32
- def output_value(_omit = false)
32
+ def output_value(_omit = false) # rubocop:disable Style/OptionalBooleanParameter
33
33
  ap @context.last_value
34
34
  rescue NoMethodError
35
35
  puts "(Object doesn't support #ai)"
@@ -47,6 +47,13 @@ module AmazingPrint
47
47
  Pry.print = proc { |output, value| output.puts value.ai } if defined?(Pry)
48
48
  end
49
49
 
50
+ ##
51
+ # Reload the cached custom configurations.
52
+ #
53
+ def reload!
54
+ AmazingPrint::Inspector.reload_dotfile
55
+ end
56
+
50
57
  private
51
58
 
52
59
  # Takes a value and returns true unless it is false or nil
@@ -45,15 +45,15 @@ module AmazingPrint
45
45
  return object.inspect unless defined?(::ActiveSupport::OrderedHash)
46
46
  return awesome_object(object) if @options[:raw]
47
47
 
48
- data = if object.class.column_names != object.attributes.keys
49
- object.attributes
50
- else
48
+ data = if object.class.column_names == object.attributes.keys
51
49
  object.class.column_names.each_with_object(::ActiveSupport::OrderedHash.new) do |name, hash|
52
50
  if object.has_attribute?(name) || object.new_record?
53
51
  value = object.respond_to?(name) ? object.send(name) : object.read_attribute(name)
54
52
  hash[name.to_sym] = value
55
53
  end
56
54
  end
55
+ else
56
+ object.attributes
57
57
  end
58
58
  [awesome_simple(object.to_s, :active_record_instance), awesome_hash(data)].join(' ')
59
59
  end
@@ -61,12 +61,8 @@ module AmazingPrint
61
61
  # Format ActiveRecord class object.
62
62
  #------------------------------------------------------------------------------
63
63
  def awesome_active_record_class(object)
64
- if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:columns) || object.to_s == 'ActiveRecord::Base'
65
- return object.inspect
66
- end
67
- if object.respond_to?(:abstract_class?) && object.abstract_class?
68
- return awesome_class(object)
69
- end
64
+ return object.inspect if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:columns) || object.to_s == 'ActiveRecord::Base'
65
+ return awesome_class(object) if object.respond_to?(:abstract_class?) && object.abstract_class?
70
66
 
71
67
  data = object.columns.each_with_object(::ActiveSupport::OrderedHash.new) do |c, hash|
72
68
  hash[c.name.to_sym] = c.type
@@ -42,6 +42,4 @@ AmazingPrint::Formatter.include AmazingPrint::ActiveSupport
42
42
  #
43
43
  # Colorize Rails logs.
44
44
  #
45
- if defined?(ActiveSupport::LogSubscriber)
46
- AmazingPrint.force_colors! ActiveSupport::LogSubscriber.colorize_logging
47
- end
45
+ AmazingPrint.force_colors! colors: ActiveSupport::LogSubscriber.colorize_logging if defined?(ActiveSupport::LogSubscriber)
@@ -19,7 +19,8 @@ module AmazingPrint
19
19
  cast = cast_without_mongo_mapper(object, type)
20
20
 
21
21
  if defined?(::MongoMapper::Document)
22
- if object.is_a?(Class) && !(object.ancestors & [::MongoMapper::Document, ::MongoMapper::EmbeddedDocument]).empty?
22
+ if object.is_a?(Class) && !(object.ancestors & [::MongoMapper::Document,
23
+ ::MongoMapper::EmbeddedDocument]).empty?
23
24
  cast = :mongo_mapper_class
24
25
  elsif object.is_a?(::MongoMapper::Document) || object.is_a?(::MongoMapper::EmbeddedDocument)
25
26
  cast = :mongo_mapper_instance
@@ -36,9 +37,7 @@ module AmazingPrint
36
37
  # Format MongoMapper class object.
37
38
  #------------------------------------------------------------------------------
38
39
  def awesome_mongo_mapper_class(object)
39
- if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:keys)
40
- return object.inspect
41
- end
40
+ return object.inspect if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:keys)
42
41
 
43
42
  data = object.keys.sort.each_with_object(::ActiveSupport::OrderedHash.new) do |c, hash|
44
43
  hash[c.first] = (c.last.type || 'undefined').to_s.underscore.intern
@@ -86,9 +85,7 @@ module AmazingPrint
86
85
  end
87
86
 
88
87
  label = object.to_s
89
- if object.is_a?(::MongoMapper::EmbeddedDocument)
90
- label = "#{colorize('embedded', :assoc)} #{label}"
91
- end
88
+ label = "#{colorize('embedded', :assoc)} #{label}" if object.is_a?(::MongoMapper::EmbeddedDocument)
92
89
 
93
90
  [label, awesome_hash(data)].join(' ')
94
91
  end
@@ -31,9 +31,7 @@ module AmazingPrint
31
31
  # Format Mongoid class object.
32
32
  #------------------------------------------------------------------------------
33
33
  def awesome_mongoid_class(object)
34
- if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:fields)
35
- return object.inspect
36
- end
34
+ return object.inspect if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:fields)
37
35
 
38
36
  data = object.fields.sort.each_with_object(::ActiveSupport::OrderedHash.new) do |c, hash|
39
37
  hash[c[1].name.to_sym] = (c[1].type || 'undefined').to_s.underscore.intern
@@ -53,9 +51,7 @@ module AmazingPrint
53
51
  data = (object.attributes || {}).sort.each_with_object(::ActiveSupport::OrderedHash.new) do |c, hash|
54
52
  hash[c[0].to_sym] = c[1]
55
53
  end
56
- unless object.errors.empty?
57
- data = { errors: object.errors, attributes: data }
58
- end
54
+ data = { errors: object.errors, attributes: data } unless object.errors.empty?
59
55
  "#{object} #{awesome_hash(data)}"
60
56
  end
61
57
 
@@ -32,9 +32,9 @@ module AmazingPrint
32
32
  #------------------------------------------------------------------------------
33
33
  def awesome_nobrainer_class(object)
34
34
  name = "#{awesome_simple(object, :class)} < #{awesome_simple(object.superclass, :class)}"
35
- data = Hash[object.fields.map do |field, options|
35
+ data = object.fields.map do |field, options|
36
36
  [field, (options[:type] || Object).to_s.underscore.to_sym]
37
- end]
37
+ end.to_h
38
38
 
39
39
  name = "class #{awesome_simple(object.to_s, :class)}"
40
40
  base = "< #{awesome_simple(object.superclass.to_s, :class)}"
@@ -46,9 +46,7 @@ module AmazingPrint
46
46
  #------------------------------------------------------------------------------
47
47
  def awesome_nobrainer_document(object)
48
48
  data = object.inspectable_attributes.symbolize_keys
49
- if object.errors.present?
50
- data = { errors: object.errors, attributes: data }
51
- end
49
+ data = { errors: object.errors, attributes: data } if object.errors.present?
52
50
  "#{object} #{awesome_hash(data)}"
53
51
  end
54
52
  end
@@ -34,9 +34,7 @@ module AmazingPrint
34
34
  xml.gsub!(%r{(<)(/?[A-Za-z1-9]+)}) { |_tag| "#{Regexp.last_match(1)}#{colorize(Regexp.last_match(2), :keyword)}" }
35
35
  xml.gsub!(/(id|class)="[^"]+"/i) { |id| colorize(id, :class) }
36
36
  xml.gsub!(/>([^<]+)</) do |contents|
37
- if contents && !contents.empty?
38
- contents = colorize(Regexp.last_match(1), :trueclass)
39
- end
37
+ contents = colorize(Regexp.last_match(1), :trueclass) if contents && !contents.empty?
40
38
  ">#{contents}<"
41
39
  end
42
40
  xml
@@ -14,9 +14,7 @@ module AmazingPrint
14
14
 
15
15
  def cast_with_ostruct(object, type)
16
16
  cast = cast_without_ostruct(object, type)
17
- if defined?(::OpenStruct) && object.is_a?(::OpenStruct)
18
- cast = :open_struct_instance
19
- end
17
+ cast = :open_struct_instance if defined?(::OpenStruct) && object.is_a?(::OpenStruct)
20
18
  cast
21
19
  end
22
20
 
@@ -18,9 +18,10 @@ module AmazingPrint
18
18
  cast = cast_without_ripple(object, type)
19
19
  return cast unless defined?(::Ripple)
20
20
 
21
- if object.is_a?(::Ripple::AttributeMethods) # Module used to access attributes across documents and embedded documents
21
+ case object
22
+ when ::Ripple::AttributeMethods # Module used to access attributes across documents and embedded documents
22
23
  cast = :ripple_document_instance
23
- elsif object.is_a?(::Ripple::Properties) # Used to access property metadata on Ripple classes
24
+ when ::Ripple::Properties # Used to access property metadata on Ripple classes
24
25
  cast = :ripple_document_class
25
26
  end
26
27
  cast
@@ -58,9 +59,7 @@ module AmazingPrint
58
59
  # Format Ripple class object.
59
60
  #------------------------------------------------------------------------------
60
61
  def awesome_ripple_document_class(object)
61
- if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:properties)
62
- return object.inspect
63
- end
62
+ return object.inspect if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:properties)
64
63
 
65
64
  name = "class #{awesome_simple(object.to_s, :class)}"
66
65
  base = "< #{awesome_simple(object.superclass.to_s, :class)}"
@@ -24,12 +24,11 @@ module AmazingPrint
24
24
  #------------------------------------------------------------------------------
25
25
  def format(object, type = nil)
26
26
  core_class = cast(object, type)
27
- awesome = if core_class != :self
28
- send(:"awesome_#{core_class}", object) # Core formatters.
29
- else
30
- awesome_self(object, type) # Catch all that falls back to object.inspect.
31
- end
32
- awesome
27
+ if core_class == :self
28
+ awesome_self(object, type) # Catch all that falls back to object.inspect.
29
+ else
30
+ send(:"awesome_#{core_class}", object) # Core formatters.
31
+ end
33
32
  end
34
33
 
35
34
  # Hook this when adding custom formatters. Check out lib/amazing_print/ext
@@ -8,6 +8,7 @@ module AmazingPrint
8
8
  attr_reader :array, :inspector, :options
9
9
 
10
10
  def initialize(array, inspector)
11
+ super()
11
12
  @array = array
12
13
  @inspector = inspector
13
14
  @options = inspector.options
@@ -33,7 +34,7 @@ module AmazingPrint
33
34
  if options[:multiline]
34
35
  multiline_array
35
36
  else
36
- '[ ' + array.map { |item| inspector.awesome(item) }.join(', ') + ' ]'
37
+ "[ #{array.map { |item| inspector.awesome(item) }.join(', ')} ]"
37
38
  end
38
39
  end
39
40
 
@@ -114,14 +115,14 @@ module AmazingPrint
114
115
 
115
116
  meth = begin
116
117
  object.method(name)
117
- rescue NameError, ArgumentError
118
- nil
118
+ rescue NameError, ArgumentError
119
+ nil
119
120
  end
120
121
 
121
122
  meth || begin
122
123
  object.instance_method(name)
123
- rescue NameError
124
- nil
124
+ rescue NameError
125
+ nil
125
126
  end
126
127
  end
127
128
 
@@ -30,7 +30,7 @@ module AmazingPrint
30
30
  # ]
31
31
  #------------------------------------------------------------------------------
32
32
  def should_be_limited?
33
- options[:limit] || (options[:limit].is_a?(Integer) && (options[:limit] > 0))
33
+ options[:limit] || (options[:limit].is_a?(Integer) && options[:limit].positive?)
34
34
  end
35
35
 
36
36
  def get_limit_size
@@ -42,14 +42,14 @@ module AmazingPrint
42
42
  end
43
43
  end
44
44
 
45
- def limited(data, width, is_hash = false)
45
+ def limited(data, width, is_hash: false)
46
46
  limit = get_limit_size
47
47
  if data.length <= limit
48
48
  data
49
49
  else
50
50
  # Calculate how many elements to be displayed above and below the separator.
51
51
  head = limit / 2
52
- tail = head - (limit - 1) % 2
52
+ tail = head - ((limit - 1) % 2)
53
53
 
54
54
  # Add the proper elements to the temp array and format the separator.
55
55
  temp = data[0, head] + [nil] + data[-tail, tail]
@@ -65,23 +65,18 @@ module AmazingPrint
65
65
  end
66
66
 
67
67
  def method_tuple(method)
68
- if method.respond_to?(:parameters) # Ruby 1.9.2+
69
- # See http://readruby.chengguangnan.com/methods#method-objects-parameters
70
- # (mirror: http://archive.is/XguCA#selection-3381.1-3381.11)
71
- args = method.parameters.inject([]) do |arr, (type, name)|
72
- name ||= (type == :block ? 'block' : "arg#{arr.size + 1}")
73
- arr << case type
74
- when :req then name.to_s
75
- when :keyreq then "#{name}:"
76
- when :key then "*#{name}:"
77
- when :opt, :rest then "*#{name}"
78
- when :block then "&#{name}"
79
- else '?'
80
- end
81
- end
82
- else # See http://ruby-doc.org/core/classes/Method.html#M001902
83
- args = (1..method.arity.abs).map { |i| "arg#{i}" }
84
- args[-1] = "*#{args[-1]}" if method.arity < 0
68
+ # See http://readruby.chengguangnan.com/methods#method-objects-parameters
69
+ # (mirror: http://archive.is/XguCA#selection-3381.1-3381.11)
70
+ args = method.parameters.inject([]) do |arr, (type, name)|
71
+ name ||= (type == :block ? 'block' : "arg#{arr.size + 1}")
72
+ arr << case type
73
+ when :req then name.to_s
74
+ when :keyreq then "#{name}:"
75
+ when :key then "*#{name}:"
76
+ when :opt, :rest then "*#{name}"
77
+ when :block then "&#{name}"
78
+ else '?'
79
+ end
85
80
  end
86
81
 
87
82
  # method.to_s formats to handle:
@@ -95,7 +90,7 @@ module AmazingPrint
95
90
  # #<UnboundMethod: Hello#world>
96
91
  # #<UnboundMethod: Hello#world() /home/hs/code/amazing_print/spec/methods_spec.rb:68>
97
92
  #
98
- if method.to_s =~ %r{(Unbound)*Method: ((#<)?[^/#]*)[#\.]}
93
+ if method.to_s =~ %r{(Unbound)*Method: ((#<)?[^/#]*)[#.]}
99
94
  unbound = Regexp.last_match(1) && '(unbound)'
100
95
  klass = Regexp.last_match(2)
101
96
  if klass && klass =~ /(\(\w+:\s.*?\))/ # Is this ActiveRecord-style class?
@@ -123,21 +118,21 @@ module AmazingPrint
123
118
  INDENT_CACHE = (0..100).map { |i| ' ' * i }.map(&:freeze).freeze
124
119
 
125
120
  def indent(n = indentation)
126
- INDENT_CACHE[n] || ' ' * n
121
+ INDENT_CACHE[n] || (' ' * n)
127
122
  end
128
123
 
129
124
  def outdent
130
125
  i = indentation - options[:indent].abs
131
126
 
132
- INDENT_CACHE[i] || ' ' * i
127
+ INDENT_CACHE[i] || (' ' * i)
133
128
  end
134
129
 
135
130
  def align(value, width)
136
131
  if options[:multiline]
137
132
  indent_option = options[:indent]
138
- if indent_option > 0
133
+ if indent_option.positive?
139
134
  value.rjust(width)
140
- elsif indent_option == 0
135
+ elsif indent_option.zero?
141
136
  "#{indent}#{value.ljust(width)}"
142
137
  else
143
138
  "#{indent(indentation + indent_option)}#{value.ljust(width)}"
@@ -8,6 +8,7 @@ module AmazingPrint
8
8
  attr_reader :klass, :inspector, :options
9
9
 
10
10
  def initialize(klass, inspector)
11
+ super()
11
12
  @klass = klass
12
13
  @inspector = inspector
13
14
  @options = inspector.options
@@ -10,6 +10,7 @@ module AmazingPrint
10
10
  attr_reader :dir, :inspector, :options
11
11
 
12
12
  def initialize(dir, inspector)
13
+ super()
13
14
  @dir = dir
14
15
  @inspector = inspector
15
16
  @options = inspector.options
@@ -10,6 +10,7 @@ module AmazingPrint
10
10
  attr_reader :file, :inspector, :options
11
11
 
12
12
  def initialize(file, inspector)
13
+ super()
13
14
  @file = file
14
15
  @inspector = inspector
15
16
  @options = inspector.options