object_inspector 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3f1b53680d632fb88f63e951032b3be151ac352501620742cc091aaaf15a244
4
- data.tar.gz: 4a059bdf8a0f6033d52bd05c1bb24ad83d33f7dde4d0b8ccd7ae010630566506
3
+ metadata.gz: d20f26835756f0ebb2f4ecb6371662cc35a4cb9d62e72682a5b76d8e96ca8290
4
+ data.tar.gz: c41e95352adedc432259b57f8ed0be5e16a9a0b7860ba23e5bbd8f8fa1cecf9f
5
5
  SHA512:
6
- metadata.gz: 31eb8c71b23c092697db6b8f35b787581a472c13f6aded499602731546b2121fd07952650319e836af6368cf745f29f156ac2a31722a09a6d83cadb4c238e2d4
7
- data.tar.gz: 6e605745d774bcca73bf93ccd6b818044bb10365832c2f3b2f182bb1884b4de145f0328d81d82ae78fdf65a4609053f51b242ba2790e6071ca083111f5becc7b
6
+ metadata.gz: 141e7e013e692ff025d7f6c2bc11f395ed6ff8499c30e5d161d7e5fc0219f2981b688ea1db6c01a80e87363553bf07a5b8319d04db744f688a3839bcf9ff1982
7
+ data.tar.gz: 4a811cba205e011f8d8ce390c89da2aa93dd01e21692ce28516739b35c7907c7f7e416f606c39fdfb92edba237f76ac439175dd90c1fefc498b7e8ad25bbcfae
data/README.md CHANGED
@@ -1,10 +1,9 @@
1
- # ObjectInspector
1
+ # Object Inspector
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/object_inspector.svg)](https://badge.fury.io/rb/object_inspector)
4
- [![Test Coverage](https://api.codeclimate.com/v1/badges/34e821263d9e0c33d536/test_coverage)](https://codeclimate.com/github/pdobb/object_inspector/test_coverage)
5
4
  [![Maintainability](https://api.codeclimate.com/v1/badges/34e821263d9e0c33d536/maintainability)](https://codeclimate.com/github/pdobb/object_inspector/maintainability)
6
5
 
7
- ObjectInspector takes Object#inspect to the next level. Specify any combination of identification attributes, flags, issues, info, and/or a name along with an optional, self-definable scope option to represent objects. Great for the console, logging, etc.
6
+ Object Inspector takes Object#inspect to the next level. Specify any combination of identification attributes, flags, issues, info, and/or a name along with an optional, self-definable scope option to represent objects. Great for the console, logging, etc.
8
7
 
9
8
  Why? Because object inspection code should be uniform, easy to build, and its output should be easy to read!
10
9
 
@@ -31,20 +30,17 @@ Or install it yourself:
31
30
  ## Compatibility
32
31
 
33
32
  Tested MRI Ruby Versions:
34
- * 2.3
35
- * 2.4
36
- * 2.5
37
- * 2.6
38
33
  * 2.7
34
+ * 3.0
39
35
  * 3.1
40
36
  * 3.2
41
37
 
42
- ObjectInspector has no other dependencies.
38
+ Object Inspector has no other dependencies.
43
39
 
44
40
 
45
41
  ## Configuration
46
42
 
47
- Global/default values for ObjectInspector can be configured via the ObjectInspector::Configuration object.
43
+ Global/default values for Object Inspector can be configured via the ObjectInspector::Configuration object.
48
44
 
49
45
  _Note: In a Rails app, the following would go in e.g. `config/initializers/object_inspector.rb`_
50
46
 
@@ -393,13 +389,13 @@ class MyDelegatingWrapperObject
393
389
  @my_object = my_object
394
390
  end
395
391
 
396
- def inspect(**kargs)
392
+ def inspect(**kwargs)
397
393
  super(identification: self.class.name,
398
394
  name: nil,
399
395
  flags: nil,
400
396
  info: nil,
401
397
  issues: nil,
402
- **kargs)
398
+ **kwargs)
403
399
  end
404
400
 
405
401
  def to_model
@@ -513,7 +509,7 @@ See examples:
513
509
 
514
510
  ## Supporting Gems
515
511
 
516
- ObjectInspector works great with the [ObjectIdentifier](https://github.com/pdobb/object_identifier) gem.
512
+ Object Inspector works great with the [Object Identifier](https://github.com/pdobb/object_identifier) gem.
517
513
 
518
514
  ```ruby
519
515
  class MyObject
@@ -546,14 +542,14 @@ MyObject.new.inspect
546
542
 
547
543
  ## Performance
548
544
 
549
- ### Benchmarking ObjectInspector
545
+ ### Benchmarking Object Inspector
550
546
 
551
547
  ObjectInspetor is ~4x slower than Ruby's default inspect.
552
548
 
553
- Performance of ObjectInspect can be tested by playing the [ObjectInspector Benchmarking Scripts] in the pry console for this gem.
549
+ Performance of Object Inspector can be tested by playing the [Object Inspector Benchmarking Script](https://github.com/pdobb/object_inspector/blob/master/script/benchmarking/object_inspector.rb) in the pry console for this gem.
554
550
 
555
551
  ```ruby
556
- play scripts/benchmarking/object_inspector.rb
552
+ play script/benchmarking/object_inspector.rb
557
553
  # Comparison:
558
554
  # Ruby: 30382.2 i/s
559
555
  # ObjectInspector::Inspector: 7712.2 i/s - 3.94x slower
@@ -564,10 +560,10 @@ play scripts/benchmarking/object_inspector.rb
564
560
 
565
561
  [ObjectInspector::TemplatingFormatter] -- which is the default Formatter -- outperforms [ObjectInspector::CombiningFormatter] by about 30% on average.
566
562
 
567
- Performance of Formatters can be tested by playing the [Formatters Benchmarking Scripts] in the pry console for this gem.
563
+ Performance of Formatters can be tested by playing the [Formatters Benchmarking Scripts](https://github.com/pdobb/object_inspector/blob/master/script/benchmarking/formatters.rb) in the pry console for this gem.
568
564
 
569
565
  ```ruby
570
- play scripts/benchmarking/formatters.rb
566
+ play script/benchmarking/formatters.rb
571
567
  # == Averaged =============================================================
572
568
  # ...
573
569
  #
@@ -586,7 +582,7 @@ Custom Formatters may be similarly gauged for comparison by adding them to the `
586
582
  ```ruby
587
583
  custom_formatter_klasses = [MyCustomFormatter]
588
584
 
589
- play scripts/benchmarking/formatters.rb
585
+ play script/benchmarking/formatters.rb
590
586
  # == Averaged =============================================================
591
587
  # ...
592
588
  #
@@ -601,12 +597,20 @@ play scripts/benchmarking/formatters.rb
601
597
 
602
598
  ## Development
603
599
 
604
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
600
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. Or, run `rake` to run the tests plus linters as well as `yard` (to confirm proper YARD documentation practices). You can also run `bin/console` for an interactive prompt that will allow you to experiment.
605
601
 
606
602
  To install this gem onto your local machine, run `bundle exec rake install`.
607
603
 
608
- To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
604
+ To release a new version, update the version number in `version.rb`, bump the latest ruby target versions etc. with `rake bump`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
609
605
 
606
+ ### Documentation
607
+
608
+ [YARD documentation](https://yardoc.org/index.html) can be generated and viewed live:
609
+ 1. Install YARD: `gem install yard`
610
+ 2. Run the YARD server: `yard server --reload`
611
+ 3. Open the live documentation site: `open http://localhost:8808`
612
+
613
+ While the YARD server is running, documentation in the live site will be auto-updated on source code save (and site reload).
610
614
 
611
615
  ## Contributing
612
616
 
@@ -620,5 +624,5 @@ The gem is available as open source under the terms of the [MIT License](https:/
620
624
 
621
625
  [ObjectInspector::TemplatingFormatter]: https://github.com/pdobb/object_inspector/blob/master/lib/object_inspector/formatters/templating_formatter.rb
622
626
  [ObjectInspector::CombiningFormatter]: https://github.com/pdobb/object_inspector/blob/master/lib/object_inspector/formatters/combining_formatter.rb
623
- [ObjectInspector Benchmarking Scripts]: https://github.com/pdobb/object_inspector/blob/master/scripts/benchmarking/object_inspector.rb
624
- [Formatters Benchmarking Scripts]: https://github.com/pdobb/object_inspector/blob/master/scripts/benchmarking/formatters.rb
627
+ [Object Inspector Benchmarking Scripts]: https://github.com/pdobb/object_inspector/blob/master/script/benchmarking/object_inspector.rb
628
+ [Formatters Benchmarking Scripts]: https://github.com/pdobb/object_inspector/blob/master/script/benchmarking/formatters.rb
@@ -1,23 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module ObjectInspector
4
- # ObjectInspector::Conversions defines conversion functions used by
5
- # ObjectInspector.
6
- module Conversions
7
- module_function
3
+ # ObjectInspector::Conversions defines conversion functions used by
4
+ # ObjectInspector.
5
+ module ObjectInspector::Conversions
6
+ module_function
8
7
 
9
- # Convert the passed in value to an {ObjectInspector::Scope} object.
10
- # Just returns the pass in value if it already is an
11
- # {ObjectInspector::Scope} object.
12
- #
13
- # @return [ObjectInspector::Scope]
14
- def Scope(value) # rubocop:disable Naming/MethodName
15
- case value
16
- when ObjectInspector::Scope
17
- value
18
- else
19
- ObjectInspector::Scope.new(value)
20
- end
8
+ # Convert the passed in value to an {ObjectInspector::Scope} object.
9
+ # Just returns the passed in value if it already is an
10
+ # {ObjectInspector::Scope} object.
11
+ #
12
+ # @return [ObjectInspector::Scope]
13
+ #
14
+ # :reek:UncommunicativeMethodName
15
+ def Scope(value) # rubocop:disable Naming/MethodName
16
+ case value
17
+ when ObjectInspector::Scope
18
+ value
19
+ else
20
+ ObjectInspector::Scope.new(value)
21
21
  end
22
22
  end
23
23
  end
@@ -1,71 +1,69 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module ObjectInspector
4
- # ObjectInspector::BaseFormatter is an abstract base class that interfaces
5
- # with {ObjectInspector::Inspector} objects to combine the supplied
6
- # {#identification}, {#flags}, {#info}, and {#name} strings into a friendly
7
- # "inspect" String.
8
- class BaseFormatter
9
- attr_reader :inspector
3
+ # ObjectInspector::BaseFormatter is an abstract base class that interfaces
4
+ # with {ObjectInspector::Inspector} objects to combine the supplied
5
+ # {#identification}, {#flags}, {#info}, and {#name} strings into a friendly
6
+ # "inspect" String.
7
+ class ObjectInspector::BaseFormatter
8
+ attr_reader :inspector
10
9
 
11
- # @param inspector [ObjectInspector::Inspector]
12
- def initialize(inspector)
13
- @inspector = inspector
14
- end
10
+ # @param inspector [ObjectInspector::Inspector]
11
+ def initialize(inspector)
12
+ @inspector = inspector
13
+ end
15
14
 
16
- # Perform the formatting routine.
17
- #
18
- # @return [String]
19
- def call
20
- raise NotImplementedError
21
- end
15
+ # Perform the formatting routine.
16
+ #
17
+ # @return [String]
18
+ def call
19
+ raise NotImplementedError
20
+ end
22
21
 
23
- # Delegates to {Inspector#wrapped_object_inspection_result}.
24
- #
25
- # @return [String] if given
26
- # @return [NilClass] if not given
27
- def wrapped_object_inspection_result
28
- @wrapped_object_inspection_result ||=
29
- @inspector.wrapped_object_inspection_result
30
- end
22
+ # Delegates to {Inspector#wrapped_object_inspection_result}.
23
+ #
24
+ # @return [String] if given
25
+ # @return [NilClass] if not given
26
+ def wrapped_object_inspection_result
27
+ @wrapped_object_inspection_result ||=
28
+ @inspector.wrapped_object_inspection_result
29
+ end
31
30
 
32
- # Delegates to {Inspector#identification}.
33
- #
34
- # @return [String] if given
35
- def identification
36
- @identification ||= @inspector.identification
37
- end
31
+ # Delegates to {Inspector#identification}.
32
+ #
33
+ # @return [String] if given
34
+ def identification
35
+ @identification ||= @inspector.identification
36
+ end
38
37
 
39
- # Delegates to {Inspector#flags}.
40
- #
41
- # @return [String] if given
42
- # @return [NilClass] if not given
43
- def flags
44
- @flags ||= @inspector.flags
45
- end
38
+ # Delegates to {Inspector#flags}.
39
+ #
40
+ # @return [String] if given
41
+ # @return [NilClass] if not given
42
+ def flags
43
+ @flags ||= @inspector.flags
44
+ end
46
45
 
47
- # Delegates to {Inspector#issues}.
48
- #
49
- # @return [String] if given
50
- # @return [NilClass] if not given
51
- def issues
52
- @issues ||= @inspector.issues
53
- end
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
54
53
 
55
- # Delegates to {Inspector#info}.
56
- #
57
- # @return [String] if given
58
- # @return [NilClass] if not given
59
- def info
60
- @info ||= @inspector.info
61
- end
54
+ # Delegates to {Inspector#info}.
55
+ #
56
+ # @return [String] if given
57
+ # @return [NilClass] if not given
58
+ def info
59
+ @info ||= @inspector.info
60
+ end
62
61
 
63
- # Delegates to {Inspector#name}.
64
- #
65
- # @return [String] if given
66
- # @return [NilClass] if not given
67
- def name
68
- @name ||= @inspector.name
69
- end
62
+ # Delegates to {Inspector#name}.
63
+ #
64
+ # @return [String] if given
65
+ # @return [NilClass] if not given
66
+ def name
67
+ @name ||= @inspector.name
70
68
  end
71
69
  end
@@ -1,63 +1,61 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module ObjectInspector
4
- # ObjectInspector::CombiningFormatter implements
5
- # {ObjectInspector::BaseFormatter} to return the standard/default inspect
6
- # output format by combining Strings.
3
+ # ObjectInspector::CombiningFormatter implements
4
+ # {ObjectInspector::BaseFormatter} to return the standard/default inspect
5
+ # output format by combining Strings.
6
+ #
7
+ # @attr (see BaseFormatter)
8
+ class ObjectInspector::CombiningFormatter < ObjectInspector::BaseFormatter
9
+ # Perform the formatting routine.
7
10
  #
8
- # @attr (see BaseFormatter)
9
- class CombiningFormatter < BaseFormatter
10
- # Perform the formatting routine.
11
- #
12
- # @return [String]
13
- def call
14
- if wrapped_object_inspection_result
15
- build_wrapped_object_string
16
- else
17
- build_string
18
- end
11
+ # @return [String]
12
+ def call
13
+ if wrapped_object_inspection_result
14
+ build_wrapped_object_string
15
+ else
16
+ build_string
19
17
  end
18
+ end
20
19
 
21
- private
20
+ private
22
21
 
23
- def build_wrapped_object_string
24
- "#{build_string} "\
22
+ def build_wrapped_object_string
23
+ "#{build_string} "\
25
24
  "#{ObjectInspector.configuration.presented_object_separator} "\
26
25
  "#{wrapped_object_inspection_result}"
27
- end
26
+ end
28
27
 
29
- def build_string
30
- "<#{combine_strings}>"
31
- end
28
+ def build_string
29
+ "<#{combine_strings}>"
30
+ end
32
31
 
33
- def combine_strings
34
- strings.join
35
- end
32
+ def combine_strings
33
+ strings.join
34
+ end
36
35
 
37
- # Override in subclasses as needed.
38
- def strings
39
- [
40
- build_identification_string,
41
- build_flags_string,
42
- build_info_string,
43
- build_name_string
44
- ].compact
45
- end
36
+ # Override in subclasses as needed.
37
+ def strings
38
+ [
39
+ build_identification_string,
40
+ build_flags_string,
41
+ build_info_string,
42
+ build_name_string,
43
+ ].compact
44
+ end
46
45
 
47
- def build_identification_string
48
- identification.to_s
49
- end
46
+ def build_identification_string
47
+ identification.to_s
48
+ end
50
49
 
51
- def build_flags_string
52
- "(#{flags.to_s.upcase})" if flags
53
- end
50
+ def build_flags_string
51
+ "(#{flags.to_s.upcase})" if flags
52
+ end
54
53
 
55
- def build_info_string
56
- " #{info}" if info
57
- end
54
+ def build_info_string
55
+ " #{info}" if info
56
+ end
58
57
 
59
- def build_name_string
60
- " :: #{name}" if name
61
- end
58
+ def build_name_string
59
+ " :: #{name}" if name
62
60
  end
63
61
  end