where_is 0.3.1 → 0.3.2

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
  SHA1:
3
- metadata.gz: 081429ac13b2f3e5ff923da95306900535c0ec39
4
- data.tar.gz: 08b00b6d0696e13ffcf09be13fd68ace84aa350d
3
+ metadata.gz: b4c855bcddc4646e2e9d75948b465b5c411a9400
4
+ data.tar.gz: e9fdf1137a464bf2b0dabf9e49aae76efcb067e7
5
5
  SHA512:
6
- metadata.gz: 422ceefba0193373a6016311b0e504ca081d084c87d4e8ceb7e4e790615d725eb75da1de33c97e96fa3601df12fe954fa0241ec0a769c3b9dbbc1588580fd88d
7
- data.tar.gz: e962135912c48d7f22b2bafc9215012e8bf56089b30254edfe3e656e8ebc1ccd8794ee349d3321a32167b2c5ca57cc766dde908d810462cd6d7c92c2517c4fb9
6
+ metadata.gz: 4d3cff0fd27d01e9d0050a8807f940f534e8f4068a9fd6afdc15495aa00819aa102f01426f4d8366a0a02e4f607a463709a78dc20d5a449ef1d85e0fc6e43cb9
7
+ data.tar.gz: 3c78c4e6b42232cb3e3c6d4b00da77417b652009c6460e115aef7a9aeb302e83a2bb516e7c765398fe326dd4e245bde9b14cc6e30bc81abc11157c08043ba731
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://travis-ci.org/daveallie/where_is.svg?branch=master)](https://travis-ci.org/daveallie/where_is)
2
+
1
3
  # Where Is
2
4
 
3
5
  Gem based on https://gist.github.com/wtaysom/1236979.
@@ -1,3 +1,3 @@
1
1
  module Where
2
- VERSION = '0.3.1'.freeze
2
+ VERSION = '0.3.2'.freeze
3
3
  end
data/lib/where_is.rb CHANGED
@@ -3,15 +3,7 @@ require 'where_is/version'
3
3
  module Where
4
4
  class << self
5
5
  def is(klass, method = nil)
6
- if method
7
- begin
8
- Where.is_instance_method(klass, method)
9
- rescue NameError
10
- Where.is_method(klass, method)
11
- end
12
- else
13
- Where.is_class_primarily(klass)
14
- end
6
+ are(klass, method)[0]
15
7
  end
16
8
 
17
9
  def are(klass, method = nil)
@@ -31,54 +23,61 @@ module Where
31
23
  end
32
24
 
33
25
  def is_method(klass, method_name)
34
- source_location(klass.method(method_name))
26
+ are_methods(klass, method_name)[0]
35
27
  end
36
28
 
37
29
  def is_instance_method(klass, method_name)
38
- source_location(klass.instance_method(method_name))
30
+ are_instance_methods(klass, method_name)[0]
39
31
  end
40
32
 
41
33
  def are_methods(klass, method_name)
42
- methods = are_via_extractor(:method, klass, method_name)
34
+ ensured_class = ensure_class(klass)
35
+ methods = are_via_extractor(:method, ensured_class, method_name)
43
36
  source_locations = group_and_combine_source_locations(methods)
44
37
 
45
38
  if source_locations.empty?
46
- raise NameError, "#{klass} has no methods called #{method_name}"
39
+ raise NameError, "#{ensured_class} has no methods called #{method_name}"
47
40
  end
48
41
 
49
42
  source_locations
50
43
  end
51
44
 
52
45
  def are_instance_methods(klass, method_name)
53
- methods = are_via_extractor(:instance_method, klass, method_name)
46
+ ensured_class = ensure_class(klass)
47
+ methods = are_via_extractor(:instance_method, ensured_class, method_name)
54
48
  source_locations = group_and_combine_source_locations(methods)
55
49
 
56
50
  if source_locations.empty?
57
- raise NameError, "#{klass} has no methods called #{method_name}"
51
+ raise NameError, "#{ensured_class} has no methods called #{method_name}"
58
52
  end
59
53
 
60
54
  source_locations
61
55
  end
62
56
 
57
+ def is_class_primarily(klass)
58
+ is_class(klass)[0]
59
+ end
60
+
63
61
  def is_class(klass)
64
- methods = defined_methods(klass)
62
+ ensured_class = ensure_class(klass)
63
+ methods = defined_methods(ensured_class)
65
64
  source_locations = group_and_combine_source_locations(methods)
66
65
 
67
66
  if source_locations.empty?
68
- raise NameError, "#{klass} has no methods" if methods.empty?
69
- raise NameError, "#{klass} only has built-in methods " \
67
+ raise NameError, "#{ensured_class} has no methods" if methods.empty?
68
+ raise NameError, "#{ensured_class} only has built-in methods " \
70
69
  "(#{methods.size} in total)"
71
70
  end
72
71
 
73
72
  source_locations
74
73
  end
75
74
 
76
- def is_class_primarily(klass)
77
- is_class(klass)[0]
78
- end
79
-
80
75
  private
81
76
 
77
+ def ensure_class(klass)
78
+ [Class, Module].include?(klass.class) ? klass : klass.class
79
+ end
80
+
82
81
  def source_location(method)
83
82
  source_location = method.source_location
84
83
  source_location = [method.to_s[/: (.*)>/, 1]] if source_location.nil?
@@ -105,7 +104,6 @@ module Where
105
104
  end
106
105
 
107
106
  def are_via_extractor(extractor, klass, method_name)
108
- klass = klass.class unless [Class, Module].include?(klass.class)
109
107
  klass.ancestors.map do |ancestor|
110
108
  begin
111
109
  source_location(ancestor.send(extractor, method_name))
@@ -124,7 +122,7 @@ module Where
124
122
  end
125
123
 
126
124
  def build_location_hash(file, line)
127
- { file: file, line: line, path: "#{file}:#{line}" }
125
+ { file: file, line: line, path: [file, line].compact.join(':') }
128
126
  end
129
127
  end
130
128
  end
data/where_is.gemspec CHANGED
@@ -15,14 +15,14 @@ Gem::Specification.new do |spec|
15
15
  spec.homepage = 'https://github.com/daveallie/where_is'
16
16
  spec.license = 'MIT'
17
17
 
18
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
- f.match(%r{^(test|spec|features)/})
20
- end
18
+ spec.files = Dir['lib/**/*'] + %w[CODE_OF_CONDUCT.md LICENSE.txt
19
+ README.md Gemfile where_is.gemspec]
21
20
  spec.bindir = 'exe'
22
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
22
  spec.require_paths = ['lib']
24
23
 
25
24
  spec.add_development_dependency 'bundler', '~> 1.13'
26
25
  spec.add_development_dependency 'rake', '~> 10.0'
27
- spec.add_development_dependency 'rubocop', '~> 0.53.0'
26
+ spec.add_development_dependency 'rspec', '~> 3.0'
27
+ spec.add_development_dependency 'rubocop', '~> 0.56.0'
28
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: where_is
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dave Allie
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-07 00:00:00.000000000 Z
11
+ date: 2018-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,20 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rubocop
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: 0.53.0
61
+ version: 0.56.0
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: 0.53.0
68
+ version: 0.56.0
55
69
  description: A little Ruby gem for finding the source location where class and methods
56
70
  are defined.
57
71
  email:
@@ -60,15 +74,10 @@ executables: []
60
74
  extensions: []
61
75
  extra_rdoc_files: []
62
76
  files:
63
- - ".gitignore"
64
- - ".rubocop.yml"
65
77
  - CODE_OF_CONDUCT.md
66
78
  - Gemfile
67
79
  - LICENSE.txt
68
80
  - README.md
69
- - Rakefile
70
- - bin/console
71
- - bin/setup
72
81
  - lib/where_is.rb
73
82
  - lib/where_is/version.rb
74
83
  - where_is.gemspec
data/.gitignore DELETED
@@ -1,10 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.gem
data/.rubocop.yml DELETED
@@ -1,8 +0,0 @@
1
- AllCops:
2
- DisplayCopNames: true
3
-
4
- Naming/PredicateName:
5
- Enabled: false
6
-
7
- Style/Documentation:
8
- Enabled: false
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require 'bundler/gem_tasks'
2
- require 'rubocop/rake_task'
3
-
4
- task default: :rubocop
5
-
6
- RuboCop::RakeTask.new(:rubocop)
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'bundler/setup'
4
- require 'where_is'
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require 'irb'
14
- IRB.start
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here