gem-ripper-tags 1.0.1 → 1.0.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.
- data/README.markdown +4 -1
- data/gem-ripper-tags.gemspec +1 -1
- data/lib/rubygems/commands/ripper_tags_command.rb +12 -51
- data/lib/rubygems_plugin.rb +1 -1
- data/rebuild-gems.sh +2 -0
- data/release.sh +9 -0
- metadata +4 -2
data/README.markdown
CHANGED
@@ -17,7 +17,7 @@ Install the thing (only Ruby 1.9+):
|
|
17
17
|
|
18
18
|
Then generate tags for all already installed gems:
|
19
19
|
|
20
|
-
gem
|
20
|
+
gem ripper_tags
|
21
21
|
|
22
22
|
Anytime you install a gem now, tags will be automatically created.
|
23
23
|
|
@@ -27,6 +27,9 @@ If you're using RVM, I recommend extending your global gemset by adding
|
|
27
27
|
`gem-ripper-tags` to `~/.rvm/gemsets/global.gems`. Put it at the top so the
|
28
28
|
gems below it will be indexed.
|
29
29
|
|
30
|
+
You can use the gem even with 1.8 gemsets, but since Ruby 1.8 is not
|
31
|
+
supported, it will (silently) not register the gem hook.
|
32
|
+
|
30
33
|
Motivation
|
31
34
|
----------
|
32
35
|
|
data/gem-ripper-tags.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "gem-ripper-tags"
|
6
|
-
s.version = "1.0.
|
6
|
+
s.version = "1.0.2"
|
7
7
|
s.authors = ["Tim Pope", "Lukas Zapletal"]
|
8
8
|
s.email = ["code@tpop"+'e.net', "lzap+rpm@red"+'hat.com']
|
9
9
|
s.homepage = "https://github.com/lzap/gem-ripper-tags"
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'rubygems/command'
|
2
|
-
require '
|
2
|
+
require 'ripper-tags'
|
3
3
|
|
4
4
|
class Gem::Commands::RipperTagsCommand < Gem::Command
|
5
5
|
def initialize
|
6
|
-
super '
|
6
|
+
super 'ripper_tags', 'Generate ctags for gems with Ruby/Ripper parser'
|
7
7
|
end
|
8
8
|
|
9
9
|
def execute
|
@@ -18,60 +18,21 @@ class Gem::Commands::RipperTagsCommand < Gem::Command
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def self.ctags(paths)
|
22
|
-
# this bit is taken from ripper-tags/bin
|
23
|
-
all_tags = []
|
24
|
-
paths.each do |file|
|
25
|
-
begin
|
26
|
-
if File.directory?(file)
|
27
|
-
Dir.foreach(file){ |f| paths << File.expand_path(File.join(file, f)) if f !~ /^\.\.?/ }
|
28
|
-
next
|
29
|
-
else
|
30
|
-
next if file !~ /\.rb$/
|
31
|
-
data = File.read(file)
|
32
|
-
end
|
33
|
-
sexp = TagRipper.new(data, file).parse
|
34
|
-
v = TagRipper::Visitor.new(sexp, file, data)
|
35
|
-
all_tags += v.tags
|
36
|
-
rescue Exception => e
|
37
|
-
#STDERR.puts "Skipping invalid file #{file}"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
File.open('tags', 'w') do |file|
|
42
|
-
file.puts <<-EOC
|
43
|
-
!_TAG_FILE_FORMAT\t2\t/extended format; --format=1 will not append ;" to lines/
|
44
|
-
!_TAG_FILE_SORTED\t1\t/0=unsorted, 1=sorted, 2=foldcase/
|
45
|
-
EOC
|
46
|
-
|
47
|
-
all_tags.sort_by!{ |t| t[:name] }
|
48
|
-
all_tags.each do |tag|
|
49
|
-
kwargs = ''
|
50
|
-
kwargs << "\tclass:#{tag[:class].gsub('::','.')}" if tag[:class]
|
51
|
-
kwargs << "\tinherits:#{tag[:inherits].gsub('::','.')}" if tag[:inherits]
|
52
|
-
|
53
|
-
kind = case tag[:kind]
|
54
|
-
when 'method' then 'f'
|
55
|
-
when 'singleton method' then 'F'
|
56
|
-
when 'constant' then 'C'
|
57
|
-
else tag[:kind].slice(0,1)
|
58
|
-
end
|
59
|
-
|
60
|
-
code = tag[:pattern].gsub('\\','\\\\\\\\').gsub('/','\\/')
|
61
|
-
file.puts "%s\t%s\t/^%s$/;\"\t%c%s" % [tag[:name], tag[:path], code, kind, kwargs]
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
21
|
def self.index(spec)
|
67
22
|
return unless File.directory?(spec.full_gem_path)
|
68
23
|
|
69
24
|
Dir.chdir(spec.full_gem_path) do
|
70
25
|
|
71
|
-
#
|
72
|
-
|
73
|
-
|
74
|
-
|
26
|
+
# TODO support for full regeneration via param (+ emacs)
|
27
|
+
# http://rubygems.rubyforge.org/rubygems-update/Gem/CommandManager.html
|
28
|
+
#if !File.directory?('tags')
|
29
|
+
if !(File.file?('tags') && File.read('tags', 1) == '!') && !File.directory?('tags')
|
30
|
+
yield "Ripper is generating ctags for #{spec.full_name}" if block_given?
|
31
|
+
options = RipperTags.default_options
|
32
|
+
options.format = "vim"
|
33
|
+
options.recursive = true
|
34
|
+
options.force = true
|
35
|
+
RipperTags.run options
|
75
36
|
end
|
76
37
|
|
77
38
|
target = 'lib/bundler/cli.rb'
|
data/lib/rubygems_plugin.rb
CHANGED
data/rebuild-gems.sh
ADDED
data/release.sh
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem-ripper-tags
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-08-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: ripper-tags
|
@@ -60,6 +60,8 @@ files:
|
|
60
60
|
- gem-ripper-tags.gemspec
|
61
61
|
- lib/rubygems/commands/ripper_tags_command.rb
|
62
62
|
- lib/rubygems_plugin.rb
|
63
|
+
- rebuild-gems.sh
|
64
|
+
- release.sh
|
63
65
|
homepage: https://github.com/lzap/gem-ripper-tags
|
64
66
|
licenses: []
|
65
67
|
post_install_message:
|