object_identifier 0.1.0 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15ea208b08827813706ca4351a58709ec064d4ba9ad365084c6ef954daf40148
4
- data.tar.gz: 9044d50b67314cd0a7da45d27874acf807fc13829fd0ef5f10eb5d1a0a3f23c6
3
+ metadata.gz: bbab525606ca826781627ff66be0e57229d14be19e2d19d562f5f73d7b2b7a5d
4
+ data.tar.gz: b266c154b7c283721b335d752b40705b3ba9000ad46d0ad8689a1f7654249c54
5
5
  SHA512:
6
- metadata.gz: 79481c060a1469918bf2e4e9ebcc99f469132ded28794b1ef5cb6944e3a39159052db3a87a323f605e786efeb71ae10fafa2c6f37ea286517d6a595536d74597
7
- data.tar.gz: 20e1a1255476b06f0f5a9804daec02703b7c7d913f401b38fd6d632df7327df74c74ba784e380881d2b6938a10bc51d73104f1ebe16cd5a1e043503d0e703f65
6
+ metadata.gz: b83e5d96392c489dd19a32d265602161069db563c7bda67a4aa88eb28eca6ea26ffdf3641b52a060482493717c1f652b190b6545547b6ae4cadfa1cee3360451
7
+ data.tar.gz: 26f3c65910cd39d01e51af199b57f5a8fee3d1ddbe79f67b69552b0abf9c5f9da9752e8947afa0f663aa53e84f0968940cae59d9735a9f5c3745329ad778839d
@@ -0,0 +1,4 @@
1
+ --display-cop-names
2
+ --display-style-guide
3
+ --extra-details
4
+ --format=fuubar
@@ -0,0 +1,105 @@
1
+ AllCops:
2
+ UseCache: true
3
+ DisplayCopNames: true
4
+ DisplayStyleGuide: true
5
+ ExtraDetails: false
6
+ TargetRubyVersion: 2.4.0
7
+ NewCops: enable
8
+
9
+ Layout/DotPosition:
10
+ EnforcedStyle: trailing
11
+
12
+ Layout/EndOfLine:
13
+ EnforcedStyle: lf
14
+
15
+ Layout/FirstArgumentIndentation:
16
+ EnforcedStyle: consistent_relative_to_receiver
17
+
18
+ Layout/FirstArrayElementIndentation:
19
+ EnforcedStyle: consistent
20
+
21
+ Layout/FirstHashElementIndentation:
22
+ EnforcedStyle: consistent
23
+
24
+ Layout/FirstParameterIndentation:
25
+ Enabled: false # Revisit if more settings become available.
26
+
27
+ Layout/MultilineMethodCallBraceLayout:
28
+ EnforcedStyle: same_line
29
+
30
+ Layout/MultilineMethodCallIndentation:
31
+ EnforcedStyle: indented_relative_to_receiver
32
+
33
+ Layout/MultilineMethodDefinitionBraceLayout:
34
+ EnforcedStyle: same_line
35
+
36
+ Layout/MultilineOperationIndentation:
37
+ Enabled: false # Waiting for e.g. `indented_relative_to_receiver`.
38
+
39
+ Lint/AmbiguousOperator:
40
+ Enabled: false # Conflicts with other rules.
41
+
42
+ Lint/AmbiguousRegexpLiteral:
43
+ Enabled: false # Conflicts with other rules.
44
+
45
+ Lint/Void:
46
+ CheckForMethodsWithNoSideEffects: true
47
+
48
+ Metrics/BlockLength:
49
+ ExcludedMethods:
50
+ - describe
51
+ - context
52
+ - ips # Benchmarking
53
+
54
+ Metrics/ClassLength:
55
+ Exclude:
56
+ - "test/**/*"
57
+
58
+ Metrics/LineLength:
59
+ Max: 80
60
+ Exclude:
61
+ - "object_identifier.gemspec"
62
+
63
+ Naming/MethodParameterName:
64
+ AllowedNames:
65
+ - a
66
+ - b
67
+
68
+ Style/Alias:
69
+ EnforcedStyle: prefer_alias_method
70
+
71
+ Style/BlockDelimiters:
72
+ Enabled: false # Reconsider later.
73
+
74
+ Style/EmptyElse:
75
+ # It"s helpful to show intent by including a comment in an else block.
76
+ Enabled: false
77
+
78
+ Style/EmptyMethod:
79
+ EnforcedStyle: expanded
80
+
81
+ Style/ExpandPathArguments:
82
+ Exclude:
83
+ - "object_inspector.gemspec"
84
+
85
+ Style/FormatString:
86
+ Enabled: false # % notation with an Array just reads better sometimes.
87
+
88
+ Style/Lambda:
89
+ EnforcedStyle: literal
90
+
91
+ Style/RegexpLiteral:
92
+ EnforcedStyle: mixed
93
+
94
+ Style/RescueStandardError:
95
+ EnforcedStyle: implicit
96
+
97
+ Style/SingleLineMethods:
98
+ Exclude:
99
+ - "test/**/*_test.rb"
100
+
101
+ Style/StringLiterals:
102
+ EnforcedStyle: double_quotes
103
+
104
+ Style/StringLiteralsInInterpolation:
105
+ EnforcedStyle: double_quotes
@@ -4,14 +4,12 @@ env:
4
4
  sudo: false
5
5
  language: ruby
6
6
  rvm:
7
- - 2.2.10
8
- - 2.3.7
9
- - 2.4.4
10
- - 2.5.1
11
- - ruby-head
7
+ - 2.4.9
8
+ - 2.5.8
9
+ - 2.6.6
12
10
  notifications:
13
11
  email: false
14
- before_install: gem install bundler -v 1.16.1
12
+ before_install: gem install bundler -v 2.1.4
15
13
  cache: bundler
16
14
  before_script:
17
15
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
@@ -1,10 +1,21 @@
1
- ### 0.1.0 - 2018-04-14
1
+ ### 0.4.0 - 2020-09-01
2
+ - [#4](https://github.com/pdobb/object_identifier/pull/4) Only show attribute names if identifying more than one attribute.
3
+ - Update development dependencies.
2
4
 
3
- * Revamp gem
4
- * Update gem dependencies
5
- * Now returns "[no objects]" even if given a :klass option
5
+ #### BREAKING
6
+ - Drop support for Ruby 2.3.
6
7
 
8
+ ### 0.3.0 - 2019-06-27
9
+ - Fix identification of objects that implement `to_a`, such as Struct.
10
+
11
+ ### 0.2.1 - 2019-02-24
12
+ - Add ability to identify instance vars.
13
+
14
+ ### 0.1.0 - 2018-04-14
15
+ - Revamp gem.
16
+ - Update gem dependencies.
17
+ - Now returns "[no objects]" even if given a :klass option.
7
18
 
8
- ### 0.0.6 - 2016-02-06
9
19
 
10
- * Fix: identify method now supports private & protected methods
20
+ ### 0.0.6 - 2016-02-06
21
+ - Fix: identify method now supports private & protected methods.
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
@@ -1,51 +1,77 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- object_identifier (0.1.0)
4
+ object_identifier (0.4.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  ansi (1.5.0)
10
- builder (3.2.3)
11
- byebug (10.0.2)
12
- coderay (1.1.2)
13
- docile (1.3.0)
14
- json (2.1.0)
15
- method_source (0.9.0)
16
- minitest (5.4.1)
17
- minitest-reporters (1.2.0)
10
+ ast (2.4.1)
11
+ builder (3.2.4)
12
+ byebug (11.1.3)
13
+ coderay (1.1.3)
14
+ docile (1.3.2)
15
+ kwalify (0.7.2)
16
+ method_source (1.0.0)
17
+ minitest (5.14.2)
18
+ minitest-reporters (1.4.2)
18
19
  ansi
19
20
  builder
20
21
  minitest (>= 5.0)
21
22
  ruby-progressbar
22
- pry (0.11.3)
23
- coderay (~> 1.1.0)
24
- method_source (~> 0.9.0)
25
- pry-byebug (3.6.0)
26
- byebug (~> 10.0)
27
- pry (~> 0.10)
28
- rake (10.3.2)
29
- ruby-progressbar (1.9.0)
30
- simplecov (0.16.1)
23
+ parallel (1.19.2)
24
+ parser (2.7.1.4)
25
+ ast (~> 2.4.1)
26
+ pry (0.13.1)
27
+ coderay (~> 1.1)
28
+ method_source (~> 1.0)
29
+ pry-byebug (3.9.0)
30
+ byebug (~> 11.0)
31
+ pry (~> 0.13.0)
32
+ psych (3.1.0)
33
+ rainbow (3.0.0)
34
+ rake (13.0.1)
35
+ reek (6.0.1)
36
+ kwalify (~> 0.7.0)
37
+ parser (>= 2.5.0.0, < 2.8, != 2.5.1.1)
38
+ psych (~> 3.1.0)
39
+ rainbow (>= 2.0, < 4.0)
40
+ regexp_parser (1.7.1)
41
+ rexml (3.2.4)
42
+ rubocop (0.90.0)
43
+ parallel (~> 1.10)
44
+ parser (>= 2.7.1.1)
45
+ rainbow (>= 2.2.2, < 4.0)
46
+ regexp_parser (>= 1.7)
47
+ rexml
48
+ rubocop-ast (>= 0.3.0, < 1.0)
49
+ ruby-progressbar (~> 1.7)
50
+ unicode-display_width (>= 1.4.0, < 2.0)
51
+ rubocop-ast (0.3.0)
52
+ parser (>= 2.7.1.4)
53
+ ruby-progressbar (1.10.1)
54
+ simplecov (0.19.0)
31
55
  docile (~> 1.1)
32
- json (>= 1.8, < 3)
33
- simplecov-html (~> 0.10.0)
34
- simplecov-html (0.10.2)
56
+ simplecov-html (~> 0.11)
57
+ simplecov-html (0.12.2)
58
+ unicode-display_width (1.7.0)
35
59
 
36
60
  PLATFORMS
37
61
  ruby
38
62
 
39
63
  DEPENDENCIES
40
- bundler (~> 1.16)
41
- byebug (~> 10.0)
42
- minitest (~> 5.0)
43
- minitest-reporters (~> 1.2)
64
+ bundler
65
+ byebug
66
+ minitest
67
+ minitest-reporters
44
68
  object_identifier!
45
- pry (~> 0.11)
46
- pry-byebug (~> 3.6)
47
- rake (~> 10.0)
48
- simplecov (~> 0.16)
69
+ pry
70
+ pry-byebug
71
+ rake
72
+ reek
73
+ rubocop
74
+ simplecov
49
75
 
50
76
  BUNDLED WITH
51
- 1.16.1
77
+ 2.1.4
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Object Identifier
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/object_identifier.png)](http://badge.fury.io/rb/object_identifier)
3
+ [![Gem Version](https://badge.fury.io/rb/object_identifier.svg)](https://badge.fury.io/rb/object_identifier)
4
4
  [![Build Status](https://travis-ci.org/pdobb/object_identifier.svg?branch=master)](https://travis-ci.org/pdobb/object_identifier)
5
5
  [![Test Coverage](https://api.codeclimate.com/v1/badges/0b737a72d16ec755c1ff/test_coverage)](https://codeclimate.com/github/pdobb/object_identifier/test_coverage)
6
6
  [![Maintainability](https://api.codeclimate.com/v1/badges/0b737a72d16ec755c1ff/maintainability)](https://codeclimate.com/github/pdobb/object_identifier/maintainability)
7
7
 
8
- 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 quickly logging, sending descriptive notification messages, etc.
8
+ 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.
9
9
 
10
10
  For example:
11
11
 
@@ -16,7 +16,7 @@ some_object.identify(:id, :name)
16
16
  Which is the same as:
17
17
 
18
18
  ```ruby
19
- "#{some_object.class.name}[id:#{some_object.id}, name:'#{some_object.name}']"
19
+ "#{some_object.class.name}[id:#{some_object.id}, name:\"#{some_object.name}\"]"
20
20
  ```
21
21
 
22
22
 
@@ -40,11 +40,9 @@ Or install it yourself as:
40
40
  ## Compatibility
41
41
 
42
42
  Tested MRI Ruby Versions:
43
- * 2.2.10
44
- * 2.3.7
45
- * 2.4.4
46
- * 2.5.1
47
- * edge
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 # => Movie[id:1]
58
- my_movie.identify(:rating) # => Movie[rating:"7/10"]
55
+ my_movie.identify # => Movie[1]
59
56
  ```
60
57
 
61
- Private methods can be identified just the same as public methods.
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(:my_private_method) # => Movie[my_private_method:"Shh"]
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(:gobble_gobble, :rating) # => Movie[rating:"7/10"]
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[id:1]
80
- my_movie.identify(klass: nil) # => [id:1]
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, my_contact].identify(:id, :name, limit: 1)
106
+ [my_movie, my_user].identify(:id, :name, limit: 1)
105
107
  # => Movie[id:1, name:"Pi"], ... (1 more)
106
108
  ```
107
109
 
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require "rake/testtask"
3
5
 
@@ -7,4 +9,4 @@ Rake::TestTask.new(:test) do |t|
7
9
  t.test_files = FileList["test/**/*_test.rb"]
8
10
  end
9
11
 
10
- task :default => :test
12
+ task default: :test
@@ -1,7 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require "bundler/setup"
4
5
  require "object_identifier"
6
+ require "ostruct"
5
7
 
6
8
  # You can add fixtures and/or initialization code here to make experimenting
7
9
  # with your gem easier. You can also use a different console, if you like.
@@ -1,5 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bigdecimal"
2
4
 
5
+ # Reopen the core BigDecimal class to represent {#inspect_lit}.
3
6
  class BigDecimal
4
7
  # Formats this BigDecimal as an object-type-revealing String.
5
8
  #
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Reopen the core Object class to add {#identify} to all objects.
1
4
  class Object
2
5
  # Standard #inspect for any object that doesn't override this method. This
3
6
  # method is meant to make an object's type inherently obvious inspected.
@@ -31,8 +34,8 @@ class Object
31
34
  # 1.identify(:to_s) # => "Integer[to_s:\"1\"]"
32
35
  # nil.identify # => "[no objects]"
33
36
  #
34
- # %w(1 2 3).identify(:to_i, :to_f)
35
- # # => "String[to_i:1, to_f:1.0], String[to_i:2, to_f:2.0], String[to_i:3, to_f:3.0]"
37
+ # %w(1 2).identify(:to_i, :to_f)
38
+ # # => "String[to_i:1, to_f:1.0], String[to_i:2, to_f:2.0]"
36
39
  #
37
40
  # (1..10).to_a.identify(:to_f, limit: 2)
38
41
  # # => "Integer[to_f:1.0], Integer[to_f:2.0], ... (8 more)"
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Reopen the core String class to represent {#inspect_lit}.
1
4
  class String
2
5
  # Formats self to look like a String literal so that object type will be
3
6
  # inherently obvious when inspected.
@@ -9,6 +12,6 @@ class String
9
12
  # "1".inspect_lit # => "\"1\"" (i.e. '"1"')
10
13
  # "12.3".inspect_lit # => "\"12.3\"" (i.e. '"12.3"')
11
14
  def inspect_lit
12
- %("#{to_s}")
15
+ %("#{self}")
13
16
  end
14
17
  end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Reopen the core Symbol class to represent {#inspect_lit}.
1
4
  class Symbol
2
5
  # Formats this symbol to look like a symbol literal so that object type will
3
6
  # be inherently obvious when used in logging methods, etc.
@@ -8,6 +11,6 @@ class Symbol
8
11
  # :test.inspect_lit # => ":\"test\"" (or ':"test"')
9
12
  # :"ta-da!".inspect_lit # => ":\"ta-da!\"" (or ':"ta-da!"')
10
13
  def inspect_lit
11
- %(:"#{to_s}")
14
+ %(:"#{self}")
12
15
  end
13
16
  end
@@ -1,8 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # ObjectIdentifier is the base namespace for all modules/classes related to the
4
+ # object_identifier gem.
1
5
  module ObjectIdentifier
2
6
  end
3
7
 
8
+ require "object_identifier/version"
4
9
  require "object_identifier/identifier"
5
- require "object_identifier/core_ext/object"
6
- require "object_identifier/core_ext/string"
7
- require "object_identifier/core_ext/symbol"
8
- require "object_identifier/core_ext/big_decimal"
10
+ require "core_ext/object"
11
+ require "core_ext/string"
12
+ require "core_ext/symbol"
13
+ require "core_ext/big_decimal"
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ObjectIdentifier
4
+ # ObjectIdentifier::Identifier manages construction of the inspect String.
2
5
  class Identifier
3
- NO_OBJECTS_INDICATOR = "[no objects]".freeze
6
+ NO_OBJECTS_INDICATOR = "[no objects]"
4
7
 
5
8
  # Class method for constructing a self-identifying string for any given
6
9
  # object or collection of objects.
@@ -26,8 +29,10 @@ module ObjectIdentifier
26
29
  # OpenStruct.new(a: 1, b: '2', c: :"3"), :a, :b, :c)
27
30
  # # => "OpenStruct[a:1, b:\"2\", c::\"3\"]"
28
31
  #
29
- # ObjectIdentifier::Identifier.identify(1, :to_s) # => "Integer[to_s:\"1\"]"
30
- # ObjectIdentifier::Identifier.identify(nil) # => "[no objects]"
32
+ # ObjectIdentifier::Identifier.identify(1, :to_s)
33
+ # # => "Integer[to_s:\"1\"]"
34
+ # ObjectIdentifier::Identifier.identify(nil)
35
+ # # => "[no objects]"
31
36
  #
32
37
  # ObjectIdentifier::Identifier.identify(%w(1 2), :to_i, :to_f)
33
38
  # # => "String[to_i:1, to_f:1.0], String[to_i:2, to_f:2.0]"
@@ -39,7 +44,7 @@ module ObjectIdentifier
39
44
  end
40
45
 
41
46
  def initialize(objects, *args, limit: nil, klass: :not_given)
42
- @objects = Array(objects)
47
+ @objects = ArrayWrap.call(objects)
43
48
  @attributes = args.empty? ? [:id] : args
44
49
  @limit = (limit || @objects.size).to_i
45
50
  @klass = klass
@@ -59,15 +64,13 @@ module ObjectIdentifier
59
64
  end
60
65
  end
61
66
 
62
- private
67
+ private
63
68
 
64
69
  def format_multiple_objects
65
70
  objects =
66
71
  @objects.first(@limit).map { |obj| format(obj) }
67
72
 
68
- if truncated?
69
- objects << "... (#{truncated_objects_count} more)"
70
- end
73
+ objects << "... (#{truncated_objects_count} more)" if truncated?
71
74
 
72
75
  objects.join(", ")
73
76
  end
@@ -87,9 +90,17 @@ module ObjectIdentifier
87
90
  def format_attributes(attributes_hash)
88
91
  return if attributes_hash.empty?
89
92
 
90
- attributes_hash.map { |(key, value)|
91
- "#{key}:#{value.inspect_lit}"
92
- }.join(", ")
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
93
104
  end
94
105
 
95
106
  # @return [Hash]
@@ -97,6 +108,8 @@ module ObjectIdentifier
97
108
  @attributes.each_with_object({}) { |key, acc|
98
109
  if object.respond_to?(key, :include_private)
99
110
  acc[key] = object.send(key)
111
+ elsif key.to_s.start_with?("@")
112
+ acc[key] = object.instance_variable_get(key)
100
113
  end
101
114
  }
102
115
  end
@@ -126,7 +139,23 @@ module ObjectIdentifier
126
139
  end
127
140
 
128
141
  def truncated?
129
- truncated_objects_count > 0
142
+ truncated_objects_count.positive?
143
+ end
144
+
145
+ # ObjectIdentifier::Identifier::ArrayWrap mirrors the implementation of
146
+ # Rails' {Array.wrap} method. This allows us to get around objects that
147
+ # respond to `to_a` (such as Struct) and, instead, utilize either `to_ary`
148
+ # or just actually wrapping the object in an Array.
149
+ class ArrayWrap
150
+ def self.call(object)
151
+ if object.nil?
152
+ []
153
+ elsif object.respond_to?(:to_ary)
154
+ object.to_ary || [object]
155
+ else
156
+ [object]
157
+ end
158
+ end
130
159
  end
131
160
  end
132
161
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ObjectIdentifier
2
- VERSION = "0.1.0"
4
+ VERSION = "0.4.0"
3
5
  end
@@ -1,4 +1,6 @@
1
- lib = File.expand_path("../lib", __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path("lib", __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require "object_identifier/version"
4
6
 
@@ -7,9 +9,10 @@ Gem::Specification.new do |spec|
7
9
  spec.version = ObjectIdentifier::VERSION
8
10
  spec.authors = ["Paul Dobbins", "Evan Sherwood"]
9
11
  spec.email = ["paul.dobbins@icloud.com"]
12
+ spec.required_ruby_version = ">= 2.4.0"
10
13
 
11
- spec.summary = %q{ObjectIdentifier identifies an object by its class name and attributes.}
12
- spec.description = %q{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 quickly logging, sending descriptive notification messages, etc.}
14
+ spec.summary = "ObjectIdentifier identifies an object by its class name and attributes."
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."
13
16
  spec.homepage = "https://github.com/pdobb/object_identifier"
14
17
  spec.license = "MIT"
15
18
 
@@ -29,12 +32,14 @@ Gem::Specification.new do |spec|
29
32
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
33
  spec.require_paths = ["lib"]
31
34
 
32
- spec.add_development_dependency "bundler", "~> 1.16"
33
- spec.add_development_dependency "rake", "~> 10.0"
34
- spec.add_development_dependency "minitest", "~> 5.0"
35
- spec.add_development_dependency "minitest-reporters", "~> 1.2"
36
- spec.add_development_dependency "simplecov", "~> 0.16"
37
- spec.add_development_dependency "byebug", "~> 10.0"
38
- spec.add_development_dependency "pry", "~> 0.11"
39
- spec.add_development_dependency "pry-byebug", "~> 3.6"
35
+ spec.add_development_dependency "bundler"
36
+ spec.add_development_dependency "byebug"
37
+ spec.add_development_dependency "minitest"
38
+ spec.add_development_dependency "minitest-reporters"
39
+ spec.add_development_dependency "pry"
40
+ spec.add_development_dependency "pry-byebug"
41
+ spec.add_development_dependency "rake"
42
+ spec.add_development_dependency "reek"
43
+ spec.add_development_dependency "rubocop"
44
+ spec.add_development_dependency "simplecov"
40
45
  end
metadata CHANGED
@@ -1,131 +1,159 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: object_identifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Dobbins
8
8
  - Evan Sherwood
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-04-14 00:00:00.000000000 Z
12
+ date: 2020-09-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '1.16'
20
+ version: '0'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '1.16'
27
+ version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: rake
29
+ name: byebug
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '10.0'
34
+ version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '10.0'
41
+ version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: minitest
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '5.0'
48
+ version: '0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '5.0'
55
+ version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: minitest-reporters
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "~>"
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: '1.2'
62
+ version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - "~>"
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: '1.2'
69
+ version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
- name: simplecov
71
+ name: pry
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - "~>"
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: '0.16'
76
+ version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - "~>"
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: '0.16'
83
+ version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
- name: byebug
85
+ name: pry-byebug
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - "~>"
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
- version: '10.0'
90
+ version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - "~>"
95
+ - - ">="
96
96
  - !ruby/object:Gem::Version
97
- version: '10.0'
97
+ version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
- name: pry
99
+ name: rake
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - "~>"
102
+ - - ">="
103
103
  - !ruby/object:Gem::Version
104
- version: '0.11'
104
+ version: '0'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - "~>"
109
+ - - ">="
110
110
  - !ruby/object:Gem::Version
111
- version: '0.11'
111
+ version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
- name: pry-byebug
113
+ name: reek
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - "~>"
116
+ - - ">="
117
117
  - !ruby/object:Gem::Version
118
- version: '3.6'
118
+ version: '0'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - "~>"
123
+ - - ">="
124
124
  - !ruby/object:Gem::Version
125
- version: '3.6'
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rubocop
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: simplecov
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
126
154
  description: Object Identifier allows quick, easy, and uniform identification of an
127
155
  object by inspecting its class name and outputting any desirable attributes/methods.
128
- It is great for quickly logging, sending descriptive notification messages, etc.
156
+ It is great for logging, sending descriptive notification messages, etc.
129
157
  email:
130
158
  - paul.dobbins@icloud.com
131
159
  executables: []
@@ -133,6 +161,8 @@ extensions: []
133
161
  extra_rdoc_files: []
134
162
  files:
135
163
  - ".gitignore"
164
+ - ".rubocop"
165
+ - ".rubocop.yml"
136
166
  - ".travis.yml"
137
167
  - CHANGELOG.md
138
168
  - Gemfile
@@ -142,11 +172,11 @@ files:
142
172
  - Rakefile
143
173
  - bin/console
144
174
  - bin/setup
175
+ - lib/core_ext/big_decimal.rb
176
+ - lib/core_ext/object.rb
177
+ - lib/core_ext/string.rb
178
+ - lib/core_ext/symbol.rb
145
179
  - lib/object_identifier.rb
146
- - lib/object_identifier/core_ext/big_decimal.rb
147
- - lib/object_identifier/core_ext/object.rb
148
- - lib/object_identifier/core_ext/string.rb
149
- - lib/object_identifier/core_ext/symbol.rb
150
180
  - lib/object_identifier/identifier.rb
151
181
  - lib/object_identifier/version.rb
152
182
  - object_identifier.gemspec
@@ -154,7 +184,7 @@ homepage: https://github.com/pdobb/object_identifier
154
184
  licenses:
155
185
  - MIT
156
186
  metadata: {}
157
- post_install_message:
187
+ post_install_message:
158
188
  rdoc_options: []
159
189
  require_paths:
160
190
  - lib
@@ -162,16 +192,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
192
  requirements:
163
193
  - - ">="
164
194
  - !ruby/object:Gem::Version
165
- version: '0'
195
+ version: 2.4.0
166
196
  required_rubygems_version: !ruby/object:Gem::Requirement
167
197
  requirements:
168
198
  - - ">="
169
199
  - !ruby/object:Gem::Version
170
200
  version: '0'
171
201
  requirements: []
172
- rubyforge_project:
173
- rubygems_version: 2.7.6
174
- signing_key:
202
+ rubygems_version: 3.1.4
203
+ signing_key:
175
204
  specification_version: 4
176
205
  summary: ObjectIdentifier identifies an object by its class name and attributes.
177
206
  test_files: []