source_locator 0.0.2 → 0.0.3
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.
- data/bin/showme +17 -3
- data/lib/source_locator/class_loader.rb +29 -0
- data/lib/source_locator/dictionary.rb +4 -19
- data/lib/source_locator/version.rb +1 -1
- metadata +41 -22
data/bin/showme
CHANGED
@@ -2,10 +2,24 @@
|
|
2
2
|
|
3
3
|
require 'source_locator'
|
4
4
|
|
5
|
-
|
5
|
+
rails_env_file = File.join(Dir.pwd, 'config', 'environment.rb')
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
if File.exists? rails_env_file
|
8
|
+
puts "Loading Rails env..."
|
9
|
+
require rails_env_file
|
10
|
+
end
|
11
|
+
|
12
|
+
if defined? Rails
|
13
|
+
puts "Rails loaded."
|
14
|
+
puts "Loading classes from the Rails app..."
|
15
|
+
Rails.application.eager_load!
|
16
|
+
puts "Done."
|
17
|
+
end
|
18
|
+
|
19
|
+
class_loader = SourceLocator::ClassLoader.new
|
20
|
+
data = class_loader.build
|
21
|
+
|
22
|
+
storage = SourceLocator::Dictionary.new data
|
9
23
|
|
10
24
|
locater = SourceLocator::Locater.new(storage, ARGV[0])
|
11
25
|
results = locater.find
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module SourceLocator
|
2
|
+
class ClassLoader
|
3
|
+
|
4
|
+
def build
|
5
|
+
h = Hash.new
|
6
|
+
|
7
|
+
all_classes.map do |c|
|
8
|
+
c.instance_methods.each do |m|
|
9
|
+
h[m] ||= []
|
10
|
+
s = c.instance_method(m).source_location
|
11
|
+
h[m] << s if s
|
12
|
+
end
|
13
|
+
|
14
|
+
c.public_methods.each do |m|
|
15
|
+
h[m] ||= []
|
16
|
+
s = c.method(m).source_location
|
17
|
+
h[m] << s if s
|
18
|
+
end
|
19
|
+
end
|
20
|
+
h
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
def all_classes
|
25
|
+
Object.constants.map {|c| Object.const_get(c)}.select {|c| c.is_a? Class}
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -1,29 +1,14 @@
|
|
1
1
|
module SourceLocator
|
2
2
|
class Dictionary
|
3
|
-
def
|
4
|
-
|
5
|
-
end
|
6
|
-
|
7
|
-
def build
|
8
|
-
@dict = {}
|
9
|
-
all_classes.map{ |c|
|
10
|
-
c.instance_methods.each do |m|
|
11
|
-
@dict[m] ||= []
|
12
|
-
s = c.instance_method(m).source_location
|
13
|
-
@dict[m] << s if s
|
14
|
-
end
|
15
|
-
|
16
|
-
c.public_methods.each do |m|
|
17
|
-
@dict[m] ||= []
|
18
|
-
s = c.method(m).source_location
|
19
|
-
@dict[m] << s if s
|
20
|
-
end
|
21
|
-
}
|
3
|
+
def initialize(data)
|
4
|
+
@dict = data
|
22
5
|
end
|
23
6
|
|
24
7
|
def find(method)
|
25
8
|
@dict[method.to_sym]
|
26
9
|
end
|
27
10
|
|
11
|
+
def export
|
12
|
+
end
|
28
13
|
end
|
29
14
|
end
|
metadata
CHANGED
@@ -1,24 +1,33 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: source_locator
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Unnikrishnan KP
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
17
|
+
|
18
|
+
date: 2012-11-18 00:00:00 Z
|
13
19
|
dependencies: []
|
20
|
+
|
14
21
|
description: Source code locater
|
15
|
-
email:
|
22
|
+
email:
|
16
23
|
- unni.tallman@gmail.com
|
17
|
-
executables:
|
24
|
+
executables:
|
18
25
|
- showme
|
19
26
|
extensions: []
|
27
|
+
|
20
28
|
extra_rdoc_files: []
|
21
|
-
|
29
|
+
|
30
|
+
files:
|
22
31
|
- .gitignore
|
23
32
|
- Gemfile
|
24
33
|
- LICENSE
|
@@ -27,34 +36,44 @@ files:
|
|
27
36
|
- bin/showme
|
28
37
|
- lib/LICENSE
|
29
38
|
- lib/source_locator.rb
|
39
|
+
- lib/source_locator/class_loader.rb
|
30
40
|
- lib/source_locator/dictionary.rb
|
31
41
|
- lib/source_locator/editors/sublime_text.rb
|
32
42
|
- lib/source_locator/locater.rb
|
33
43
|
- lib/source_locator/version.rb
|
34
44
|
- source_locator.gemspec
|
35
|
-
homepage:
|
45
|
+
homepage: ""
|
36
46
|
licenses: []
|
47
|
+
|
37
48
|
post_install_message:
|
38
49
|
rdoc_options: []
|
39
|
-
|
50
|
+
|
51
|
+
require_paths:
|
40
52
|
- lib
|
41
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
42
54
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
|
47
|
-
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
63
|
none: false
|
49
|
-
requirements:
|
50
|
-
- -
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
hash: 3
|
68
|
+
segments:
|
69
|
+
- 0
|
70
|
+
version: "0"
|
53
71
|
requirements: []
|
72
|
+
|
54
73
|
rubyforge_project:
|
55
|
-
rubygems_version: 1.8.
|
74
|
+
rubygems_version: 1.8.24
|
56
75
|
signing_key:
|
57
76
|
specification_version: 3
|
58
77
|
summary: Source code locater
|
59
78
|
test_files: []
|
60
|
-
|
79
|
+
|