object_identifier 0.3.0 → 0.4.1
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 +4 -4
- data/.rubocop.yml +7 -6
- data/CHANGELOG.md +12 -1
- data/Gemfile.lock +41 -55
- data/LICENSE.txt +1 -1
- data/README.md +21 -17
- data/lib/core_ext/object.rb +2 -2
- data/lib/object_identifier/identifier.rb +13 -5
- data/lib/object_identifier/version.rb +1 -1
- data/object_identifier.gemspec +3 -2
- metadata +9 -10
- data/.travis.yml +0 -21
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c0a0e09332282b492a3c9e83f9ab59a319a421c9ed3e83c2bfa87f6bfe20e6bd
|
|
4
|
+
data.tar.gz: 7b27cf091a8ecfd1c747fb75918f4b88aabd725dba3221489021aa2f5d24138a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6b1150c07800795094a4f15e475ba180187c51e248f0a5cfb385030b9720c4b2e3000692974f89eecc211b223778159b3041b358957265ae7e2e55b2835f8e47
|
|
7
|
+
data.tar.gz: 75b8bc577271cfe6b8a58ec5ec8a7d65c1e308aee3dfef8481e65869ac4e749ff9725f7f0d4fa752b391638c0e4b0003cafd2cd91ff352514fa03301df7931e8
|
data/.rubocop.yml
CHANGED
|
@@ -3,7 +3,8 @@ AllCops:
|
|
|
3
3
|
DisplayCopNames: true
|
|
4
4
|
DisplayStyleGuide: true
|
|
5
5
|
ExtraDetails: false
|
|
6
|
-
TargetRubyVersion: 2.
|
|
6
|
+
TargetRubyVersion: 2.4.0
|
|
7
|
+
NewCops: enable
|
|
7
8
|
|
|
8
9
|
Layout/DotPosition:
|
|
9
10
|
EnforcedStyle: trailing
|
|
@@ -11,16 +12,16 @@ Layout/DotPosition:
|
|
|
11
12
|
Layout/EndOfLine:
|
|
12
13
|
EnforcedStyle: lf
|
|
13
14
|
|
|
14
|
-
Layout/
|
|
15
|
+
Layout/FirstArgumentIndentation:
|
|
15
16
|
EnforcedStyle: consistent_relative_to_receiver
|
|
16
17
|
|
|
17
|
-
Layout/
|
|
18
|
+
Layout/FirstArrayElementIndentation:
|
|
18
19
|
EnforcedStyle: consistent
|
|
19
20
|
|
|
20
|
-
Layout/
|
|
21
|
+
Layout/FirstHashElementIndentation:
|
|
21
22
|
EnforcedStyle: consistent
|
|
22
23
|
|
|
23
|
-
Layout/
|
|
24
|
+
Layout/FirstParameterIndentation:
|
|
24
25
|
Enabled: false # Revisit if more settings become available.
|
|
25
26
|
|
|
26
27
|
Layout/MultilineMethodCallBraceLayout:
|
|
@@ -59,7 +60,7 @@ Metrics/LineLength:
|
|
|
59
60
|
Exclude:
|
|
60
61
|
- "object_identifier.gemspec"
|
|
61
62
|
|
|
62
|
-
Naming/
|
|
63
|
+
Naming/MethodParameterName:
|
|
63
64
|
AllowedNames:
|
|
64
65
|
- a
|
|
65
66
|
- b
|
data/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
+
### 0.4.1 - 2022-12-?
|
|
2
|
+
- Make compatible with Ruby 3.2 (and likely Ruby 3.0 and 3.1 as well).
|
|
3
|
+
- Update development dependencies.
|
|
4
|
+
|
|
5
|
+
### 0.4.0 - 2020-09-01
|
|
6
|
+
- [#4](https://github.com/pdobb/object_identifier/pull/4) Only show attribute names if identifying more than one attribute.
|
|
7
|
+
- Update development dependencies.
|
|
8
|
+
|
|
9
|
+
#### BREAKING
|
|
10
|
+
- Drop support for Ruby 2.3.
|
|
11
|
+
|
|
1
12
|
### 0.3.0 - 2019-06-27
|
|
2
13
|
- Fix identification of objects that implement `to_a`, such as Struct.
|
|
3
14
|
|
|
4
15
|
### 0.2.1 - 2019-02-24
|
|
5
|
-
- Add ability to identify instance vars
|
|
16
|
+
- Add ability to identify instance vars.
|
|
6
17
|
|
|
7
18
|
### 0.1.0 - 2018-04-14
|
|
8
19
|
- Revamp gem.
|
data/Gemfile.lock
CHANGED
|
@@ -1,77 +1,63 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
object_identifier (0.
|
|
4
|
+
object_identifier (0.4.1)
|
|
5
5
|
|
|
6
6
|
GEM
|
|
7
7
|
remote: https://rubygems.org/
|
|
8
8
|
specs:
|
|
9
9
|
ansi (1.5.0)
|
|
10
|
-
ast (2.4.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
byebug (11.0.1)
|
|
17
|
-
codeclimate-engine-rb (0.4.1)
|
|
18
|
-
virtus (~> 1.0)
|
|
19
|
-
coderay (1.1.2)
|
|
20
|
-
coercible (1.0.0)
|
|
21
|
-
descendants_tracker (~> 0.0.1)
|
|
22
|
-
descendants_tracker (0.0.4)
|
|
23
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
|
24
|
-
docile (1.3.2)
|
|
25
|
-
equalizer (0.0.11)
|
|
26
|
-
ice_nine (0.11.2)
|
|
27
|
-
jaro_winkler (1.5.3)
|
|
28
|
-
json (2.2.0)
|
|
10
|
+
ast (2.4.2)
|
|
11
|
+
builder (3.2.4)
|
|
12
|
+
byebug (11.1.3)
|
|
13
|
+
coderay (1.1.3)
|
|
14
|
+
docile (1.4.0)
|
|
15
|
+
json (2.6.3)
|
|
29
16
|
kwalify (0.7.2)
|
|
30
|
-
method_source (0.
|
|
31
|
-
minitest (5.
|
|
32
|
-
minitest-reporters (1.
|
|
17
|
+
method_source (1.0.0)
|
|
18
|
+
minitest (5.16.3)
|
|
19
|
+
minitest-reporters (1.5.0)
|
|
33
20
|
ansi
|
|
34
21
|
builder
|
|
35
22
|
minitest (>= 5.0)
|
|
36
23
|
ruby-progressbar
|
|
37
|
-
parallel (1.
|
|
38
|
-
parser (
|
|
39
|
-
ast (~> 2.4.
|
|
40
|
-
pry (0.
|
|
41
|
-
coderay (~> 1.1
|
|
42
|
-
method_source (~>
|
|
43
|
-
pry-byebug (3.
|
|
24
|
+
parallel (1.22.1)
|
|
25
|
+
parser (3.1.3.0)
|
|
26
|
+
ast (~> 2.4.1)
|
|
27
|
+
pry (0.14.1)
|
|
28
|
+
coderay (~> 1.1)
|
|
29
|
+
method_source (~> 1.0)
|
|
30
|
+
pry-byebug (3.10.1)
|
|
44
31
|
byebug (~> 11.0)
|
|
45
|
-
pry (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
reek (5.4.0)
|
|
50
|
-
codeclimate-engine-rb (~> 0.4.0)
|
|
32
|
+
pry (>= 0.13, < 0.15)
|
|
33
|
+
rainbow (3.1.1)
|
|
34
|
+
rake (13.0.6)
|
|
35
|
+
reek (6.1.3)
|
|
51
36
|
kwalify (~> 0.7.0)
|
|
52
|
-
parser (
|
|
53
|
-
psych (~> 3.1.0)
|
|
37
|
+
parser (~> 3.1.0)
|
|
54
38
|
rainbow (>= 2.0, < 4.0)
|
|
55
|
-
|
|
56
|
-
|
|
39
|
+
regexp_parser (2.6.1)
|
|
40
|
+
rexml (3.2.5)
|
|
41
|
+
rubocop (1.41.1)
|
|
42
|
+
json (~> 2.3)
|
|
57
43
|
parallel (~> 1.10)
|
|
58
|
-
parser (>= 2.
|
|
44
|
+
parser (>= 3.1.2.1)
|
|
59
45
|
rainbow (>= 2.2.2, < 4.0)
|
|
46
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
47
|
+
rexml (>= 3.2.5, < 4.0)
|
|
48
|
+
rubocop-ast (>= 1.23.0, < 2.0)
|
|
60
49
|
ruby-progressbar (~> 1.7)
|
|
61
|
-
unicode-display_width (>= 1.4.0, <
|
|
62
|
-
|
|
63
|
-
|
|
50
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
51
|
+
rubocop-ast (1.24.1)
|
|
52
|
+
parser (>= 3.1.1.0)
|
|
53
|
+
ruby-progressbar (1.11.0)
|
|
54
|
+
simplecov (0.22.0)
|
|
64
55
|
docile (~> 1.1)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
simplecov-html (0.
|
|
68
|
-
|
|
69
|
-
unicode-display_width (
|
|
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)
|
|
56
|
+
simplecov-html (~> 0.11)
|
|
57
|
+
simplecov_json_formatter (~> 0.1)
|
|
58
|
+
simplecov-html (0.12.3)
|
|
59
|
+
simplecov_json_formatter (0.1.4)
|
|
60
|
+
unicode-display_width (2.3.0)
|
|
75
61
|
|
|
76
62
|
PLATFORMS
|
|
77
63
|
ruby
|
|
@@ -90,4 +76,4 @@ DEPENDENCIES
|
|
|
90
76
|
simplecov
|
|
91
77
|
|
|
92
78
|
BUNDLED WITH
|
|
93
|
-
2.
|
|
79
|
+
2.4.1
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# Object Identifier
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/rb/object_identifier)
|
|
4
|
-
[](https://travis-ci.org/pdobb/object_identifier)
|
|
5
4
|
[](https://codeclimate.com/github/pdobb/object_identifier/test_coverage)
|
|
6
5
|
[](https://codeclimate.com/github/pdobb/object_identifier/maintainability)
|
|
7
6
|
|
|
@@ -40,11 +39,10 @@ Or install it yourself as:
|
|
|
40
39
|
## Compatibility
|
|
41
40
|
|
|
42
41
|
Tested MRI Ruby Versions:
|
|
43
|
-
*
|
|
44
|
-
* 2.
|
|
45
|
-
* 2.
|
|
46
|
-
* 2.
|
|
47
|
-
* edge
|
|
42
|
+
* 3.2.0
|
|
43
|
+
* 2.4.9
|
|
44
|
+
* 2.5.8
|
|
45
|
+
* 2.6.6
|
|
48
46
|
|
|
49
47
|
|
|
50
48
|
## Usage
|
|
@@ -54,33 +52,38 @@ Tested MRI Ruby Versions:
|
|
|
54
52
|
`identify` outputs the `id` of the receiving object by default, if it exists and no other attributes/methods are specified.
|
|
55
53
|
|
|
56
54
|
```ruby
|
|
57
|
-
my_movie.identify
|
|
58
|
-
my_movie.identify(:rating) # => Movie[rating:"7/10"]
|
|
55
|
+
my_movie.identify # => Movie[1]
|
|
59
56
|
```
|
|
60
57
|
|
|
61
|
-
|
|
58
|
+
`identify` doesn't output labels if only identifying a single attribute/method. It includes labels when two or more attributes/methods are being identified.
|
|
62
59
|
|
|
63
60
|
```ruby
|
|
64
|
-
my_movie.identify(:
|
|
61
|
+
my_movie.identify(:id) # => Movie[1]
|
|
62
|
+
my_movie.identify(:rating) # => Movie["7/10"]
|
|
63
|
+
my_movie.identify(:id, :rating) # => Movie[id:1, rating:"7/10"]
|
|
65
64
|
```
|
|
66
65
|
|
|
66
|
+
Private methods can be identified just the same as public methods.
|
|
67
|
+
|
|
68
|
+
```ruby
|
|
69
|
+
my_movie.identify(:my_private_method) # => Movie["Shh"]
|
|
70
|
+
```
|
|
67
71
|
|
|
68
72
|
### Unknown Attributes/Methods
|
|
69
73
|
|
|
70
74
|
If the object doesn't respond to a specified attribute/method it is simply ignored:
|
|
71
75
|
|
|
72
76
|
```ruby
|
|
73
|
-
my_movie.identify(:
|
|
77
|
+
my_movie.identify(:id, :rating, :other) # => Movie[id:1, rating:"7/10"]
|
|
74
78
|
```
|
|
75
79
|
|
|
76
80
|
### Overriding Class Names
|
|
77
81
|
|
|
78
82
|
```ruby
|
|
79
|
-
my_delayed_job.identify(klass: "Delayed::Job") # => Delayed::Job[
|
|
80
|
-
my_movie.identify(klass: nil) # => [
|
|
83
|
+
my_delayed_job.identify(klass: "Delayed::Job") # => Delayed::Job[1]
|
|
84
|
+
my_movie.identify(klass: nil) # => [1]
|
|
81
85
|
```
|
|
82
86
|
|
|
83
|
-
|
|
84
87
|
### Identifying Nil
|
|
85
88
|
|
|
86
89
|
```ruby
|
|
@@ -88,7 +91,6 @@ nil.identify(:id, :name) # => [no objects]
|
|
|
88
91
|
nil.identify(:id, :name, klass: "Nope") # => [no objects]
|
|
89
92
|
```
|
|
90
93
|
|
|
91
|
-
|
|
92
94
|
### Collections
|
|
93
95
|
|
|
94
96
|
Collections of objects are each identified in turn.
|
|
@@ -101,7 +103,7 @@ Collections of objects are each identified in turn.
|
|
|
101
103
|
The number of results that will be identified from a collection can be truncated by specifying the `limit` option.
|
|
102
104
|
|
|
103
105
|
```ruby
|
|
104
|
-
[my_movie,
|
|
106
|
+
[my_movie, my_user].identify(:id, :name, limit: 1)
|
|
105
107
|
# => Movie[id:1, name:"Pi"], ... (1 more)
|
|
106
108
|
```
|
|
107
109
|
|
|
@@ -154,7 +156,9 @@ ObjectIdentifier works great with the [ObjectInspector](https://github.com/pdobb
|
|
|
154
156
|
|
|
155
157
|
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.
|
|
156
158
|
|
|
157
|
-
To install this gem onto your local machine, run `bundle exec rake install`.
|
|
159
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
|
160
|
+
|
|
161
|
+
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).
|
|
158
162
|
|
|
159
163
|
|
|
160
164
|
## Contributing
|
data/lib/core_ext/object.rb
CHANGED
|
@@ -39,7 +39,7 @@ class Object
|
|
|
39
39
|
#
|
|
40
40
|
# (1..10).to_a.identify(:to_f, limit: 2)
|
|
41
41
|
# # => "Integer[to_f:1.0], Integer[to_f:2.0], ... (8 more)"
|
|
42
|
-
def identify(*args)
|
|
43
|
-
ObjectIdentifier::Identifier.identify(self, *args)
|
|
42
|
+
def identify(*args, **kargs)
|
|
43
|
+
ObjectIdentifier::Identifier.identify(self, *args, **kargs)
|
|
44
44
|
end
|
|
45
45
|
end
|
|
@@ -39,8 +39,8 @@ module ObjectIdentifier
|
|
|
39
39
|
#
|
|
40
40
|
# ObjectIdentifier::Identifier.identify((1..10).to_a, :to_f, limit: 2)
|
|
41
41
|
# # => "Integer[to_f:1.0], Integer[to_f:2.0], ... (8 more)"
|
|
42
|
-
def self.identify(
|
|
43
|
-
new(
|
|
42
|
+
def self.identify(*args, **kargs)
|
|
43
|
+
new(*args, **kargs).to_s
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def initialize(objects, *args, limit: nil, klass: :not_given)
|
|
@@ -90,9 +90,17 @@ module ObjectIdentifier
|
|
|
90
90
|
def format_attributes(attributes_hash)
|
|
91
91
|
return if attributes_hash.empty?
|
|
92
92
|
|
|
93
|
-
attributes_hash.
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
attributes_hash.
|
|
94
|
+
map(&format_attributes_map_block(attributes_hash)).
|
|
95
|
+
join(", ")
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def format_attributes_map_block(attributes_hash)
|
|
99
|
+
if attributes_hash.one?
|
|
100
|
+
->(_key, value) { value.inspect_lit }
|
|
101
|
+
else
|
|
102
|
+
->(key, value) { "#{key}:#{value.inspect_lit}" }
|
|
103
|
+
end
|
|
96
104
|
end
|
|
97
105
|
|
|
98
106
|
# @return [Hash]
|
data/object_identifier.gemspec
CHANGED
|
@@ -7,8 +7,9 @@ require "object_identifier/version"
|
|
|
7
7
|
Gem::Specification.new do |spec|
|
|
8
8
|
spec.name = "object_identifier"
|
|
9
9
|
spec.version = ObjectIdentifier::VERSION
|
|
10
|
-
spec.authors = ["Paul
|
|
11
|
-
spec.email = ["
|
|
10
|
+
spec.authors = ["Paul DobbinSchmaltz", "Evan Sherwood"]
|
|
11
|
+
spec.email = ["p.dobbinschmaltz@icloud.com"]
|
|
12
|
+
spec.required_ruby_version = ">= 2.4.0"
|
|
12
13
|
|
|
13
14
|
spec.summary = "ObjectIdentifier identifies an object by its class name and attributes."
|
|
14
15
|
spec.description = "Object Identifier allows quick, easy, and uniform identification of an object by inspecting its class name and outputting any desirable attributes/methods. It is great for logging, sending descriptive notification messages, etc."
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: object_identifier
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
- Paul
|
|
7
|
+
- Paul DobbinSchmaltz
|
|
8
8
|
- Evan Sherwood
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2022-12-30 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
@@ -155,7 +155,7 @@ description: Object Identifier allows quick, easy, and uniform identification of
|
|
|
155
155
|
object by inspecting its class name and outputting any desirable attributes/methods.
|
|
156
156
|
It is great for logging, sending descriptive notification messages, etc.
|
|
157
157
|
email:
|
|
158
|
-
-
|
|
158
|
+
- p.dobbinschmaltz@icloud.com
|
|
159
159
|
executables: []
|
|
160
160
|
extensions: []
|
|
161
161
|
extra_rdoc_files: []
|
|
@@ -163,7 +163,6 @@ files:
|
|
|
163
163
|
- ".gitignore"
|
|
164
164
|
- ".rubocop"
|
|
165
165
|
- ".rubocop.yml"
|
|
166
|
-
- ".travis.yml"
|
|
167
166
|
- CHANGELOG.md
|
|
168
167
|
- Gemfile
|
|
169
168
|
- Gemfile.lock
|
|
@@ -184,7 +183,7 @@ homepage: https://github.com/pdobb/object_identifier
|
|
|
184
183
|
licenses:
|
|
185
184
|
- MIT
|
|
186
185
|
metadata: {}
|
|
187
|
-
post_install_message:
|
|
186
|
+
post_install_message:
|
|
188
187
|
rdoc_options: []
|
|
189
188
|
require_paths:
|
|
190
189
|
- lib
|
|
@@ -192,15 +191,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
192
191
|
requirements:
|
|
193
192
|
- - ">="
|
|
194
193
|
- !ruby/object:Gem::Version
|
|
195
|
-
version:
|
|
194
|
+
version: 2.4.0
|
|
196
195
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
196
|
requirements:
|
|
198
197
|
- - ">="
|
|
199
198
|
- !ruby/object:Gem::Version
|
|
200
199
|
version: '0'
|
|
201
200
|
requirements: []
|
|
202
|
-
rubygems_version: 3.
|
|
203
|
-
signing_key:
|
|
201
|
+
rubygems_version: 3.4.1
|
|
202
|
+
signing_key:
|
|
204
203
|
specification_version: 4
|
|
205
204
|
summary: ObjectIdentifier identifies an object by its class name and attributes.
|
|
206
205
|
test_files: []
|
data/.travis.yml
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
env:
|
|
2
|
-
global:
|
|
3
|
-
- CC_TEST_REPORTER_ID=3b57e55dcd3cc40ee073715e7d75fa80ab7b7687cb8a420eac500d27b5cb28db
|
|
4
|
-
sudo: false
|
|
5
|
-
language: ruby
|
|
6
|
-
rvm:
|
|
7
|
-
- 2.3.7
|
|
8
|
-
- 2.4.4
|
|
9
|
-
- 2.5.3
|
|
10
|
-
- 2.6.2
|
|
11
|
-
- ruby-head
|
|
12
|
-
notifications:
|
|
13
|
-
email: false
|
|
14
|
-
before_install: gem install bundler -v 2.0.1
|
|
15
|
-
cache: bundler
|
|
16
|
-
before_script:
|
|
17
|
-
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
|
18
|
-
- chmod +x ./cc-test-reporter
|
|
19
|
-
- ./cc-test-reporter before-build
|
|
20
|
-
after_script:
|
|
21
|
-
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|