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
@@ -8,6 +8,7 @@ module AmazingPrint
8
8
  attr_reader :hash, :inspector, :options
9
9
 
10
10
  def initialize(hash, inspector)
11
+ super()
11
12
  @hash = hash
12
13
  @inspector = inspector
13
14
  @options = inspector.options
@@ -55,12 +56,12 @@ module AmazingPrint
55
56
  end
56
57
  end
57
58
 
58
- should_be_limited? ? limited(data, width, hash: true) : data
59
+ should_be_limited? ? limited(data, width, is_hash: true) : data
59
60
  end
60
61
 
61
62
  def left_width(keys)
62
63
  result = max_key_width(keys)
63
- result += indentation if options[:indent] > 0
64
+ result += indentation if options[:indent].positive?
64
65
  result
65
66
  end
66
67
 
@@ -8,6 +8,7 @@ module AmazingPrint
8
8
  attr_reader :method, :inspector, :options
9
9
 
10
10
  def initialize(method, inspector)
11
+ super()
11
12
  @method = method
12
13
  @inspector = inspector
13
14
  @options = inspector.options
@@ -8,6 +8,7 @@ module AmazingPrint
8
8
  attr_reader :object, :variables, :inspector, :options
9
9
 
10
10
  def initialize(object, inspector)
11
+ super()
11
12
  @object = object
12
13
  @variables = object.instance_variables
13
14
  @inspector = inspector
@@ -38,7 +39,7 @@ module AmazingPrint
38
39
  key = if key =~ /(@\w+)/
39
40
  key.sub(Regexp.last_match(1), colorize(Regexp.last_match(1), :variable))
40
41
  else
41
- key.sub(/(attr_\w+)\s(\:\w+)/, "#{colorize('\\1', :keyword)} #{colorize('\\2', :method)}")
42
+ key.sub(/(attr_\w+)\s(:\w+)/, "#{colorize('\\1', :keyword)} #{colorize('\\2', :method)}")
42
43
  end
43
44
  end
44
45
 
@@ -8,6 +8,7 @@ module AmazingPrint
8
8
  attr_reader :string, :type, :inspector, :options
9
9
 
10
10
  def initialize(string, type, inspector)
11
+ super()
11
12
  @string = string
12
13
  @type = type
13
14
  @inspector = inspector
@@ -8,6 +8,7 @@ module AmazingPrint
8
8
  attr_reader :struct, :variables, :inspector, :options
9
9
 
10
10
  def initialize(struct, inspector)
11
+ super()
11
12
  @struct = struct
12
13
  @variables = struct.members
13
14
  @inspector = inspector
@@ -38,7 +39,7 @@ module AmazingPrint
38
39
  key = if key =~ /(@\w+)/
39
40
  key.sub(Regexp.last_match(1), colorize(Regexp.last_match(1), :variable))
40
41
  else
41
- key.sub(/(attr_\w+)\s(\:\w+)/, "#{colorize('\\1', :keyword)} #{colorize('\\2', :method)}")
42
+ key.sub(/(attr_\w+)\s(:\w+)/, "#{colorize('\\1', :keyword)} #{colorize('\\2', :method)}")
42
43
  end
43
44
  end
44
45
 
@@ -5,6 +5,9 @@
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
+
9
+ # rubocop:disable Metrics/ClassLength
10
+
8
11
  require_relative 'indentator'
9
12
 
10
13
  module AmazingPrint
@@ -13,6 +16,15 @@ module AmazingPrint
13
16
 
14
17
  AP = :__amazing_print__
15
18
 
19
+ ##
20
+ # Unload the cached dotfile and load it again.
21
+ #
22
+ def self.reload_dotfile
23
+ @@dotfile = nil
24
+ new.send :load_dotfile
25
+ true
26
+ end
27
+
16
28
  def initialize(options = {})
17
29
  @options = {
18
30
  indent: 4, # Number of spaces for indenting.
@@ -91,7 +103,7 @@ module AmazingPrint
91
103
  if defined? @colorize_stdout
92
104
  @colorize_stdout
93
105
  else
94
- @colorize_stdout = STDOUT.tty? && (
106
+ @colorize_stdout = $stdout.tty? && (
95
107
  (
96
108
  ENV['TERM'] &&
97
109
  ENV['TERM'] != 'dumb'
@@ -147,18 +159,28 @@ module AmazingPrint
147
159
  @options.merge!(options)
148
160
  end
149
161
 
162
+ def find_dotfile
163
+ xdg_config_home = File.expand_path(ENV.fetch('XDG_CONFIG_HOME', '~/.config'))
164
+ xdg_config_path = File.join(xdg_config_home, 'aprc') # ${XDG_CONFIG_HOME}/aprc
165
+
166
+ return xdg_config_path if File.exist?(xdg_config_path)
167
+
168
+ # default to ~/.aprc
169
+ File.join(ENV['HOME'], '.aprc')
170
+ end
171
+
150
172
  # This method needs to be mocked during testing so that it always loads
151
173
  # predictable values
152
174
  #---------------------------------------------------------------------------
153
175
  def load_dotfile
154
- dotfile = File.join(ENV['HOME'], '.aprc')
176
+ return if @@dotfile # Load the dotfile only once.
177
+
178
+ dotfile = find_dotfile
155
179
  load dotfile if dotfile_readable?(dotfile)
156
180
  end
157
181
 
158
182
  def dotfile_readable?(dotfile)
159
- if @@dotfile_readable.nil? || @@dotfile != dotfile
160
- @@dotfile_readable = File.readable?(@@dotfile = dotfile)
161
- end
183
+ @@dotfile_readable = File.readable?(@@dotfile = dotfile) if @@dotfile_readable.nil? || @@dotfile != dotfile
162
184
  @@dotfile_readable
163
185
  end
164
186
  @@dotfile_readable = @@dotfile = nil
@@ -173,3 +195,5 @@ module AmazingPrint
173
195
  end
174
196
  end
175
197
  end
198
+
199
+ # rubocop:enable Metrics/ClassLength
@@ -7,6 +7,6 @@
7
7
  #------------------------------------------------------------------------------
8
8
  module AmazingPrint
9
9
  def self.version
10
- '1.3.0'
10
+ '1.4.0'
11
11
  end
12
12
  end
data/lib/amazing_print.rb CHANGED
@@ -23,12 +23,8 @@ unless defined?(AmazingPrint::Inspector)
23
23
  # Load the following under normal circumstances as well as in Rails
24
24
  # console when required from ~/.irbrc or ~/.pryrc.
25
25
  #
26
- if defined?(ActiveRecord) || AmazingPrint.rails_console?
27
- require_relative 'amazing_print/ext/active_record'
28
- end
29
- if defined?(ActiveSupport) || AmazingPrint.rails_console?
30
- require_relative 'amazing_print/ext/active_support'
31
- end
26
+ require_relative 'amazing_print/ext/active_record' if defined?(ActiveRecord) || AmazingPrint.rails_console?
27
+ require_relative 'amazing_print/ext/active_support' if defined?(ActiveSupport) || AmazingPrint.rails_console?
32
28
  #
33
29
  # Load remaining extensions.
34
30
  #
@@ -27,8 +27,11 @@ if ExtVerifier.has_rails?
27
27
 
28
28
  # Create models
29
29
  class User < ActiveRecord::Base; has_many :emails; end
30
+
30
31
  class SubUser < User; end
32
+
31
33
  class Email < ActiveRecord::Base; belongs_to :user; end
34
+
32
35
  class TableFreeModel
33
36
  include ::ActiveModel::Validations
34
37
  attr_reader(:name)
data/spec/colors_spec.rb CHANGED
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable Lint/ConstantDefinitionInBlock, Style/OptionalBooleanParameter
4
+
3
5
  require 'spec_helper'
4
6
 
5
7
  RSpec.describe 'AmazingPrint' do
6
- def stub_tty!(output = true, stream = STDOUT)
8
+ def stub_tty!(output = true, stream = $stdout)
7
9
  if output
8
10
  stream.instance_eval do
9
11
  def tty?
@@ -31,7 +33,7 @@ RSpec.describe 'AmazingPrint' do
31
33
 
32
34
  describe 'default settings (no forced colors)' do
33
35
  before do
34
- AmazingPrint.force_colors! false
36
+ AmazingPrint.force_colors! colors: false
35
37
  end
36
38
 
37
39
  it 'colorizes tty processes by default' do
@@ -109,3 +111,5 @@ RSpec.describe 'AmazingPrint' do
109
111
  end
110
112
  end
111
113
  end
114
+
115
+ # rubocop:enable Lint/ConstantDefinitionInBlock, Style/OptionalBooleanParameter
@@ -6,17 +6,17 @@ require 'logger'
6
6
  require 'amazing_print/core_ext/logger'
7
7
 
8
8
  RSpec.describe 'AmazingPrint logging extensions' do
9
- let(:object) { double }
10
- let(:options) { { sort_keys: true } }
11
-
12
9
  subject(:logger) do
13
10
  Logger.new('/dev/null')
14
11
  rescue Errno::ENOENT
15
12
  Logger.new('nul')
16
13
  end
17
14
 
15
+ let(:object) { double }
16
+ let(:options) { { sort_keys: true } }
17
+
18
18
  describe 'ap method' do
19
- it 'should awesome_inspect the given object' do
19
+ it 'awesome_inspects the given object' do
20
20
  expect(object).to receive(:ai)
21
21
  logger.ap object
22
22
  end
@@ -31,18 +31,18 @@ RSpec.describe 'AmazingPrint logging extensions' do
31
31
  AmazingPrint.defaults = {}
32
32
  end
33
33
 
34
- it 'should fallback to the default :debug log level' do
34
+ it 'fallbacks to the default :debug log level' do
35
35
  expect(logger).to receive(:debug)
36
36
  logger.ap nil
37
37
  end
38
38
 
39
- it 'should use the global user default if no level passed' do
39
+ it 'uses the global user default if no level passed' do
40
40
  AmazingPrint.defaults = { log_level: :info }
41
41
  expect(logger).to receive(:info)
42
42
  logger.ap nil
43
43
  end
44
44
 
45
- it 'should use the passed in level' do
45
+ it 'uses the passed in level' do
46
46
  expect(logger).to receive(:warn)
47
47
  logger.ap nil, :warn
48
48
  end
@@ -4,11 +4,11 @@ require 'spec_helper'
4
4
 
5
5
  RSpec.describe 'String extensions' do
6
6
  %i[gray red green yellow blue purple cyan white].each_with_index do |color, i|
7
- it "should have #{color} color" do
7
+ it "has #{color} color" do
8
8
  expect(color.to_s.send(color)).to eq("\e[1;#{30 + i}m#{color}\e[0m")
9
9
  end
10
10
 
11
- it "should have #{color}ish color" do
11
+ it "has #{color}ish color" do
12
12
  expect(color.to_s.send(:"#{color}ish")).to eq("\e[0;#{30 + i}m#{color}\e[0m")
13
13
  end
14
14
  end
@@ -10,7 +10,7 @@ RSpec.describe 'AmazingPrint::ActionController', skip: -> { !ExtVerifier.has_rai
10
10
  ActionController::Parameters.new post: { id: 1, content: 'Some' }
11
11
  end
12
12
 
13
- it 'should format as an object' do
13
+ it 'formats as an object' do
14
14
  expect(inspector.send(:awesome, parameters)).to match(
15
15
  /\A#?<ActionController::Parameters {"post"=>{"id"=>1, "content"=>"Some"}} permitted: false>\z/
16
16
  )
@@ -33,7 +33,7 @@ RSpec.describe 'AmazingPrint::ActionController', skip: -> { !ExtVerifier.has_rai
33
33
  ActionController::Parameters.new post: { id: 1, content: 'Some' }
34
34
  end
35
35
 
36
- it 'should format as a hash' do
36
+ it 'formats as a hash' do
37
37
  expect(inspector.send(:awesome, parameters.permit!)).to eq expected_output
38
38
  end
39
39
  end
@@ -8,7 +8,7 @@ RSpec.describe 'ActiveModel::Errors formatting', skip: -> { !ExtVerifier.has_rai
8
8
  @ap = AmazingPrint::Inspector.new(plain: true)
9
9
  end
10
10
 
11
- it 'should format active_model_errors properly' do
11
+ it 'formats active_model_errors properly' do
12
12
  model = TableFreeModel.new
13
13
  model.errors.add(:name, "can't be blank")
14
14
 
@@ -99,7 +99,7 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
99
99
  @ap = AmazingPrint::Inspector.new(plain: true)
100
100
  end
101
101
 
102
- it 'should show the entire record' do
102
+ it 'shows the entire record' do
103
103
  e = Email.create(email_address: 'foo@bar.com')
104
104
  u = User.last
105
105
  u.emails << e
@@ -216,7 +216,7 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
216
216
  @ap = AmazingPrint::Inspector.new(plain: true)
217
217
  end
218
218
 
219
- it 'should print the class' do
219
+ it 'prints the class' do
220
220
  expect(@ap.awesome(User)).to eq <<~EOS.strip
221
221
  class User < ActiveRecord::Base {
222
222
  :id => :integer,
@@ -228,7 +228,7 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
228
228
  EOS
229
229
  end
230
230
 
231
- it 'should print the class for non-direct subclasses of ActiveRecord::Base' do
231
+ it 'prints the class for non-direct subclasses of ActiveRecord::Base' do
232
232
  out = @ap.awesome(SubUser)
233
233
  expect(out).to eq <<~EOS.strip
234
234
  class SubUser < User {
@@ -241,11 +241,11 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
241
241
  EOS
242
242
  end
243
243
 
244
- it 'should print ActiveRecord::Base objects (ex. ancestors)' do
244
+ it 'prints ActiveRecord::Base objects (ex. ancestors)' do
245
245
  expect { @ap.awesome(User.ancestors) }.not_to raise_error
246
246
  end
247
247
 
248
- it 'should print valid HTML for subclasses' do
248
+ it 'prints valid HTML for subclasses' do
249
249
  @ap = AmazingPrint::Inspector.new(html: true)
250
250
  expect(@ap.awesome(SubUser)).to match('SubUser &lt; User')
251
251
  end
@@ -257,7 +257,7 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
257
257
  @ap = AmazingPrint::Inspector.new(plain: true)
258
258
  end
259
259
 
260
- it 'should format class methods properly' do
260
+ it 'formats class methods properly' do
261
261
  # spec 1
262
262
  out = @ap.awesome(User.methods.grep(/first/))
263
263
 
@@ -274,7 +274,7 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
274
274
  expect(out).to match(
275
275
  /\s*first\(\*(\*|args),\s+&(&|block)\)\s+User/
276
276
  )
277
- elsif RUBY_VERSION >= '2.7.0'
277
+ elsif RUBY_VERSION >= '2.6.7'
278
278
  expect(out).to match(
279
279
  /\s*first\(\*(\*|args),\s+&(&|block)\)\s+#<Class:ActiveRecord::Base> \(ActiveRecord::Querying\)/
280
280
  )
@@ -297,12 +297,14 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
297
297
  )
298
298
  elsif RUBY_VERSION >= '3.0.0'
299
299
  expect(out).to match(/\sprimary_key\(.*?\)\s+#<Class:User> \(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/)
300
- elsif RUBY_VERSION =~ /^2\.7\.(0|1)/
300
+ elsif RUBY_VERSION >= '2.6.7' && RUBY_VERSION < '2.7.0'
301
+ expect(out).to match(/\sprimary_key\(.*?\)\s+#<Class:ActiveRecord::Base> \(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/)
302
+ elsif RUBY_VERSION =~ /^2\.4\.([4-9]|[1-9][0-9])|^2\.[56]\./ || RUBY_VERSION >= '2.7.2'
303
+ expect(out).to match(/\sprimary_key\(.*?\)\s+User/)
304
+ elsif RUBY_VERSION >= '2.7.0'
301
305
  expect(out).to match(
302
306
  /\sprimary_key\(.*?\)\s+.+Class.+\(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/
303
307
  )
304
- elsif RUBY_VERSION =~ /^2\.4\.([4-9]|[1-9][0-9])|^2\.[56]\./ || RUBY_VERSION >= '2.7.2'
305
- expect(out).to match(/\sprimary_key\(.*?\)\s+User/)
306
308
  else
307
309
  expect(out).to match(/\sprimary_key\(.*?\)\s+Class \(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/)
308
310
  end
@@ -312,20 +314,18 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
312
314
 
313
315
  if ActiveRecord::VERSION::MAJOR < 3
314
316
  expect(out).to match(/\svalidate\(\*arg.*?\)\s+User \(ActiveRecord::Base\)/)
317
+ elsif RUBY_PLATFORM == 'java'
318
+ expect(out).to match(/\svalidate\(\*arg.*?\)\s+#<Class:\w+> \(ActiveModel::Validations::ClassMethods\)/)
319
+ elsif RUBY_VERSION >= '3.0.0'
320
+ expect(out).to match(/\svalidate\(\*arg.*?\)\s+#<Class:User> \(ActiveModel::Validations::ClassMethods\)/)
321
+ elsif RUBY_VERSION =~ /2\.7\.(0|1)/ || (RUBY_VERSION >= '2.6.7' && RUBY_VERSION < '2.7.0')
322
+ expect(out).to match(
323
+ /\svalidate\(\*args.*?\)\s+#<Class:ActiveRecord::Base> \(ActiveModel::Validations::ClassMethods\)/
324
+ )
325
+ elsif RUBY_VERSION =~ /^2\.4\.([4-9]|[1-9][0-9])|^2\.[56]\./ || RUBY_VERSION >= '2.7.2'
326
+ expect(out).to match(/\svalidate\(\*arg.*?\)\s+User/)
315
327
  else
316
- if RUBY_PLATFORM == 'java'
317
- expect(out).to match(/\svalidate\(\*arg.*?\)\s+#<Class:\w+> \(ActiveModel::Validations::ClassMethods\)/)
318
- elsif RUBY_VERSION >= '3.0.0'
319
- expect(out).to match(/\svalidate\(\*arg.*?\)\s+#<Class:User> \(ActiveModel::Validations::ClassMethods\)/)
320
- elsif RUBY_VERSION =~ /2\.7\.(0|1)/
321
- expect(out).to match(
322
- /\svalidate\(\*args.*?\)\s+#<Class:ActiveRecord::Base> \(ActiveModel::Validations::ClassMethods\)/
323
- )
324
- elsif RUBY_VERSION =~ /^2\.4\.([4-9]|[1-9][0-9])|^2\.[56]\./ || RUBY_VERSION >= '2.7.2'
325
- expect(out).to match(/\svalidate\(\*arg.*?\)\s+User/)
326
- else
327
- expect(out).to match(/\svalidate\(\*arg.*?\)\s+Class \(ActiveModel::Validations::ClassMethods\)/)
328
- end
328
+ expect(out).to match(/\svalidate\(\*arg.*?\)\s+Class \(ActiveModel::Validations::ClassMethods\)/)
329
329
  end
330
330
  end
331
331
  end
@@ -15,21 +15,21 @@ RSpec.describe 'AmazingPrint::ActiveSupport', skip: -> { !ExtVerifier.has_rails?
15
15
  @ap = AmazingPrint::Inspector.new
16
16
  end
17
17
 
18
- it 'should format ActiveSupport::TimeWithZone as regular Time' do
18
+ it 'formats ActiveSupport::TimeWithZone as regular Time' do
19
19
  Time.zone = 'Eastern Time (US & Canada)'
20
20
  time = Time.utc(2007, 2, 10, 20, 30, 45).in_time_zone
21
21
  expect(@ap.send(:awesome, time))
22
22
  .to eq("\e[0;32mSat, 10 Feb 2007 #{expected_ar_time_str} EST -05:00\e[0m")
23
23
  end
24
24
 
25
- it 'should format HashWithIndifferentAccess as regular Hash' do
25
+ it 'formats HashWithIndifferentAccess as regular Hash' do
26
26
  hash = HashWithIndifferentAccess.new({ hello: 'world' })
27
27
  expect(@ap.send(:awesome, hash)).to eq("{\n \"hello\"\e[0;37m => \e[0m\e[0;33m\"world\"\e[0m\n}")
28
28
  end
29
29
 
30
30
  # ActiveSupport sticks in instance variables to the date object. Make sure
31
31
  # we ignore that and format Date instance as regular date.
32
- it 'should formate Date object as date' do
32
+ it 'formates Date object as date' do
33
33
  date = Date.new(2003, 5, 26)
34
34
  expect(date.ai(plain: true)).to eq('Mon, 26 May 2003')
35
35
  expect(date.ai).to eq("\e[0;32mMon, 26 May 2003\e[0m")
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable Lint/ConstantDefinitionInBlock
4
+
3
5
  require 'spec_helper'
4
6
 
5
7
  RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_mapper? }.call do
@@ -27,11 +29,11 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
27
29
  # before { @ap.options[:raw] = true }
28
30
  before { @ap = AmazingPrint::Inspector.new(plain: true, sort_keys: true, raw: true) }
29
31
 
30
- it 'should print class instance' do
32
+ it 'prints class instance' do
31
33
  user = MongoUser.new(first_name: 'Al', last_name: 'Capone')
32
34
 
33
35
  out = @ap.send(:awesome, user)
34
- .gsub(/#\<Proc:.+?\>/, 'amazing_print_PROC_STUB')
36
+ .gsub(/#<Proc:.+?>/, 'amazing_print_PROC_STUB')
35
37
  .gsub(/BSON::ObjectId\('[\da-f]+?'\)/, "BSON::ObjectId('123456789')")
36
38
 
37
39
  str = if MongoMapper::Version >= '0.13'
@@ -129,7 +131,7 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
129
131
  expect(out).to be_similar_to(str)
130
132
  end
131
133
 
132
- it 'should print the class' do
134
+ it 'prints the class' do
133
135
  expect(@ap.send(:awesome, MongoUser)).to eq <<~EOS.strip
134
136
  class MongoUser < Object {
135
137
  "_id" => :object_id,
@@ -139,7 +141,7 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
139
141
  EOS
140
142
  end
141
143
 
142
- it 'should print the class when type is undefined' do
144
+ it 'prints the class when type is undefined' do
143
145
  class Chamelion
144
146
  include MongoMapper::Document
145
147
  key :last_attribute
@@ -178,7 +180,7 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
178
180
  end
179
181
 
180
182
  describe 'with show associations turned off (default)' do
181
- it 'should render the class as normal' do
183
+ it 'renders the class as normal' do
182
184
  expect(@ap.send(:awesome, Parent)).to eq <<~EOS.strip
183
185
  class Parent < Object {
184
186
  "_id" => :object_id,
@@ -187,7 +189,7 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
187
189
  EOS
188
190
  end
189
191
 
190
- it 'should render an instance as normal' do
192
+ it 'renders an instance as normal' do
191
193
  parent = Parent.new(name: 'test')
192
194
  out = @ap.send(:awesome, parent)
193
195
  str = <<~EOS.strip
@@ -201,11 +203,11 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
201
203
  end
202
204
 
203
205
  describe 'with show associations turned on and inline embedded turned off' do
204
- before :each do
206
+ before do
205
207
  @ap = AmazingPrint::Inspector.new(plain: true, mongo_mapper: { show_associations: true })
206
208
  end
207
209
 
208
- it 'should render the class with associations shown' do
210
+ it 'renders the class with associations shown' do
209
211
  expect(@ap.send(:awesome, Parent)).to eq <<~EOS.strip
210
212
  class Parent < Object {
211
213
  "_id" => :object_id,
@@ -216,7 +218,7 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
216
218
  EOS
217
219
  end
218
220
 
219
- it 'should render an instance with associations shown' do
221
+ it 'renders an instance with associations shown' do
220
222
  parent = Parent.new(name: 'test')
221
223
  out = @ap.send(:awesome, parent)
222
224
  str = <<~EOS.strip
@@ -232,7 +234,7 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
232
234
  end
233
235
 
234
236
  describe 'with show associations turned on and inline embedded turned on' do
235
- before :each do
237
+ before do
236
238
  @ap = AmazingPrint::Inspector.new plain: true,
237
239
  mongo_mapper: {
238
240
  show_associations: true,
@@ -240,7 +242,7 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
240
242
  }
241
243
  end
242
244
 
243
- it 'should render an instance with associations shown and embeds there' do
245
+ it 'renders an instance with associations shown and embeds there' do
244
246
  parent = Parent.new(name: 'test', child: Child.new(data: 5))
245
247
  out = @ap.send(:awesome, parent)
246
248
  str = <<~EOS.strip
@@ -259,3 +261,5 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
259
261
  end
260
262
  end
261
263
  end
264
+
265
+ # rubocop:enable Lint/ConstantDefinitionInBlock
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable Lint/ConstantDefinitionInBlock
4
+
3
5
  require 'spec_helper'
4
6
 
5
7
  RSpec.describe 'AmazingPrint/Mongoid', skip: -> { !ExtVerifier.has_mongoid? }.call do
@@ -23,7 +25,7 @@ RSpec.describe 'AmazingPrint/Mongoid', skip: -> { !ExtVerifier.has_mongoid? }.ca
23
25
  @ap = AmazingPrint::Inspector.new plain: true, sort_keys: true
24
26
  end
25
27
 
26
- it 'should print class instance' do
28
+ it 'prints class instance' do
27
29
  user = MongoUser.new first_name: 'Al', last_name: 'Capone'
28
30
  out = @ap.send :awesome, user
29
31
 
@@ -38,7 +40,7 @@ RSpec.describe 'AmazingPrint/Mongoid', skip: -> { !ExtVerifier.has_mongoid? }.ca
38
40
  expect(out).to be_similar_to(str, { skip_bson: true })
39
41
  end
40
42
 
41
- it 'should print the class' do
43
+ it 'prints the class' do
42
44
  class_spec = <<~EOS.strip
43
45
  class MongoUser < Object {
44
46
  :_id => :"bson/object_id",
@@ -50,7 +52,7 @@ RSpec.describe 'AmazingPrint/Mongoid', skip: -> { !ExtVerifier.has_mongoid? }.ca
50
52
  expect(@ap.send(:awesome, MongoUser)).to eq class_spec
51
53
  end
52
54
 
53
- it 'should print the class when type is undefined' do
55
+ it 'prints the class when type is undefined' do
54
56
  class Chamelion
55
57
  include Mongoid::Document
56
58
  field :last_attribute
@@ -66,3 +68,5 @@ RSpec.describe 'AmazingPrint/Mongoid', skip: -> { !ExtVerifier.has_mongoid? }.ca
66
68
  expect(@ap.send(:awesome, Chamelion)).to eq class_spec
67
69
  end
68
70
  end
71
+
72
+ # rubocop:enable Lint/ConstantDefinitionInBlock
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable Lint/ConstantDefinitionInBlock
4
+
3
5
  require 'spec_helper'
4
6
 
5
7
  RSpec.describe 'AmazingPrint/NoBrainer', skip: -> { !ExtVerifier.has_nobrainer? }.call do
@@ -30,7 +32,7 @@ RSpec.describe 'AmazingPrint/NoBrainer', skip: -> { !ExtVerifier.has_nobrainer?
30
32
  @ap = AmazingPrint::Inspector.new plain: true
31
33
  end
32
34
 
33
- it 'should print class instance' do
35
+ it 'prints class instance' do
34
36
  user = SomeModel.new first_name: 'Al', last_name: 'Capone'
35
37
  out = @ap.send :awesome, user
36
38
 
@@ -45,7 +47,7 @@ RSpec.describe 'AmazingPrint/NoBrainer', skip: -> { !ExtVerifier.has_nobrainer?
45
47
  expect(out).to eq(str)
46
48
  end
47
49
 
48
- it 'should print the class' do
50
+ it 'prints the class' do
49
51
  class_spec = <<~EOS.strip
50
52
  class SomeModel < Object {
51
53
  :id => :string,
@@ -58,3 +60,5 @@ RSpec.describe 'AmazingPrint/NoBrainer', skip: -> { !ExtVerifier.has_nobrainer?
58
60
  expect(@ap.send(:awesome, SomeModel)).to eq class_spec
59
61
  end
60
62
  end
63
+
64
+ # rubocop:enable Lint/ConstantDefinitionInBlock
@@ -3,7 +3,7 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe 'AmazingPrint/Nokogiri' do
6
- it 'should colorize tags' do
6
+ it 'colorizes tags' do
7
7
  xml = Nokogiri::XML('<html><body><h1></h1></body></html>')
8
8
  # FIXME: Due to something strange with Nokogiri and JRuby, we need to remove extra blank lines.
9
9
  output = xml.ai.gsub(/\n\n/, "\n")
@@ -17,7 +17,7 @@ RSpec.describe 'AmazingPrint/Nokogiri' do
17
17
  EOS
18
18
  end
19
19
 
20
- it 'should colorize contents' do
20
+ it 'colorizes contents' do
21
21
  xml = Nokogiri::XML('<html><body><h1>Hello</h1></body></html>')
22
22
  expect(xml.ai).to eq <<~EOS
23
23
  <?xml version=\"1.0\"?>\e[1;32m
@@ -29,7 +29,7 @@ RSpec.describe 'AmazingPrint/Nokogiri' do
29
29
  EOS
30
30
  end
31
31
 
32
- it 'should colorize class and id' do
32
+ it 'colorizes class and id' do
33
33
  xml = Nokogiri::XML('<html><body><h1><span class="world" id="hello"></span></h1></body></html>')
34
34
  # FIXME: Due to something strange with Nokogiri and JRuby, we need to remove extra blank lines.
35
35
  output = xml.ai.gsub(/\n\n/, "\n")