ctags.rb 1.0.15 → 1.0.18

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- M2VjNmI5ZDExNzUyYTRkMTcxN2Q1ZjE5ODA2M2EyMTg3MjI1Yzg3OA==
4
+ MzE3YmY5MGM4ZWFmYWY3OTk3ZTdkODc5OGQ4OGM3YTc1YjE0NzI1Zg==
5
5
  data.tar.gz: !binary |-
6
- NjgwZTkwNWY5NmM2MmYzOTk5YmRlYjNmYTVlNDQzMTFjYzNmYmU0NA==
6
+ YzBiZjNmZjgxZjgxZmY2ZWU4Y2QwZjYzOGI1NzNhOTJhNWEwZTg1OQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZWZhOTYwNGQyNGQ0OGRjZGRkYzZkMWIwNmU2ODUwNDU3MTY4ODk5NTVlNmYx
10
- YTM0N2VlZWFmMDYyYzRlYTM4ZmIwNDgyZmVlZWNkZWI3NTAxOGFlYTYxMGQ5
11
- YTJkMjVjMDdjY2E5YjYxODVjZmZhNzYzMDcxYmYzZmQ0NTgwZjM=
9
+ YmRmNGQ3Mzk3MmZmNTg3NmE1MDlmY2FhMzQxNzJlYzQ0MTZiZTRmNTJmNmEz
10
+ YzRiOWIzZmI1MzI5YjUzZmYxY2UwMmMyNjMwN2FiMWYwNWIxMmY1ZTFmZTMz
11
+ Yzc3NDMwY2FiMTRhZWY4MzNhNWQzNjU2ODFjYWI4NmNhY2ZmOGE=
12
12
  data.tar.gz: !binary |-
13
- YWEzYjNkYjZhMjE4ZGI5NjNlZTk1Nzk1MTc5Y2FiZWY4YzA5MDczYWM3ODg5
14
- YThkNWI4YjE4OTI3NDI5YzFiYWRmOThmMmNiMGRkY2U5MmRlNDhkNDE0ZTVh
15
- MDE2MzMyNDVhMjQ4MGZkNzljYWMyYTcyYmExYmI4MzEwMjY1ZmI=
13
+ ZDkyOGZmZWRkOGQ1NjY4NjRjNjg4N2ZhNmNiNGM0OTE4YmUwODU5ZGI1MmRi
14
+ YTgwMDkyZGYwOTYzZGI0YzhhYWIzMWZjMzNkOGQzNGQ5ZjA5N2Q1OGRkYTU1
15
+ OGE3NmQzNjZjNjJhMjY1NTczNDNmMDllZTRkMDMzYjFhMGY0N2I=
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
+
3
4
  gem 'rake'
5
+ gem 'ripper', :platforms => :mri_18
data/Gemfile.lock ADDED
@@ -0,0 +1,25 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ctags.rb (1.0.16)
5
+ posix-spawn (~> 0.3.6)
6
+ ripper-tags (~> 0.1.3)
7
+ yajl-ruby
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ posix-spawn (0.3.8)
13
+ rake (10.1.1)
14
+ ripper (1.0.5)
15
+ ripper-tags (0.1.3)
16
+ yajl-ruby
17
+ yajl-ruby (1.2.0)
18
+
19
+ PLATFORMS
20
+ ruby
21
+
22
+ DEPENDENCIES
23
+ ctags.rb!
24
+ rake
25
+ ripper
data/ctags.rb.gemspec CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.email = ['aman@tmm1.net']
15
15
 
16
16
  s.add_dependency 'posix-spawn', '~> 0.3.6'
17
+ s.add_dependency 'ripper-tags', '~> 0.1.3'
17
18
  s.add_dependency 'yajl-ruby'
18
19
 
19
20
  s.extensions = ['ext/extconf.rb']
data/ext/extconf.rb CHANGED
@@ -17,6 +17,7 @@ xsystem('pwd') # to create mkmf.log before the chdir
17
17
 
18
18
  Dir.chdir("#{CWD}/vendor/jansson-2.5") do
19
19
  sys "./configure --prefix=#{CWD}/dst --disable-shared" unless File.exists?('config.h')
20
+ sys "touch *"
20
21
  sys "make install"
21
22
  end
22
23
 
data/lib/ctags.rb CHANGED
@@ -1,6 +1,18 @@
1
1
  require 'ctags/version'
2
2
  require 'ctags/exuberant'
3
+ require 'ctags/ruby'
3
4
 
4
5
  module Ctags
5
- extend Ctags::Exuberant
6
+ extend self
7
+
8
+ class Error < StandardError
9
+ end
10
+
11
+ def tags_for_file(file, code=nil)
12
+ if file =~ /\.rb$/
13
+ Ruby.tags_for_file(file, code)
14
+ else
15
+ Exuberant.tags_for_file(file, code)
16
+ end
17
+ end
6
18
  end
@@ -3,11 +3,9 @@ require 'yajl'
3
3
  require 'tempfile'
4
4
 
5
5
  module Ctags
6
- class Error < StandardError
7
- end
8
-
9
6
  module Exuberant
10
7
  include POSIX::Spawn
8
+ extend self
11
9
 
12
10
  BIN = File.expand_path("../../../ext/dst/bin/ctags", __FILE__)
13
11
  CONFIG = File.expand_path("../../ctags.cnf", __FILE__)
@@ -80,78 +78,10 @@ module Ctags
80
78
  tags
81
79
  end
82
80
 
83
- def tags_for_code(filename, code)
84
- tags_for_file(filename, code)
85
- end
86
-
87
81
  def tags_for_file(filename, code=nil)
88
82
  cmd = {'command'=>'generate-tags','filename'=>filename}
89
83
  cmd['size'] = code.bytesize if code
90
84
  execute(cmd, code)
91
85
  end
92
-
93
- def tags_for_file_old(filename, code=nil)
94
- args = [
95
- '--options=NONE',
96
- '--fields=+KlnzsStimfa',
97
- '--sort=no',
98
- '--excmd=pattern',
99
- '-o', '-'
100
- ]
101
-
102
- child =
103
- if code
104
- # XXX stdin is not seekable
105
- # args << "--stdin-filename=#{filename}"
106
- # args << {:input => code}
107
-
108
- tempfile = Tempfile.new(['ctags-input', File.extname(filename)])
109
- tempfile.write(code)
110
- tempfile.close
111
- args << tempfile.path
112
-
113
- begin
114
- Child.new(BIN, *args)
115
- ensure
116
- tempfile.unlink
117
- end
118
- else
119
- args << filename
120
- Child.new(BIN, *args)
121
- end
122
-
123
- if !child.status.success?
124
- raise Error, child.err
125
- end
126
-
127
- tags = []
128
-
129
- child.out.each_line.map do |line|
130
- name, path, rest = line.strip.split("\t", 3)
131
- pattern, fields = rest.split("/;\"\t", 2)
132
-
133
- tag = {
134
- :name => name,
135
- :path => code ? filename : path,
136
- :pattern => pattern.sub('/^','').chomp('$').gsub('\\\\','\\')
137
- }
138
-
139
- fields.split("\t").each do |field|
140
- if field == 'file:'
141
- key, value = :scope, 'file'
142
- else
143
- key, value = field.split(":", 2)
144
- end
145
-
146
- tag[key.to_sym] = value
147
- end
148
-
149
- tag[:line] = tag[:line].to_i
150
-
151
- tags << tag
152
- end
153
-
154
- tags
155
- end
156
86
  end
157
87
  end
data/lib/ctags/ruby.rb ADDED
@@ -0,0 +1,19 @@
1
+ require 'ripper-tags/parser'
2
+
3
+ module Ctags
4
+ module Ruby
5
+ extend self
6
+
7
+ def tags_for_file(file, data=nil)
8
+ data ||= File.read(file)
9
+ RipperTags::Parser.extract(data, file)
10
+ rescue Errno::ENOENT
11
+ raise Error, $!.message
12
+ rescue Interrupt
13
+ raise
14
+ rescue Object => e
15
+ STDERR.puts [e, file].inspect
16
+ []
17
+ end
18
+ end
19
+ end
data/lib/ctags/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ctags
2
- VERSION = '1.0.15'
2
+ VERSION = '1.0.18'
3
3
  end
data/test/test_ctags.rb CHANGED
@@ -13,8 +13,8 @@ class CtagsTest < Test::Unit::TestCase
13
13
  assert_equal 'method', tag[:kind]
14
14
  end
15
15
 
16
- def test_tags_for_code
17
- tags = Ctags.tags_for_code('file.rb', File.read(__FILE__))
16
+ def test_tags_for_file_with_code
17
+ tags = Ctags.tags_for_file('file.rb', File.read(__FILE__))
18
18
  tag = tags.find{ |t| t[:name] == __method__.to_s }
19
19
 
20
20
  assert_equal 'file.rb', tag[:path]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ctags.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.15
4
+ version: 1.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aman Gupta
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.3.6
27
+ - !ruby/object:Gem::Dependency
28
+ name: ripper-tags
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.3
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: yajl-ruby
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -47,6 +61,7 @@ extensions:
47
61
  extra_rdoc_files: []
48
62
  files:
49
63
  - Gemfile
64
+ - Gemfile.lock
50
65
  - README.md
51
66
  - Rakefile
52
67
  - bench.rb
@@ -485,6 +500,7 @@ files:
485
500
  - lib/ctags.cnf
486
501
  - lib/ctags.rb
487
502
  - lib/ctags/exuberant.rb
503
+ - lib/ctags/ruby.rb
488
504
  - lib/ctags/version.rb
489
505
  - test/test_ctags.rb
490
506
  homepage: http://github.com/tmm1/ctags.rb