object_inspector 0.4.0 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f01a078cf1fd2426c6b8db14983ded1ef0be16abd1e0e58c9716945e5fb3f75
4
- data.tar.gz: c2d17d5b4cec6f97798c943e600a64136d4bfdb231c6ae1c14b5bd3179a09142
3
+ metadata.gz: 9f4c63d6d3fafd3a58a9d2b5044b4d815e4778b762aa5ed38702e4ec79fcd4ec
4
+ data.tar.gz: 7aebf8ecc7b5ec9de2cb0b95d11b70cfdc1f91e69d306aa930843c90f7803571
5
5
  SHA512:
6
- metadata.gz: b96dcc1132c1fe41b7794f25377f9809bf574c93db37a9f4b178f20bf7d563c515cda8400ea774324ac67446db1a8c374601bbef2c541ab2a3bde8dfb2b67993
7
- data.tar.gz: bbefc6245702d58e25ea210a53530577f1943f0cf646012c8d27f9e068e5970748e52b1e41ce1878fe19b2caf3992ac0a8af5d7bb2cccb470ec6a354a4c5111d
6
+ metadata.gz: d2552d039748335690f1d3e95382232e644d875c43823d7bbb81cc5acaff3437549027e6119ee8dc1236e270bdea96e26ebd0130329d6e149bb01feac67d6c95
7
+ data.tar.gz: 3414d335667867d81c96701fd07bad0b71025f750c127db218915cb5e8f23116619fcfb347494aa9bc1b07b9fa5bf9056af0db82871eb029013c0417cb1bb387
data/.rubocop ADDED
@@ -0,0 +1,4 @@
1
+ --display-cop-names
2
+ --display-style-guide
3
+ --extra-details
4
+ --format=fuubar
data/.rubocop.yml ADDED
@@ -0,0 +1,145 @@
1
+ # AllCops:
2
+
3
+ Layout/ClassStructure:
4
+ Enabled: true
5
+ Categories:
6
+ module_inclusion:
7
+ - extend
8
+ - include
9
+ - prepend
10
+ attributes:
11
+ - attr_accessor
12
+ - attr_reader
13
+ - attr_writer
14
+ ExpectedOrder:
15
+ - constants
16
+ - module_inclusion
17
+ - attributes
18
+ - public_class_methods
19
+ - initializer
20
+ - public_methods
21
+ - predicates
22
+ - protected_methods
23
+ - private_methods
24
+
25
+ Layout/DotPosition:
26
+ EnforcedStyle: trailing
27
+
28
+ Layout/EmptyLineAfterGuardClause:
29
+ Enabled: true
30
+
31
+ Layout/EndOfLine:
32
+ EnforcedStyle: lf
33
+
34
+ Layout/FirstParameterIndentation:
35
+ EnforcedStyle: consistent_relative_to_receiver
36
+
37
+ Layout/IndentArray:
38
+ EnforcedStyle: consistent
39
+
40
+ Layout/IndentHash:
41
+ EnforcedStyle: consistent
42
+
43
+ Layout/MultilineAssignmentLayout:
44
+ Enabled: true
45
+
46
+ Layout/MultilineMethodCallBraceLayout:
47
+ EnforcedStyle: same_line
48
+
49
+ Layout/MultilineMethodCallIndentation:
50
+ EnforcedStyle: indented_relative_to_receiver
51
+
52
+ Layout/MultilineMethodDefinitionBraceLayout:
53
+ EnforcedStyle: same_line
54
+
55
+ Layout/MultilineOperationIndentation:
56
+ Enabled: false # Waiting for e.g. `indented_relative_to_receiver`.
57
+
58
+ Lint/AmbiguousOperator:
59
+ Enabled: false # Conflicts with other rules.
60
+
61
+ Lint/AmbiguousRegexpLiteral:
62
+ Enabled: false # Conflicts with other rules.
63
+
64
+ Lint/Void:
65
+ CheckForMethodsWithNoSideEffects: true
66
+
67
+ Metrics/BlockLength:
68
+ ExcludedMethods:
69
+ - new
70
+ - describe # Tests
71
+ - context # Tests
72
+ - ips # Benchmarking
73
+
74
+ Metrics/ClassLength:
75
+ Exclude:
76
+ - "test/**/*"
77
+ - "lib/object_inspector/formatters/templating_formatter.rb"
78
+
79
+ Metrics/LineLength:
80
+ Max: 80
81
+ Exclude:
82
+ - "test/**/*"
83
+ - "object_inspector.gemspec"
84
+
85
+ Naming/UncommunicativeMethodParamName:
86
+ AllowedNames:
87
+ - a
88
+ - b
89
+
90
+ Style/Alias:
91
+ EnforcedStyle: prefer_alias_method
92
+
93
+ Style/BlockDelimiters:
94
+ Enabled: false # Reconsider later.
95
+
96
+ Style/CollectionMethods:
97
+ Enabled: true
98
+ PreferredMethods:
99
+ collect: map
100
+ collect!: map!
101
+ find_all: select
102
+ detect: detect
103
+ inject: inject
104
+
105
+ Style/EmptyElse:
106
+ # It"s helpful to show intent by including a comment in an else block.
107
+ Enabled: false
108
+
109
+ Style/EmptyMethod:
110
+ EnforcedStyle: expanded
111
+
112
+ Style/ExpandPathArguments:
113
+ Exclude:
114
+ - "object_inspector.gemspec"
115
+
116
+ Style/FormatString:
117
+ Enabled: false # % notation with an Array just reads better sometimes.
118
+
119
+ Style/Lambda:
120
+ EnforcedStyle: literal
121
+
122
+ Style/NumericPredicate:
123
+ AutoCorrect: true
124
+
125
+ Style/RegexpLiteral:
126
+ EnforcedStyle: mixed
127
+
128
+ Style/RescueStandardError:
129
+ EnforcedStyle: implicit
130
+
131
+ Style/ReturnNil:
132
+ Enabled: true
133
+
134
+ Style/StringMethods:
135
+ Enabled: true
136
+
137
+ Style/SingleLineMethods:
138
+ Exclude:
139
+ - "test/**/*_test.rb"
140
+
141
+ Style/StringLiterals:
142
+ EnforcedStyle: double_quotes
143
+
144
+ Style/StringLiteralsInInterpolation:
145
+ EnforcedStyle: double_quotes
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ### 0.5.0 - 2018-06-11
2
+ - Add `inspect_issues` to ObjectInspector::TemplatingFormatter.
3
+ - Add ObjectInspector::Scope#join_name.
4
+ - Add configurable ObjectInspector.configuration.presented_object_separator.
5
+
6
+
1
7
  ### 0.4.0 - 2018-05-25
2
8
  - Feature: Add ObjectInspector::Configuration#default_scope setting -- can be used to override the default Scope for object inspection.
3
9
  - Implement ObjectInspector::Scope#== for comparing scopes with scopes and/or scopes with (Arrays of) Strings, Symbols, etc.
data/Gemfile.lock CHANGED
@@ -1,17 +1,31 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- object_inspector (0.4.0)
4
+ object_inspector (0.5.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  ansi (1.5.0)
10
+ ast (2.4.0)
11
+ axiom-types (0.1.1)
12
+ descendants_tracker (~> 0.0.4)
13
+ ice_nine (~> 0.11.0)
14
+ thread_safe (~> 0.3, >= 0.3.1)
10
15
  benchmark-ips (2.7.2)
11
16
  builder (3.2.3)
12
17
  byebug (10.0.2)
18
+ codeclimate-engine-rb (0.4.1)
19
+ virtus (~> 1.0)
13
20
  coderay (1.1.2)
14
- docile (1.3.0)
21
+ coercible (1.0.0)
22
+ descendants_tracker (~> 0.0.1)
23
+ descendants_tracker (0.0.4)
24
+ thread_safe (~> 0.3, >= 0.3.1)
25
+ docile (1.3.1)
26
+ equalizer (0.0.11)
27
+ ice_nine (0.11.2)
28
+ jaro_winkler (1.5.1)
15
29
  json (2.1.0)
16
30
  method_source (0.9.0)
17
31
  minitest (5.11.3)
@@ -20,20 +34,44 @@ GEM
20
34
  builder
21
35
  minitest (>= 5.0)
22
36
  ruby-progressbar
23
- object_identifier (0.1.0)
37
+ object_identifier (0.1.1)
38
+ parallel (1.12.1)
39
+ parser (2.5.1.0)
40
+ ast (~> 2.4.0)
41
+ powerpack (0.1.2)
24
42
  pry (0.11.3)
25
43
  coderay (~> 1.1.0)
26
44
  method_source (~> 0.9.0)
27
45
  pry-byebug (3.6.0)
28
46
  byebug (~> 10.0)
29
47
  pry (~> 0.10)
30
- rake (10.4.2)
48
+ rainbow (3.0.0)
49
+ rake (12.3.1)
50
+ reek (4.8.1)
51
+ codeclimate-engine-rb (~> 0.4.0)
52
+ parser (>= 2.5.0.0, < 2.6)
53
+ rainbow (>= 2.0, < 4.0)
54
+ rubocop (0.57.1)
55
+ jaro_winkler (~> 1.5.1)
56
+ parallel (~> 1.10)
57
+ parser (>= 2.5)
58
+ powerpack (~> 0.1)
59
+ rainbow (>= 2.2.2, < 4.0)
60
+ ruby-progressbar (~> 1.7)
61
+ unicode-display_width (~> 1.0, >= 1.0.1)
31
62
  ruby-progressbar (1.9.0)
32
63
  simplecov (0.16.1)
33
64
  docile (~> 1.1)
34
65
  json (>= 1.8, < 3)
35
66
  simplecov-html (~> 0.10.0)
36
67
  simplecov-html (0.10.2)
68
+ thread_safe (0.3.6)
69
+ unicode-display_width (1.4.0)
70
+ virtus (1.0.5)
71
+ axiom-types (~> 0.1)
72
+ coercible (~> 1.0)
73
+ descendants_tracker (~> 0.0, >= 0.0.3)
74
+ equalizer (~> 0.0, >= 0.0.9)
37
75
 
38
76
  PLATFORMS
39
77
  ruby
@@ -48,8 +86,10 @@ DEPENDENCIES
48
86
  object_inspector!
49
87
  pry (~> 0.11)
50
88
  pry-byebug (~> 3.6)
51
- rake (~> 10.0)
89
+ rake (~> 12.3)
90
+ reek (~> 4.8)
91
+ rubocop (~> 0.57)
52
92
  simplecov (~> 0.16)
53
93
 
54
94
  BUNDLED WITH
55
- 1.16.1
95
+ 1.16.2
data/README.md CHANGED
@@ -55,6 +55,8 @@ ObjectInspector.configure do |config|
55
55
  config.default_scope = ObjectInspector::Scope.new(:self)
56
56
  config.wild_card_scope = "all"
57
57
  config.out_of_scope_placeholder = "*"
58
+ config.presenter_inspect_flags = " ⇨ "
59
+ config.name_separator = " - "
58
60
  config.flags_separator = " / "
59
61
  config.info_separator = " | "
60
62
  end
@@ -104,15 +106,17 @@ class MyObject
104
106
  ObjectInspector::Inspector.inspect(self)
105
107
  end
106
108
 
107
- private
109
+ private
108
110
 
109
111
  def inspect_identification; "My Object" end
110
112
  def inspect_flags; "FLAG1 / FLAG2" end
113
+ def inspect_issues; "ISSUE1 | ISSUE2" end
111
114
  def inspect_info; "INFO" end
112
115
  def inspect_name; "NAME" end # Or: def display_name; "NAME" end
113
116
  end
114
117
 
115
- MyObject.new.inspect # => "<My Object(FLAG1 / FLAG2) INFO :: NAME>"
118
+ MyObject.new.inspect
119
+ # => "<My Object(FLAG1 / FLAG2) !!ISSUE1 | ISSUE2!! INFO :: NAME>"
116
120
  ```
117
121
 
118
122
 
@@ -137,12 +141,14 @@ class MyObject
137
141
  def inspect
138
142
  super(identification: "My Object",
139
143
  flags: "FLAG1",
144
+ issues: "ISSUE1 | ISSUE2",
140
145
  info: "INFO",
141
146
  name: "NAME")
142
147
  end
143
148
  end
144
149
 
145
- MyObject.new.inspect # => "<My Object(FLAG1) INFO :: NAME>"
150
+ MyObject.new.inspect
151
+ # => "<My Object(FLAG1) !!ISSUE1 | ISSUE2!! INFO :: NAME>"
146
152
  ```
147
153
 
148
154
  Or, define `inspect_identification`, `inspect_flags`, `inspect_info`, and/or `inspect_name` (or `display_name`) in Object.
@@ -151,15 +157,17 @@ Or, define `inspect_identification`, `inspect_flags`, `inspect_info`, and/or `in
151
157
  class MyObject
152
158
  include ObjectInspector::InspectorsHelper
153
159
 
154
- private
160
+ private
155
161
 
156
162
  def inspect_identification; "My Object" end
157
163
  def inspect_flags; "FLAG1 / FLAG2" end
164
+ def inspect_issues; "ISSUE1 | ISSUE2" end
158
165
  def inspect_info; "INFO" end
159
166
  def inspect_name; "NAME" end # Or: def display_name; "NAME" end
160
167
  end
161
168
 
162
- MyObject.new.inspect # => "<My Object(FLAG1 / FLAG2) INFO :: NAME>"
169
+ MyObject.new.inspect
170
+ # => "<My Object(FLAG1) !!ISSUE1 | ISSUE2!! INFO :: NAME>"
163
171
  ```
164
172
 
165
173
 
@@ -231,11 +239,13 @@ scope.complex? { "MATCH" } # => "*"
231
239
  ### Scope Joiners
232
240
 
233
241
  ObjectInspector::Scope also offers helper methods for uniformly joining inspect elements:
242
+ - `join_name` -- Joins name parts with ` - ` by default
234
243
  - `join_flags` -- Joins flags with ` / ` by default
235
244
  - `join_info` -- Joins info items with ` | ` by default
236
245
 
237
246
  ```ruby
238
247
  scope = ObjectInspector::Scope.new(:verbose)
248
+ scope.join_name([1, 2, 3]) # => "1 - 2 - 3"
239
249
  scope.join_flags([1, 2, 3]) # => "1 / 2 / 3"
240
250
  scope.join_info([1, 2, 3]) # => "1 | 2 | 3"
241
251
  ```
@@ -263,7 +273,12 @@ class MyObject
263
273
  OpenStruct.new(flags: "AO2_FLAG1")
264
274
  end
265
275
 
266
- private
276
+ # Or `def inspect_name`
277
+ def display_name(scope:)
278
+ name
279
+ end
280
+
281
+ private
267
282
 
268
283
  def inspect_identification
269
284
  identify(:a2)
@@ -283,6 +298,10 @@ private
283
298
  scope.join_flags(flags)
284
299
  end
285
300
 
301
+ def inspect_issues
302
+ "!!WARNING!!"
303
+ end
304
+
286
305
  def inspect_info(scope:)
287
306
  info = ["Default Info"]
288
307
  info << "Complex Info" if scope.complex?
@@ -290,40 +309,36 @@ private
290
309
 
291
310
  scope.join_info(info)
292
311
  end
293
-
294
- # Or `def inspect_name`
295
- def display_name
296
- name
297
- end
298
312
  end
299
313
 
300
314
  my_object = MyObject.new("Name")
301
315
 
302
316
  my_object.inspect(scope: :complex)
303
- # => "<MyObject[a2:2](DEFAULT_FLAG / *) Default Info | Complex Info | * :: Name>"
317
+ # => "<MyObject[a2:2](DEFAULT_FLAG / *) !!!!WARNING!!!! Default Info | Complex Info | * :: Name>"
304
318
 
305
319
  my_object.inspect(scope: :verbose)
306
- # => "<MyObject[a2:2](DEFAULT_FLAG / AO1_FLAG1 / AO2_FLAG1) Default Info | Verbose Info :: Name>"
320
+ # => "<MyObject[a2:2](DEFAULT_FLAG / AO1_FLAG1 / AO2_FLAG1) !!!!WARNING!!!! Default Info | Verbose Info :: Name>"
307
321
 
308
322
  my_object.inspect(scope: %i[self complex verbose])
309
- # => "<MyObject[a2:2](DEFAULT_FLAG / AO1_FLAG1 / AO2_FLAG1) Default Info | Complex Info | Verbose Info :: Name>"
323
+ # => "<MyObject[a2:2](DEFAULT_FLAG / AO1_FLAG1 / AO2_FLAG1) !!!!WARNING!!!! Default Info | Complex Info | Verbose Info :: Name>"
310
324
 
311
325
  my_object.inspect(scope: :all)
312
- # => "<MyObject[a2:2](DEFAULT_FLAG / AO1_FLAG1 / AO2_FLAG1) Default Info | Complex Info | Verbose Info :: Name>"
326
+ # => "<MyObject[a2:2](DEFAULT_FLAG / AO1_FLAG1 / AO2_FLAG1) !!!!WARNING!!!! Default Info | Complex Info | Verbose Info :: Name>"
313
327
 
314
328
  my_object.inspect
315
- # => "<MyObject[a2:2](DEFAULT_FLAG / *) Default Info | * :: Name>"
329
+ # => "<MyObject[a2:2](DEFAULT_FLAG / *) !!!!WARNING!!!! Default Info | * :: Name>"
316
330
 
317
331
  ObjectInspector.configuration.default_scope = :complex
318
332
  my_object.inspect
319
- # => "<MyObject[a2:2](DEFAULT_FLAG / *) Default Info | Complex Info | * :: Name>"
333
+ # => "<MyObject[a2:2](DEFAULT_FLAG / *) !!!!WARNING!!!! Default Info | Complex Info | * :: Name>"
320
334
 
321
335
  ObjectInspector.configuration.default_scope = %i[self complex verbose]
322
336
  my_object.inspect
337
+ # => "<MyObject[a2:2](DEFAULT_FLAG / AO1_FLAG1 / AO2_FLAG1) !!!!WARNING!!!! Default Info | Complex Info | Verbose Info :: Name>"
323
338
 
324
339
  ObjectInspector.configuration.default_scope = :all
325
340
  my_object.inspect
326
- # => "<MyObject[a2:2](DEFAULT_FLAG / AO1_FLAG1 / AO2_FLAG1) Default Info | Complex Info | Verbose Info :: Name>"
341
+ # => "<MyObject[a2:2](DEFAULT_FLAG / AO1_FLAG1 / AO2_FLAG1) !!!!WARNING!!!! Default Info | Complex Info | Verbose Info :: Name>"
327
342
  ```
328
343
 
329
344
 
@@ -339,7 +354,7 @@ class MyWrapperObject
339
354
  @to_model ||= MyWrappedObject.new
340
355
  end
341
356
 
342
- private
357
+ private
343
358
 
344
359
  def inspect_flags; "WRAPPER_FLAG1" end
345
360
  end
@@ -347,7 +362,7 @@ end
347
362
  class MyWrappedObject
348
363
  include ObjectInspector::InspectorsHelper
349
364
 
350
- private
365
+ private
351
366
 
352
367
  def inspect_flags; "FLAG1 / FLAG2" end
353
368
  def inspect_info; "INFO" end
@@ -428,19 +443,20 @@ class MyObject
428
443
  2
429
444
  end
430
445
 
431
- private
446
+ private
432
447
 
433
448
  def inspect_identification
434
449
  identify(:my_method1, :my_method2)
435
450
  end
436
451
 
437
452
  def inspect_flags; "FLAG1 / FLAG2" end
453
+ def inspect_issues; "ISSUE1 | ISSUE2" end
438
454
  def inspect_info; "INFO" end
439
455
  def inspect_name; "NAME" end
440
456
  end
441
457
 
442
458
  MyObject.new.inspect
443
- # => "<MyObject[my_method1:1, my_method2:2](FLAG1 / FLAG2) INFO :: NAME>"
459
+ # => "<MyObject[my_method1:1, my_method2:2](FLAG1 / FLAG2) !!ISSUE1 | ISSUE2!! INFO :: NAME>"
444
460
  ```
445
461
 
446
462
 
data/Rakefile CHANGED
@@ -7,4 +7,4 @@ Rake::TestTask.new(:test) do |t|
7
7
  t.test_files = FileList["test/**/*_test.rb"]
8
8
  end
9
9
 
10
- task :default => :test
10
+ task default: :test
@@ -2,15 +2,14 @@ module ObjectInspector
2
2
  # ObjectInspector::Conversions defines conversion functions used by
3
3
  # ObjectInspector.
4
4
  module Conversions
5
-
6
- module_function
5
+ module_function
7
6
 
8
7
  # Convert the passed in value to an {ObjectInspector::Scope} object.
9
8
  # Just returns the pass in value if it already is an
10
9
  # {ObjectInspector::Scope} object.
11
10
  #
12
11
  # @return [ObjectInspector::Scope]
13
- def Scope(value)
12
+ def Scope(value) # rubocop:disable Naming/MethodName
14
13
  case value
15
14
  when ObjectInspector::Scope
16
15
  value
@@ -6,8 +6,6 @@ module ObjectInspector
6
6
  #
7
7
  # @attr inspector [ObjectInspector::Inspector]
8
8
  class BaseFormatter
9
- RIGHT_ARROW_ICON = [0x21E8].pack("U").freeze
10
-
11
9
  attr_reader :inspector
12
10
 
13
11
  def initialize(inspector)
@@ -45,6 +43,14 @@ module ObjectInspector
45
43
  @flags ||= inspector.flags
46
44
  end
47
45
 
46
+ # Delegates to {Inspector#issues}.
47
+ #
48
+ # @return [String] if given
49
+ # @return [NilClass] if not given
50
+ def issues
51
+ @issues ||= inspector.issues
52
+ end
53
+
48
54
  # Delegates to {Inspector#info}.
49
55
  #
50
56
  # @return [String] if given
@@ -16,10 +16,12 @@ module ObjectInspector
16
16
  end
17
17
  end
18
18
 
19
- private
19
+ private
20
20
 
21
21
  def build_wrapped_object_string
22
- "#{build_string} #{RIGHT_ARROW_ICON} #{wrapped_object_inspection_result}"
22
+ "#{build_string} "\
23
+ "#{ObjectInspector.configuration.presented_object_separator} "\
24
+ "#{wrapped_object_inspection_result}"
23
25
  end
24
26
 
25
27
  def build_string
@@ -36,7 +38,7 @@ module ObjectInspector
36
38
  build_identification_string,
37
39
  build_flags_string,
38
40
  build_info_string,
39
- build_name_string,
41
+ build_name_string
40
42
  ].compact
41
43
  end
42
44
 
@@ -13,6 +13,10 @@ module ObjectInspector
13
13
  @name_template ||= "<%s :: %s>".freeze
14
14
  end
15
15
 
16
+ def self.issues_and_name_template
17
+ @issues_and_name_template ||= "<%s !!%s!! :: %s>".freeze
18
+ end
19
+
16
20
  def self.flags_and_name_template
17
21
  @flags_and_name_template ||= "<%s(%s) :: %s>".freeze
18
22
  end
@@ -21,18 +25,43 @@ module ObjectInspector
21
25
  @info_and_name_template ||= "<%s %s :: %s>".freeze
22
26
  end
23
27
 
28
+ def self.issues_and_info_and_name_template
29
+ @issues_and_info_and_name_template ||= "<%s !!%s!! %s :: %s>".freeze
30
+ end
31
+
24
32
  def self.flags_and_info_template
25
33
  @flags_and_info_template ||= "<%s(%s) %s>".freeze
26
34
  end
27
35
 
36
+ def self.issues_and_info_template
37
+ @issues_and_info_template ||= "<%s !!%s!! %s>".freeze
38
+ end
39
+
40
+ def self.flags_and_issues_and_info_template
41
+ @flags_and_issues_and_info_template ||= "<%s(%s) !!%s!! %s>".freeze
42
+ end
43
+
44
+ def self.flags_and_issues_and_name_template
45
+ @flags_and_issues_and_name_template ||= "<%s(%s) !!%s!! :: %s>".freeze
46
+ end
47
+
28
48
  def self.flags_and_info_and_name_template
29
49
  @flags_and_info_and_name_template ||= "<%s(%s) %s :: %s>".freeze
30
50
  end
31
51
 
52
+ def self.flags_and_issues_and_info_and_name_template
53
+ @flags_and_issues_and_info_and_name_template ||=
54
+ "<%s(%s) !!%s!! %s :: %s>".freeze
55
+ end
56
+
32
57
  def self.flags_template
33
58
  @flags_template ||= "<%s(%s)>".freeze
34
59
  end
35
60
 
61
+ def self.issues_template
62
+ @issues_template ||= "<%s !!%s!!>".freeze
63
+ end
64
+
36
65
  def self.info_template
37
66
  @info_template ||= "<%s %s>".freeze
38
67
  end
@@ -48,96 +77,167 @@ module ObjectInspector
48
77
  end
49
78
  end
50
79
 
51
- private
80
+ private
52
81
 
53
82
  def build_wrapped_object_string
54
- "#{build_string} #{RIGHT_ARROW_ICON} #{wrapped_object_inspection_result}"
83
+ "#{build_string} "\
84
+ "#{ObjectInspector.configuration.presented_object_separator} "\
85
+ "#{wrapped_object_inspection_result}"
55
86
  end
56
87
 
88
+ # rubocop:disable Metrics/MethodLength
57
89
  def build_string
58
90
  if flags
59
- if info
60
- if name
61
- build_flags_and_info_and_name_string
62
- else
63
- build_flags_and_info_string
64
- end
65
- elsif name
66
- build_flags_and_name_string
67
- else
68
- build_flags_string
69
- end
91
+ build_string_with_flags_and_maybe_issues_and_info_and_name
92
+ elsif issues
93
+ build_string_with_issues_and_maybe_info_and_name
70
94
  elsif info
71
- if name
72
- build_info_and_name_string
73
- else
74
- build_info_string
75
- end
95
+ build_string_with_info_and_maybe_name
76
96
  elsif name
77
- build_name_string
97
+ build_string_with_name
78
98
  else
79
99
  build_base_string
80
100
  end
81
101
  end
102
+ # rubocop:enable Metrics/MethodLength
103
+
104
+ def build_string_with_flags_and_maybe_issues_and_info_and_name
105
+ if issues
106
+ build_string_with_flags_and_issues_and_maybe_info_and_name
107
+ elsif info
108
+ build_string_with_flags_and_info_and_maybe_name
109
+ elsif name
110
+ build_string_with_flags_and_name
111
+ else
112
+ build_string_with_flags
113
+ end
114
+ end
115
+
116
+ def build_string_with_flags_and_issues_and_maybe_info_and_name
117
+ if info
118
+ build_string_with_flags_and_issues_and_info_and_maybe_name
119
+ elsif name
120
+ build_string_with_flags_and_issues_and_name
121
+ else
122
+ build_string_with_flags_and_issues
123
+ end
124
+ end
125
+
126
+ def build_string_with_flags_and_issues_and_info_and_maybe_name
127
+ if name
128
+ build_string_with_flags_and_issues_and_info_and_name
129
+ else
130
+ build_string_with_flags_and_issues_and_info
131
+ end
132
+ end
133
+
134
+ def build_string_with_issues_and_maybe_info_and_name
135
+ if info
136
+ build_string_with_issues_and_info_and_maybe_name
137
+ elsif name
138
+ build_string_with_issues_and_name
139
+ else
140
+ build_string_with_issues
141
+ end
142
+ end
143
+
144
+ def build_string_with_issues_and_info_and_maybe_name
145
+ if name
146
+ build_string_with_issues_and_info_and_name
147
+ else
148
+ build_string_with_issues_and_info
149
+ end
150
+ end
151
+
152
+ def build_string_with_flags_and_maybe_info_and_name
153
+ if info
154
+ build_string_with_flags_and_info_and_maybe_name
155
+ elsif name
156
+ build_string_with_flags_and_name
157
+ else
158
+ build_string_with_flags
159
+ end
160
+ end
161
+
162
+ def build_string_with_flags_and_info_and_maybe_name
163
+ if name
164
+ build_string_with_flags_and_info_and_name
165
+ else
166
+ build_string_with_flags_and_info
167
+ end
168
+ end
169
+
170
+ def build_string_with_info_and_maybe_name
171
+ if name
172
+ build_string_with_info_and_name
173
+ else
174
+ build_string_with_info
175
+ end
176
+ end
177
+
178
+ def build_string_with_flags_and_issues_and_info_and_name
179
+ self.class.flags_and_issues_and_info_and_name_template %
180
+ [identification, flags, issues, info, name]
181
+ end
182
+
183
+ def build_string_with_flags_and_issues_and_name
184
+ self.class.flags_and_issues_and_name_template %
185
+ [identification, flags, issues, name]
186
+ end
187
+
188
+ def build_string_with_flags_and_info_and_name
189
+ self.class.flags_and_info_and_name_template %
190
+ [identification, flags, info, name]
191
+ end
192
+
193
+ def build_string_with_issues_and_info_and_name
194
+ self.class.issues_and_info_and_name_template %
195
+ [identification, issues, info, name]
196
+ end
197
+
198
+ def build_string_with_flags_and_issues_and_info
199
+ self.class.flags_and_issues_and_info_template %
200
+ [identification, flags, issues, info]
201
+ end
202
+
203
+ def build_string_with_flags_and_info
204
+ self.class.flags_and_info_template % [identification, flags, info]
205
+ end
206
+
207
+ def build_string_with_flags_and_name
208
+ self.class.flags_and_name_template % [identification, flags, name]
209
+ end
82
210
 
83
- def build_flags_and_info_and_name_string
84
- self.class.flags_and_info_and_name_template % [
85
- identification,
86
- flags,
87
- info,
88
- name
89
- ]
211
+ def build_string_with_issues_and_info
212
+ self.class.issues_and_info_template % [identification, issues, info]
90
213
  end
91
214
 
92
- def build_flags_and_info_string
93
- self.class.flags_and_info_template % [
94
- identification,
95
- flags,
96
- info
97
- ]
215
+ def build_string_with_issues_and_name
216
+ self.class.issues_and_name_template % [identification, issues, name]
98
217
  end
99
218
 
100
- def build_flags_and_name_string
101
- self.class.flags_and_name_template % [
102
- identification,
103
- flags,
104
- name
105
- ]
219
+ def build_string_with_info_and_name
220
+ self.class.info_and_name_template % [identification, info, name]
106
221
  end
107
222
 
108
- def build_info_and_name_string
109
- self.class.info_and_name_template % [
110
- identification,
111
- info,
112
- name
113
- ]
223
+ def build_string_with_flags
224
+ self.class.flags_template % [identification, flags]
114
225
  end
115
226
 
116
- def build_name_string
117
- self.class.name_template % [
118
- identification,
119
- name
120
- ]
227
+ def build_string_with_issues
228
+ self.class.issues_template % [identification, issues]
121
229
  end
122
230
 
123
- def build_flags_string
124
- self.class.flags_template % [
125
- identification,
126
- flags
127
- ]
231
+ def build_string_with_info
232
+ self.class.info_template % [identification, info]
128
233
  end
129
234
 
130
- def build_info_string
131
- self.class.info_template % [
132
- identification,
133
- info
134
- ]
235
+ def build_string_with_name
236
+ self.class.name_template % [identification, name]
135
237
  end
136
238
 
137
239
  def build_base_string
138
- self.class.base_template % [
139
- identification
140
- ]
240
+ self.class.base_template % [identification]
141
241
  end
142
242
  end
143
243
  end
@@ -49,12 +49,12 @@ module ObjectInspector
49
49
  # @return [String] if {#object_is_a_wrapper}
50
50
  # @return [NilClass] if not {#object_is_a_wrapper}
51
51
  def wrapped_object_inspection_result
52
- if object_is_a_wrapper?
53
- self.class.inspect(
54
- extract_wrapped_object,
55
- scope: scope,
56
- formatter: formatter_klass)
57
- end
52
+ return unless object_is_a_wrapper?
53
+
54
+ self.class.inspect(
55
+ extract_wrapped_object,
56
+ scope: scope,
57
+ formatter: formatter_klass)
58
58
  end
59
59
 
60
60
  # Core object identification details, such as the {#object} class name and
@@ -73,6 +73,14 @@ module ObjectInspector
73
73
  value(key: :flags)
74
74
  end
75
75
 
76
+ # Issues/Warnings applicable to {#object}.
77
+ #
78
+ # @return [String] if given
79
+ # @return [NilClass] if not given
80
+ def issues
81
+ value(key: :issues)
82
+ end
83
+
76
84
  # Informational details applicable to {#object}.
77
85
  #
78
86
  # @return [String] if given
@@ -91,7 +99,7 @@ module ObjectInspector
91
99
  kargs: object_method_keyword_arguments)
92
100
  end
93
101
 
94
- private
102
+ private
95
103
 
96
104
  def formatter
97
105
  formatter_klass.new(self)
@@ -157,7 +165,7 @@ module ObjectInspector
157
165
 
158
166
  def object_method_keyword_arguments
159
167
  {
160
- scope: scope,
168
+ scope: scope
161
169
  }
162
170
  end
163
171
 
@@ -29,7 +29,7 @@ module ObjectInspector
29
29
  end
30
30
  end
31
31
 
32
- private
32
+ private
33
33
 
34
34
  def call_with_kargs
35
35
  object.send(method_name, **kargs)
@@ -19,6 +19,15 @@ module ObjectInspector
19
19
  @names = Array(names).map { |name| String(name) }
20
20
  end
21
21
 
22
+ # Join the passed-in name parts with the passed in separator.
23
+ #
24
+ # @param items [Array<#to_s>]
25
+ # @param separator [#to_s] (ObjectInspector.configuration.flags_separator)
26
+ def join_name(parts,
27
+ separator: ObjectInspector.configuration.name_separator)
28
+ Array(parts).join(separator)
29
+ end
30
+
22
31
  # Join the passed-in flags with the passed in separator.
23
32
  #
24
33
  # @param items [Array<#to_s>]
@@ -28,12 +37,21 @@ module ObjectInspector
28
37
  Array(flags).join(separator)
29
38
  end
30
39
 
40
+ # Join the passed-in issues with the passed in separator.
41
+ #
42
+ # @param items [Array<#to_s>]
43
+ # @param separator [#to_s] (ObjectInspector.configuration.issues_separator)
44
+ def join_issues(issues,
45
+ separator: ObjectInspector.configuration.issues_separator)
46
+ Array(issues).join(separator)
47
+ end
48
+
31
49
  # Join the passed-in items with the passed in separator.
32
50
  #
33
51
  # @param items [Array<#to_s>]
34
52
  # @param separator [#to_s] (ObjectInspector.configuration.info_separator)
35
53
  def join_info(items,
36
- separator: ObjectInspector.configuration.info_separator)
54
+ separator: ObjectInspector.configuration.info_separator)
37
55
  Array(items).join(separator)
38
56
  end
39
57
 
@@ -56,7 +74,7 @@ module ObjectInspector
56
74
  names
57
75
  end
58
76
 
59
- private
77
+ private
60
78
 
61
79
  def method_missing(method_name, *args, &block)
62
80
  if method_name[-1] == "?"
@@ -77,9 +95,9 @@ module ObjectInspector
77
95
  end
78
96
  end
79
97
 
80
- def evaluate_block_if(condition, &block)
98
+ def evaluate_block_if(condition)
81
99
  if condition
82
- block.call(self)
100
+ yield(self)
83
101
  else
84
102
  ObjectInspector.configuration.out_of_scope_placeholder
85
103
  end
@@ -91,7 +109,7 @@ module ObjectInspector
91
109
  end
92
110
 
93
111
  def wild_card_scope?
94
- @is_wild_card_scope ||=
112
+ @wild_card_scope ||=
95
113
  any_names_match?(ObjectInspector.configuration.wild_card_scope)
96
114
  end
97
115
 
@@ -1,3 +1,3 @@
1
1
  module ObjectInspector
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0".freeze
3
3
  end
@@ -1,10 +1,6 @@
1
1
  # ObjectInspector is the base namespace for all modules/classes related to the
2
2
  # object_inspector gem.
3
3
  module ObjectInspector
4
- class << self
5
- attr_writer :configuration
6
- end
7
-
8
4
  def self.configuration
9
5
  @configuration ||= Configuration.new
10
6
  end
@@ -17,13 +13,19 @@ module ObjectInspector
17
13
  @configuration = Configuration.new
18
14
  end
19
15
 
16
+ # ObjectInspector::Configuration stores the default configuration options for
17
+ # the ObjectInspector gem. Modification of attributes is possible at any time,
18
+ # and values will persist for the duration of the running process.
20
19
  class Configuration
21
20
  attr_reader :formatter_class,
22
21
  :inspect_method_prefix,
23
22
  :default_scope,
24
23
  :wild_card_scope,
25
24
  :out_of_scope_placeholder,
25
+ :presented_object_separator,
26
+ :name_separator,
26
27
  :flags_separator,
28
+ :issues_separator,
27
29
  :info_separator
28
30
 
29
31
  def initialize
@@ -32,7 +34,10 @@ module ObjectInspector
32
34
  @default_scope = Scope.new(:self)
33
35
  @wild_card_scope = "all".freeze
34
36
  @out_of_scope_placeholder = "*".freeze
37
+ @presented_object_separator = " #{[0x21E8].pack("U")} ".freeze
38
+ @name_separator = " - ".freeze
35
39
  @flags_separator = " / ".freeze
40
+ @issues_separator = " | ".freeze
36
41
  @info_separator = " | ".freeze
37
42
  end
38
43
 
@@ -60,10 +65,22 @@ module ObjectInspector
60
65
  @out_of_scope_placeholder = value.to_s.freeze
61
66
  end
62
67
 
68
+ def presented_object_separator=(value)
69
+ @presented_object_separator = value.to_s.freeze
70
+ end
71
+
72
+ def name_separator=(value)
73
+ @name_separator = value.to_s.freeze
74
+ end
75
+
63
76
  def flags_separator=(value)
64
77
  @flags_separator = value.to_s.freeze
65
78
  end
66
79
 
80
+ def issues_separator=(value)
81
+ @issues_separator = value.to_s.freeze
82
+ end
83
+
67
84
  def info_separator=(value)
68
85
  @info_separator = value.to_s.freeze
69
86
  end
@@ -1,4 +1,3 @@
1
-
2
1
  lib = File.expand_path("../lib", __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require "object_inspector/version"
@@ -9,8 +8,8 @@ Gem::Specification.new do |spec|
9
8
  spec.authors = ["Paul Dobbins"]
10
9
  spec.email = ["paul.dobbins@icloud.com"]
11
10
 
12
- spec.summary = %q{ObjectInspector builds uniformly formatted inspect output with customizable amounts of detail.}
13
- spec.description = %q{ObjectInspector takes Object#inspect to the next level. Specify any combination of identification attributes, flags, info, and/or a name along with an optional, self-definable scope option to represents objects. Great for the console, logging, etc.}
11
+ spec.summary = "ObjectInspector builds uniformly formatted inspect output with customizable amounts of detail."
12
+ spec.description = "ObjectInspector takes Object#inspect to the next level. Specify any combination of identification attributes, flags, info, and/or a name along with an optional, self-definable scope option to represents objects. Great for the console, logging, etc."
14
13
  spec.homepage = "https://github.com/pdobb/object_inspector"
15
14
  spec.license = "MIT"
16
15
 
@@ -23,21 +22,24 @@ Gem::Specification.new do |spec|
23
22
  # "public gem pushes."
24
23
  # end
25
24
 
26
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
- f.match(%r{^(test|spec|features)/})
28
- end
25
+ spec.files =
26
+ `git ls-files -z`.split("\x0").reject do |f|
27
+ f.match(%r{^(test|spec|features)/})
28
+ end
29
29
  spec.bindir = "exe"
30
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ["lib"]
32
32
 
33
+ spec.add_development_dependency "benchmark-ips", "~> 2.7"
33
34
  spec.add_development_dependency "bundler", "~> 1.16"
34
- spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "byebug", "~> 10.0"
35
36
  spec.add_development_dependency "minitest", "~> 5.0"
36
37
  spec.add_development_dependency "minitest-reporters", "~> 1.2"
37
- spec.add_development_dependency "simplecov", "~> 0.16"
38
- spec.add_development_dependency "byebug", "~> 10.0"
38
+ spec.add_development_dependency "object_identifier", "~> 0.1"
39
39
  spec.add_development_dependency "pry", "~> 0.11"
40
40
  spec.add_development_dependency "pry-byebug", "~> 3.6"
41
- spec.add_development_dependency "benchmark-ips", "~> 2.7"
42
- spec.add_development_dependency "object_identifier", "~> 0.1"
41
+ spec.add_development_dependency "rake", "~> 12.3"
42
+ spec.add_development_dependency "reek", "~> 4.8"
43
+ spec.add_development_dependency "rubocop", "~> 0.57"
44
+ spec.add_development_dependency "simplecov", "~> 0.16"
43
45
  end
@@ -9,7 +9,7 @@ custom_formatter_klasses ||= []
9
9
  formatter_klasses = [
10
10
  ObjectInspector::TemplatingFormatter,
11
11
  ObjectInspector::CombiningFormatter,
12
- *Array(custom_formatter_klasses),
12
+ *Array(custom_formatter_klasses)
13
13
  ]
14
14
 
15
15
  INSPECTOR_WITH_FLAGS_AND_INFO_AND_NAME ||=
@@ -49,7 +49,6 @@ INSPECTOR_WITH_BASE ||=
49
49
  OpenStruct.new(
50
50
  identification: "IDENTIFICATION")
51
51
 
52
-
53
52
  puts "== Averaged ============================================================="
54
53
  Benchmark.ips { |x|
55
54
  formatter_klasses.each do |formatter_klass|
@@ -66,10 +65,9 @@ Benchmark.ips { |x|
66
65
  end
67
66
 
68
67
  x.compare!
69
- };
68
+ }
70
69
  puts "== Done"
71
70
 
72
-
73
71
  puts "== Individualized ======================================================="
74
72
  Benchmark.ips { |x|
75
73
  formatter_klasses.each do |formatter_klass|
@@ -114,5 +112,5 @@ Benchmark.ips { |x|
114
112
  end
115
113
 
116
114
  x.compare!
117
- };
115
+ }
118
116
  puts "== Done"
@@ -43,7 +43,6 @@ OBJECT_WITH_BASE ||=
43
43
  OpenStruct.new(
44
44
  identification: "IDENTIFICATION")
45
45
 
46
-
47
46
  puts "== Averaged ============================================================="
48
47
  Benchmark.ips { |x|
49
48
  x.report(inspector_klass) {
@@ -69,5 +68,5 @@ Benchmark.ips { |x|
69
68
  }
70
69
 
71
70
  x.compare!
72
- };
71
+ }
73
72
  puts "== Done"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: object_inspector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Dobbins
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-25 00:00:00.000000000 Z
11
+ date: 2018-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: benchmark-ips
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.7'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -25,7 +39,7 @@ dependencies:
25
39
  - !ruby/object:Gem::Version
26
40
  version: '1.16'
27
41
  - !ruby/object:Gem::Dependency
28
- name: rake
42
+ name: byebug
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
@@ -67,89 +81,103 @@ dependencies:
67
81
  - !ruby/object:Gem::Version
68
82
  version: '1.2'
69
83
  - !ruby/object:Gem::Dependency
70
- name: simplecov
84
+ name: object_identifier
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '0.16'
89
+ version: '0.1'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '0.16'
96
+ version: '0.1'
83
97
  - !ruby/object:Gem::Dependency
84
- name: byebug
98
+ name: pry
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '10.0'
103
+ version: '0.11'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '10.0'
110
+ version: '0.11'
97
111
  - !ruby/object:Gem::Dependency
98
- name: pry
112
+ name: pry-byebug
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '0.11'
117
+ version: '3.6'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: '0.11'
124
+ version: '3.6'
111
125
  - !ruby/object:Gem::Dependency
112
- name: pry-byebug
126
+ name: rake
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '3.6'
131
+ version: '12.3'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '3.6'
138
+ version: '12.3'
125
139
  - !ruby/object:Gem::Dependency
126
- name: benchmark-ips
140
+ name: reek
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: '2.7'
145
+ version: '4.8'
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: '2.7'
152
+ version: '4.8'
139
153
  - !ruby/object:Gem::Dependency
140
- name: object_identifier
154
+ name: rubocop
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: '0.1'
159
+ version: '0.57'
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: '0.1'
166
+ version: '0.57'
167
+ - !ruby/object:Gem::Dependency
168
+ name: simplecov
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '0.16'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '0.16'
153
181
  description: ObjectInspector takes Object#inspect to the next level. Specify any combination
154
182
  of identification attributes, flags, info, and/or a name along with an optional,
155
183
  self-definable scope option to represents objects. Great for the console, logging,
@@ -161,6 +189,8 @@ extensions: []
161
189
  extra_rdoc_files: []
162
190
  files:
163
191
  - ".gitignore"
192
+ - ".rubocop"
193
+ - ".rubocop.yml"
164
194
  - ".travis.yml"
165
195
  - CHANGELOG.md
166
196
  - Gemfile
@@ -203,7 +233,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
233
  version: '0'
204
234
  requirements: []
205
235
  rubyforge_project:
206
- rubygems_version: 2.7.6
236
+ rubygems_version: 2.7.7
207
237
  signing_key:
208
238
  specification_version: 4
209
239
  summary: ObjectInspector builds uniformly formatted inspect output with customizable