ripper-tags 0.5.1 → 0.6.0

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: 640b1a068e2264a9ff34622fe1a2403f2301b267
4
- data.tar.gz: 3d03ce7a71b934a3131e599d66dfab5186fc4751
3
+ metadata.gz: 9c01afeab62bc05b48461054c69302ea2c6df300
4
+ data.tar.gz: 15381e892cf46a2c712059e9ec1a5cc1275fb17a
5
5
  SHA512:
6
- metadata.gz: 0c33f81e059a2ceaf2191e80aaf0b664b11e6165aefdca146344326afd1cd9aabe5f97e6f00ef23ef12e17a4c8e5e0c72648763150a6222366982e8a564f2adc
7
- data.tar.gz: cd26c13d7d50ed7ef413eac6fbd96d310339d88f96418122123c117c2a08d3c1638d0789131a87c8070b43dacbe984a7d3be0757bbffdd5c93f2fbfb18ee01dc
6
+ metadata.gz: 855d584aca0e552f9bd6cefd849255dad0a7119beeccd38465bfc62310f0c0ddad586721e3e4adf1ad27911764d50d6dc96103210e00837163aa5203693173f1
7
+ data.tar.gz: 47f730f13d9ff65c9ceeda5361b153f6117459546d2a5ddd4954cc06ba8d4fcb046f4ac4d3743abb0e83268ca19a14e828f96129e9dd86202dc51990ba1de2d6
data/lib/ripper-tags.rb CHANGED
@@ -9,7 +9,7 @@ require 'ripper-tags/vim_formatter'
9
9
  require 'ripper-tags/json_formatter'
10
10
 
11
11
  module RipperTags
12
- def self.version() "0.5.1" end
12
+ def self.version() "0.6.0" end
13
13
 
14
14
  FatalError = Class.new(RuntimeError)
15
15
 
@@ -109,7 +109,7 @@ module RipperTags
109
109
  opts.on("-n", "Equivalent to --excmd=number.") do
110
110
  options.excmd = "number"
111
111
  end
112
- opts.on("--fields=+n", "Include line number information in the tag") do |flags|
112
+ opts.on("--fields=+ln", "Add extra fields to output") do |flags|
113
113
  flags_string_to_set.call(flags, options.fields)
114
114
  end
115
115
  opts.on("--all-files", "Parse all files in recursive mode (default: parse `*.rb' files)") do
@@ -139,7 +139,7 @@ module RipperTags
139
139
  opts.on_tail("-V", "--verbose", "Print additional information on stderr") do
140
140
  options.verbose = true
141
141
  end
142
- opts.on_tail("--force", "Skip files with parsing errors") do
142
+ opts.on_tail("--force", "Always exit with error code 0, even when parse errors occur") do
143
143
  options.force = true
144
144
  end
145
145
  opts.on_tail("--list-kinds=LANG", "Print tag kinds that this parser supports and exit") do |lang|
@@ -210,6 +210,9 @@ module RipperTags
210
210
  formatter.write(tag, out)
211
211
  end
212
212
  end
213
+ if reader.error_count > 0 && !options.force && reader.error_count == reader.file_count
214
+ exit 1
215
+ end
213
216
  rescue FatalError => err
214
217
  $stderr.puts "%s: %s" % [
215
218
  File.basename($0),
@@ -101,12 +101,14 @@ module RipperTags
101
101
  end
102
102
 
103
103
  class DataReader
104
- attr_reader :options
104
+ attr_reader :options, :file_count, :error_count
105
105
 
106
106
  READ_MODE = 'r:utf-8'
107
107
 
108
108
  def initialize(options)
109
109
  @options = options
110
+ @file_count = 0
111
+ @error_count = 0
110
112
  end
111
113
 
112
114
  def file_finder
@@ -130,20 +132,21 @@ module RipperTags
130
132
 
131
133
  def each_tag
132
134
  return to_enum(__method__) unless block_given?
135
+
133
136
  file_finder.each_file do |file|
134
137
  begin
135
- $stderr.puts "Parsing file #{file}" if options.verbose
138
+ $stderr.puts "Parsing file `#{file}'" if options.verbose
136
139
  extractor = tag_extractor(file)
137
140
  rescue => err
138
- if options.force
139
- $stderr.puts "Error parsing `#{file}': #{err.message}"
140
- else
141
- raise err
142
- end
141
+ # print the error and continue
142
+ $stderr.puts "#{err.class.name} parsing `#{file}': #{err.message}"
143
+ @error_count += 1
143
144
  else
144
145
  extractor.tags.each do |tag|
145
146
  yield tag
146
147
  end
148
+ ensure
149
+ @file_count += 1
147
150
  end
148
151
  end
149
152
  end
@@ -3,7 +3,7 @@ require 'ripper-tags/default_formatter'
3
3
  module RipperTags
4
4
  class VimFormatter < DefaultFormatter
5
5
  def supported_flags() ['q'] end
6
- def supported_fields() ['n'] end
6
+ def supported_fields() ['l', 'n'] end
7
7
 
8
8
  def include_qualified_names?
9
9
  return @include_qualified_names if defined? @include_qualified_names
@@ -72,6 +72,10 @@ module RipperTags
72
72
  end
73
73
  end
74
74
 
75
+ def display_language
76
+ "\tlanguage:Ruby" if field?('l')
77
+ end
78
+
75
79
  def display_kind(tag)
76
80
  case tag.fetch(:kind)
77
81
  when 'method' then 'f'
@@ -84,13 +88,14 @@ module RipperTags
84
88
  end
85
89
 
86
90
  def format(tag, name_field = :name)
87
- "%s\t%s\t%s\t%s%s%s%s" % [
91
+ "%s\t%s\t%s\t%s%s%s%s%s" % [
88
92
  tag.fetch(name_field),
89
93
  relative_path(tag),
90
94
  display_excmd_info(tag),
91
95
  display_kind(tag),
92
96
  display_line_number(tag),
93
97
  name_field == :full_name ? nil : display_class(tag),
98
+ display_language,
94
99
  display_inheritance(tag),
95
100
  ]
96
101
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ripper-tags
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aman Gupta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-23 00:00:00.000000000 Z
11
+ date: 2018-05-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: fast, accurate ctags generator for ruby source code using Ripper
14
14
  email:
@@ -48,7 +48,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
48
  version: '0'
49
49
  requirements: []
50
50
  rubyforge_project:
51
- rubygems_version: 2.4.5.1
51
+ rubygems_version: 2.5.2
52
52
  signing_key:
53
53
  specification_version: 4
54
54
  summary: ctags generator for ruby code