ripper-tags 0.5.1 → 0.6.0

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