where_is 0.3.1 → 0.3.2

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
  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