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 +4 -4
- data/README.md +2 -0
- data/lib/where_is/version.rb +1 -1
- data/lib/where_is.rb +22 -24
- data/where_is.gemspec +4 -4
- metadata +18 -9
- data/.gitignore +0 -10
- data/.rubocop.yml +0 -8
- data/Rakefile +0 -6
- data/bin/console +0 -14
- data/bin/setup +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4c855bcddc4646e2e9d75948b465b5c411a9400
|
4
|
+
data.tar.gz: e9fdf1137a464bf2b0dabf9e49aae76efcb067e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d3cff0fd27d01e9d0050a8807f940f534e8f4068a9fd6afdc15495aa00819aa102f01426f4d8366a0a02e4f607a463709a78dc20d5a449ef1d85e0fc6e43cb9
|
7
|
+
data.tar.gz: 3c78c4e6b42232cb3e3c6d4b00da77417b652009c6460e115aef7a9aeb302e83a2bb516e7c765398fe326dd4e245bde9b14cc6e30bc81abc11157c08043ba731
|
data/README.md
CHANGED
data/lib/where_is/version.rb
CHANGED
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
|
-
|
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
|
-
|
26
|
+
are_methods(klass, method_name)[0]
|
35
27
|
end
|
36
28
|
|
37
29
|
def is_instance_method(klass, method_name)
|
38
|
-
|
30
|
+
are_instance_methods(klass, method_name)[0]
|
39
31
|
end
|
40
32
|
|
41
33
|
def are_methods(klass, method_name)
|
42
|
-
|
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, "#{
|
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
|
-
|
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, "#{
|
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
|
-
|
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, "#{
|
69
|
-
raise NameError, "#{
|
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:
|
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 =
|
19
|
-
|
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 '
|
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.
|
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-
|
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.
|
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.
|
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
data/.rubocop.yml
DELETED
data/Rakefile
DELETED
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
|