methodfinder 2.2.1 → 2.2.4

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: cc5f10019d05bf88ecadc9ef8f753c8fb24bae5b964e15823eb6235c50ca96f6
4
- data.tar.gz: bd20ac80dfa26324d3041ad3d0dfca0b2cc15a632f7fff37a285c1fa3663698d
3
+ metadata.gz: 60a53dfb0ed92260ece6d823b14bf913ce8c1ccc5cedaca06a4d657959e17c7f
4
+ data.tar.gz: de867f859a3131529bb476f79edb0a2fd613279575f2f6218f0d02102d277137
5
5
  SHA512:
6
- metadata.gz: d1c21e4002be10b889ea23d70d16dde3db53e73bf42926f71882fa740a51f0391339eb8e43d42c44c7e692fd8faddb339bb3f07ad2100ef397bd0f4399887775
7
- data.tar.gz: 599bf95909d58aeb601dc45bd8d3a2ba316a041c550fe2f20aacabe544189d27e35bafe93c10daebcaf37e385cb7e8f561d61ac06f12e699535128f39a452cf1
6
+ metadata.gz: 45c69e28874c5fe6eb8d20a442f74b44b5d91f1605f54bbcb930b0073fbf2a16942a708d57a11e15837c6c0eb2573bf7c7744a72743281ebbcd6219a254b29d8
7
+ data.tar.gz: 36907469a0fc84a5b6688642dd78d70b1f2c397f3b5693df2c63aa4579fc86fcf3c74119b873a536d30dc7514dcbfb873b4b98dd23bc0f02cdce846bb5fd785b
@@ -17,4 +17,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
17
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
18
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  THE SOFTWARE.
20
-
data/README.md CHANGED
@@ -1,35 +1,76 @@
1
1
  # MethodFinder
2
2
 
3
- [![Build Status](https://travis-ci.org/citizen428/methodfinder.svg)](https://travis-ci.org/citizen428/methodfinder)
3
+ ![Build](https://github.com/citizen428/methodfinder/workflows/Build/badge.svg)
4
4
  [![Gem Version](https://img.shields.io/gem/v/methodfinder.svg)](https://rubygems.org/gems/methodfinder)
5
5
 
6
- <!-- START doctoc generated TOC please keep comment here to allow auto update -->
7
- <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
6
+ <!-- toc -->
8
7
 
9
- - [Requirements](#requirements)
10
- - [Usage](#usage)
8
+ - [NAME](#name)
9
+ - [INSTALLATION](#installation)
10
+ - [SYNOPSIS](#synopsis)
11
+ - [DESCRIPTION](#description)
12
+ - [Warning](#warning)
13
+ - [API](#api)
11
14
  - [MethodFinder.find](#methodfinderfind)
12
15
  - [Object#find_method](#objectfind_method)
13
- - [Blacklists](#blacklists)
16
+ - [Ignorelists](#ignorelists)
14
17
  - [MethodFinder.find_classes_and_modules](#methodfinderfind_classes_and_modules)
15
18
  - [MethodFinder.find_in_class_or_module](#methodfinderfind_in_class_or_module)
16
- - [Troubleshooting](#troubleshooting)
17
- - [Warning](#warning)
18
- - [Thanks](#thanks)
19
- - [License](#license)
19
+ - [TROUBLESHOOTING](#troubleshooting)
20
+ - [DEVELOPMENT](#development)
21
+ - [CONTRIBUTING](#contributing)
22
+ - [SEE ALSO](#see-also)
23
+ - [Gems](#gems)
24
+ - [Misc](#misc)
25
+ - [VERSION](#version)
26
+ - [AUTHOR](#author)
27
+ - [LICENSE](#license)
20
28
 
21
- <!-- END doctoc generated TOC please keep comment here to allow auto update -->
29
+ <!-- tocstop -->
22
30
 
23
- This project was originally inspired by Smalltalk's Method Finder, but
24
- additional features were added over time.
31
+ ## NAME
25
32
 
26
- ## Requirements
33
+ MethodFinder - a Smalltalk-like Method Finder for Ruby
27
34
 
28
- Ruby 1.9.3+ (also works with Rubinius in 1.9 mode). Versions of `MethodFinder`
29
- up to 1.2.5 will also work with Ruby 1.8.7. Note: CI only runs newer versions
30
- of Ruby.
35
+ ## INSTALLATION
31
36
 
32
- ## Usage
37
+ $ gem install methodfinder
38
+
39
+ ## SYNOPSIS
40
+
41
+ ```ruby
42
+ Welcome to IRB. # or Pry
43
+
44
+ >> 'Hello, world!'.find_method('HELLO, WORLD!')
45
+ #=> ["String#upcase", "String#upcase!"]
46
+
47
+ >> %w[a b c].find_method('c')
48
+ #=> ["Array#last", "Array#max", "Array#pop"]
49
+
50
+ >> %w[a b c].find_method { |it| it.unknown(2); it == %w[c] }
51
+ #=> ["Array#shift"]
52
+ ```
53
+
54
+ ## DESCRIPTION
55
+
56
+ A Smalltalk-like Method Finder for Ruby for use in your `~/.irbrc` or
57
+ `~/.pryrc`.
58
+
59
+ This project was originally inspired by Smalltalk's Method
60
+ Finder, but additional features have been added over time.
61
+
62
+ ### Warning
63
+
64
+ Common sense not included!
65
+
66
+ While this gem should generally be safe to use, it's still better to be safe
67
+ than sorry, so use this with caution and maybe not on production data.
68
+
69
+ This was initially written for the students of the core Ruby course on
70
+ [RubyLearning](http://web.archive.org/web/20151218180403/http://rubylearning.org/classes/),
71
+ so it's generally not tested in a Rails console, just plain IRB/Pry.
72
+
73
+ ## API
33
74
 
34
75
  ### MethodFinder.find
35
76
 
@@ -72,19 +113,18 @@ calling `MethodFinder.find`.
72
113
  #=> ["Fixnum#%", "Fixnum#<=>", "Fixnum#>>", "Fixnum#[]", "Integer#gcd", "Fixnum#modulo", "Numeric#remainder"]
73
114
  ```
74
115
 
75
- #### Blacklists
116
+ #### Ignorelists
76
117
 
77
118
  You can exclude methods from being tried by editing the hashes
78
- `MethodFinder::INSTANCE_METHOD_BLACKLIST` and
79
- `MethodFinder::CLASS_METHOD_BLACKLIST`. Both use the class/module as key and
119
+ `MethodFinder::INSTANCE_METHOD_IGNORELIST` and
120
+ `MethodFinder::CLASS_METHOD_IGNORELIST`. Both use the class/module as key and
80
121
  an array of method names as values (note that class, module and method names
81
122
  have to be symbols).
82
123
 
83
- For example, to blacklist the instance method `shutdown` of `Object`, you
84
- would do
124
+ For example, to ignore the instance method `shutdown` of `Object`, you would do
85
125
 
86
126
  ```ruby
87
- MethodFinder::INSTANCE_METHOD_BLACKLIST[:Object] << :shutdown
127
+ MethodFinder::INSTANCE_METHOD_IGNORELIST[:Object] << :shutdown
88
128
  ```
89
129
 
90
130
  This might come in handy when using `MethodFinder` together with other gems as
@@ -120,11 +160,11 @@ MethodFinder.find_in_class_or_module(Math)
120
160
  #=> [:acos, :acosh, :asin ... :tanh]
121
161
  ```
122
162
 
123
- ## Troubleshooting
163
+ ## TROUBLESHOOTING
124
164
 
125
165
  If the `METHOD_FINDER_DEBUG` environment variable is set, the name of each
126
166
  candidate method is printed to `STDERR` before it is invoked. This can be useful
127
- to identify (and blacklist) misbehaving methods.
167
+ to identify (and consequently ignore) misbehaving methods.
128
168
 
129
169
  It can be set on the command line e.g.:
130
170
 
@@ -138,49 +178,42 @@ Or you can toggle it inside IRB/Pry:
138
178
  >> MethodFinder.toggle_debug!
139
179
  ```
140
180
 
141
- ## Warning
181
+ ## DEVELOPMENT
142
182
 
143
- Common sense not included!
183
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run
184
+ `rake test` to run the tests. You can also run `bin/console` for an interactive
185
+ prompt that will allow you to experiment.
186
+
187
+ To install this gem onto your local machine, run `bundle exec rake install`. To
188
+ release a new version, update the version number in `version.rb`, and then run
189
+ `bundle exec rake release`, which will create a git tag for the version, push
190
+ git commits and tags, and push the `.gem` file to
191
+ [rubygems.org](https://rubygems.org).
192
+
193
+ ## CONTRIBUTING
194
+
195
+ Bug reports and pull requests are welcome on GitHub at
196
+ https://github.com/citizen428/methodfinder.
197
+
198
+ ## SEE ALSO
199
+
200
+ ### Gems
201
+
202
+ - [irbtools](https://github.com/janlelis/irbtools) - improvements for Ruby's IRB console (includes methodfinder)
203
+
204
+ ### Misc
205
+
206
+ - [Other Implementations](https://github.com/citizen428/methodfinder/wiki/Other-Implementations) - a list of related projects in Ruby and other languages
207
+
208
+ ## VERSION
209
+
210
+ 2.2.4
211
+
212
+ ## AUTHOR
213
+
214
+ - [Michael Kohl](https://github.com/citizen428)
215
+
216
+ ## LICENSE
144
217
 
145
- While I never had any problems with this, it's still better to be safe than
146
- sorry, so use this with caution and maybe not on production data.
147
-
148
- I initially wrote this for the students of the core Ruby course on
149
- [RubyLearning](http://rubylearning.org), so Rails is not of interest to me (not
150
- saying it doesn't work there, just that I test in plain IRB/Pry and not with
151
- the Rails console.
152
-
153
- ## Thanks
154
-
155
- * [Matthew Lucas](https://github.com/lucas-matt) for [first packaging this as a gem](https://github.com/citizen428/methodfinder/pull/1).
156
- * [Ryan Bates](https://github.com/ryanb) for [suggesting](https://github.com/citizen428/methodfinder/issues/closed#issue/3)
157
- what eventually became `Object#find_method`.
158
- * [Jan Lelis](https://github.com/janlelis) for [implementing blacklists](https://github.com/citizen428/methodfinder/issues/closed#issue/4).
159
- * [Brian Morearty](https://github.com/BMorearty) for pointing out an [incompatibility with Ruby 1.8.7](https://github.com/citizen428/methodfinder/pull/5)
160
- and adding the [blockless version](https://github.com/citizen428/methodfinder/pull/6)
161
- of `Object#find_method`.
162
- * [Stefan Kanev](https://github.com/skanev) for [adding Pry support](https://github.com/citizen428/methodfinder/pull/7).
163
- * [chocolateboy](https://github.com/chocolateboy) for [compatibility fixes and updates](https://github.com/citizen428/methodfinder/pull/8),
164
- [the initial debug implementation](https://github.com/citizen428/methodfinder/pull/9), and [many smaller fixes](https://github.com/citizen428/methodfinder/pulls?utf8=✓&q=is%3Apr+author%3Achocolateboy).
165
-
166
- ## License
167
-
168
- Copyright (c) 2011-2018 Michael Kohl
169
-
170
- Permission is hereby granted, free of charge, to any person obtaining a copy
171
- of this software and associated documentation files (the "Software"), to deal
172
- in the Software without restriction, including without limitation the rights
173
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
174
- copies of the Software, and to permit persons to whom the Software is
175
- furnished to do so, subject to the following conditions:
176
-
177
- The above copyright notice and this permission notice shall be included in all
178
- copies or substantial portions of the Software.
179
-
180
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
181
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
182
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
183
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
184
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
185
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
186
- SOFTWARE.
218
+ The gem is available as open source under the terms of the [MIT
219
+ License](https://opensource.org/licenses/MIT).
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MethodFinder
4
- VERSION = '2.2.1'
4
+ VERSION = '2.2.4'
5
5
  end
data/lib/methodfinder.rb CHANGED
@@ -24,6 +24,7 @@ class Object
24
24
  # #=> ["Fixnum#%", "Fixnum#<=>", "Fixnum#>>", ...]
25
25
  def find_method(*args, &block)
26
26
  return MethodFinder.find(self, *args) unless block_given?
27
+
27
28
  MethodFinder.find_unknown(self, &block)
28
29
  end
29
30
  end
@@ -32,28 +33,41 @@ module MethodFinder
32
33
  # Default arguments for methods
33
34
  # :nodoc:
34
35
  ARGS = {
35
- cycle: [1] # prevent cycling forever
36
+ cycle: [1], # prevent cycling forever
37
+ tally: [], # Since Ruby 3.1 Enumberable tally takes an optional hash
36
38
  }.freeze
37
39
 
38
- # Blacklisting methods, e.g. { :Object => [:ri, :vim] }
39
- INSTANCE_METHOD_BLACKLIST = Hash.new { |h, k| h[k] = [] }
40
- # Blacklisting class methods
41
- CLASS_METHOD_BLACKLIST = Hash.new { |h, k| h[k] = [] }
40
+ # Ignoring methods, e.g. { :Object => [:ri, :vim] }
41
+ INSTANCE_METHOD_IGNORELIST = Hash.new { |h, k| h[k] = [] }
42
+ # Ignoring class methods
43
+ CLASS_METHOD_IGNORELIST = Hash.new { |h, k| h[k] = [] }
44
+ # IGNORING classes
45
+ CLASS_IGNORELIST = []
46
+
47
+ if RUBY_VERSION.start_with?('3')
48
+ CLASS_IGNORELIST << :SortedSet # this moved to a gem
49
+ end
42
50
 
43
- INSTANCE_METHOD_BLACKLIST[:Object] << :find_method # prevent stack overflow
44
- INSTANCE_METHOD_BLACKLIST[:Object] << :gem # funny testing stuff w/ Bundler
51
+ INSTANCE_METHOD_IGNORELIST[:Object] << :find_method # prevent stack overflow
52
+ INSTANCE_METHOD_IGNORELIST[:Object] << :gem # funny testing stuff w/ Bundler
45
53
 
46
54
  if defined?(Pry)
47
- INSTANCE_METHOD_BLACKLIST[:Object] << :pry
48
- CLASS_METHOD_BLACKLIST[:Object] << :pry
55
+ INSTANCE_METHOD_IGNORELIST[:Object] << :pry
56
+ CLASS_METHOD_IGNORELIST[:Object] << :pry
49
57
  end
50
58
 
51
- @debug = ENV['METHOD_FINDER_DEBUG']
59
+ # true if METHOD_FINDER_DEBUG is truthy, false otherwise e.g.:
60
+ #
61
+ # $ METHOD_FINDER_DEBUG=1 irb # true
62
+ # $ METHOD_FINDER_DEBUG=0 irb # false
63
+ # $ METHOD_FINDER_DEBUG=false irb # false
64
+ # $ METHOD_FINDER_DEBUG= irb # false
65
+ @debug = !ENV.fetch('METHOD_FINDER_DEBUG', '').match?(/\A(0|false)?\z/i)
52
66
 
53
- # Checkes whether or not debugging is currently enabled
67
+ # Checks whether or not debugging is currently enabled
54
68
  # :doc:
55
69
  def self.debug?
56
- !!(@debug)
70
+ @debug
57
71
  end
58
72
 
59
73
  # Toggles the debug mode
@@ -76,20 +90,32 @@ module MethodFinder
76
90
  # #=> ["Array#collect", "Array#collect!", "Enumerable#collect_concat", ...]
77
91
  def self.find(obj, res, *args, &block)
78
92
  find_methods(obj) do |met|
79
- o = obj.dup rescue obj
93
+ o = begin
94
+ obj.dup
95
+ rescue StandardError
96
+ obj
97
+ end
80
98
  m = o.method(met)
81
99
  next unless m.arity <= args.size
82
- STDERR.puts(met) if debug?
83
- a = args.empty? && ARGS.key?(met) ? ARGS[met] : args
84
- m.call(*a, &block) == res rescue nil
100
+
101
+ warn(met) if debug?
102
+ a = ARGS.key?(met) ? ARGS[met] : args
103
+ begin
104
+ m.call(*a, &block) == res
105
+ rescue StandardError
106
+ nil
107
+ end
85
108
  end
86
109
  end
87
110
 
88
111
  # Returns all currently defined modules and classes.
89
112
  def self.find_classes_and_modules
90
113
  with_redirected_streams do
91
- constants = Object.constants.sort.map { |c| Object.const_get(c) }
92
- constants.select { |c| c.class == Class || c.class == Module }
114
+ candidates = Object.constants - CLASS_IGNORELIST
115
+ constants = candidates.sort.map { |c| Object.const_get(c) }
116
+ constants.select do |c|
117
+ c.instance_of?(Class) || c.instance_of?(Module)
118
+ end
93
119
  end
94
120
  end
95
121
 
@@ -111,7 +137,11 @@ module MethodFinder
111
137
  # :doc:
112
138
  def self.find_in_class_or_module(klass, pattern = /./)
113
139
  klasses = Object.const_get(klass.to_s)
114
- class_methods = klasses.methods(false) rescue []
140
+ class_methods = begin
141
+ klasses.methods(false)
142
+ rescue StandardError
143
+ []
144
+ end
115
145
  instance_methods = klasses.instance_methods(false)
116
146
  all_methods = class_methods + instance_methods
117
147
  all_methods.grep(/#{pattern}/).sort
@@ -120,10 +150,10 @@ module MethodFinder
120
150
  # Returns a list of candidate methods for a given object. Added by Jan Lelis.
121
151
  def self.methods_to_try(obj)
122
152
  ret = obj.methods
123
- blacklist = select_blacklist(obj)
153
+ ignorelist = select_ignorelist(obj)
124
154
  klass = obj.is_a?(Module) ? obj : obj.class
125
155
 
126
- klass.ancestors.each { |ancestor| ret -= blacklist[ancestor.to_s.intern] }
156
+ klass.ancestors.each { |ancestor| ret -= ignorelist[ancestor.to_s.intern] }
127
157
  ret.sort
128
158
  end
129
159
  private_class_method :methods_to_try
@@ -132,16 +162,24 @@ module MethodFinder
132
162
  # :nodoc:
133
163
  def self.find_unknown(obj, &block)
134
164
  find_methods(obj) do |met|
135
- STDERR.puts(met) if debug?
165
+ warn(met) if debug?
136
166
  obj.class.class_eval("alias :unknown #{met}", __FILE__, __LINE__)
137
- subject = obj.dup rescue obj # dup doesn't work for immutable types
138
- block.call(subject) rescue nil
167
+ subject = begin
168
+ obj.dup
169
+ rescue StandardError # dup doesn't work for immutable types
170
+ obj
171
+ end
172
+ begin
173
+ block.call(subject)
174
+ rescue StandardError
175
+ nil
176
+ end
139
177
  end
140
178
  end
141
179
 
142
- def self.find_methods(obj)
180
+ def self.find_methods(obj, &block)
143
181
  with_redirected_streams do
144
- found = methods_to_try(obj).select { |met| yield(met) }
182
+ found = methods_to_try(obj).select(&block)
145
183
  found.map { |m| "#{obj.method(m).owner}##{m}" }
146
184
  end
147
185
  end
@@ -150,8 +188,11 @@ module MethodFinder
150
188
  def self.with_redirected_streams
151
189
  orig_stdout = $stdout
152
190
  orig_stderr = $stderr
153
- $stdout = StringIO.new
154
- $stderr = StringIO.new
191
+
192
+ unless debug?
193
+ $stdout = StringIO.new
194
+ $stderr = StringIO.new
195
+ end
155
196
 
156
197
  yield
157
198
  ensure
@@ -160,8 +201,8 @@ module MethodFinder
160
201
  end
161
202
  private_class_method :with_redirected_streams
162
203
 
163
- def self.select_blacklist(object)
164
- object.is_a?(Module) ? CLASS_METHOD_BLACKLIST : INSTANCE_METHOD_BLACKLIST
204
+ def self.select_ignorelist(object)
205
+ object.is_a?(Module) ? CLASS_METHOD_IGNORELIST : INSTANCE_METHOD_IGNORELIST
165
206
  end
166
- private_class_method :select_blacklist
207
+ private_class_method :select_ignorelist
167
208
  end
metadata CHANGED
@@ -1,30 +1,103 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: methodfinder
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Kohl
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-02 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2022-03-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '13.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '13.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rdoc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '6.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '6.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.22'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.22'
13
83
  description: A Smalltalk-like Method Finder for Ruby with some extra features
14
- email: citizen428@gmail.com
84
+ email:
85
+ - citizen428@gmail.com
15
86
  executables: []
16
87
  extensions: []
17
88
  extra_rdoc_files: []
18
89
  files:
19
- - "./LICENSE"
20
- - "./README.md"
90
+ - LICENSE.txt
91
+ - README.md
21
92
  - lib/methodfinder.rb
22
93
  - lib/methodfinder/version.rb
23
94
  homepage: http://citizen428.github.com/methodfinder/
24
95
  licenses:
25
96
  - MIT
26
- metadata: {}
27
- post_install_message:
97
+ metadata:
98
+ bug_tracker_uri: https://github.com/citizen428/methodfinder/issues
99
+ source_code_uri: https://github.com/citizen428/methodfinder
100
+ post_install_message:
28
101
  rdoc_options: []
29
102
  require_paths:
30
103
  - lib
@@ -32,16 +105,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
32
105
  requirements:
33
106
  - - ">="
34
107
  - !ruby/object:Gem::Version
35
- version: '0'
108
+ version: '2.6'
36
109
  required_rubygems_version: !ruby/object:Gem::Requirement
37
110
  requirements:
38
111
  - - ">="
39
112
  - !ruby/object:Gem::Version
40
113
  version: '0'
41
114
  requirements: []
42
- rubyforge_project:
43
- rubygems_version: 2.7.6
44
- signing_key:
115
+ rubygems_version: 3.3.7
116
+ signing_key:
45
117
  specification_version: 4
46
118
  summary: A Smalltalk-like Method Finder for Ruby
47
119
  test_files: []