yard-junk 0.0.5 → 0.0.6

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
- SHA1:
3
- metadata.gz: 4f026c0bf7f4d4490bc4a95d445fafb80d4bfe35
4
- data.tar.gz: 26a7538f89dd38d6352575e563b5192b5d15bef0
2
+ SHA256:
3
+ metadata.gz: f972096c735aa10f1d097ba129b9df1cb395125fc0fb1ecbfa9fad45398cf370
4
+ data.tar.gz: d2ced5a123314ad4871b18513b7e9f50a7cfb5c4030de060465eb3294671c792
5
5
  SHA512:
6
- metadata.gz: 8cffcf86cc22223300d43cac2609f8aa31c51b65c01c9f9fd9a56a8ddf4cf44e207a51f63543f1e14321c01df538f29288c43948f0356bde1306c7c4d4baa903
7
- data.tar.gz: ebde7f6f891bc40cc7f9ebb6be60890b8884a3c4390de1c6a92302a6c759e87ee2b7a695ec61dcc7de9a40bf5bfc57bf186114bd9c270d786420a34a86be0662
6
+ metadata.gz: 50f61b3c8e59f14d500c45790c51f819ac9c58d22d947256b7f85ff30b710eacd574160df7016947e0d30a62b51b7ab59cfd9e62045aa98d222417eb3bbe7ba1
7
+ data.tar.gz: 767f7cc67a380e6e530b08b9a0620800079d29f8b973061efb2110d63b830a093add85cd7de9688c749eec2f56532b462c38004c4c76f7b65ec45f94b6c6dd00
@@ -1,5 +1,10 @@
1
1
  # Yard-Junk changelog
2
2
 
3
+ ## 0.0.6 -- 2017-09-20
4
+
5
+ * More robust (and more logical) colorization on text output (#25);
6
+ * Fast "sanity check" for using in pre-commit hook on large codebases.
7
+
3
8
  ## 0.0.5 -- 2017-09-11
4
9
 
5
10
  * Fix gem conflict with `did_you_mean`.
data/README.md CHANGED
@@ -429,10 +429,9 @@ Therefore, this independent tool was made.
429
429
 
430
430
  ## Caveats
431
431
 
432
- * Sometimes YARD doesn't provide enough information to guess in which line of code the problem is;
433
- in those cases `yard-junk` just writes something like `file.rb:1` (to stay consistent and not break
434
- go-to-file tools);
435
- * Checking of links to files and URLs proven to be incomplete ([#12](https://github.com/zverok/yard-junk/issues/12)).
432
+ Sometimes YARD doesn't provide enough information to guess in which line of code the problem is;
433
+ in those cases `yard-junk` just writes something like `file.rb:1` (to stay consistent and not break
434
+ go-to-file tools).
436
435
 
437
436
  ## Roadmap
438
437
 
@@ -8,9 +8,9 @@ require 'yard-junk'
8
8
  require 'optparse'
9
9
 
10
10
  formatters = {}
11
- check_path = nil
11
+ options = {}
12
12
 
13
- OptionParser.new do |opts|
13
+ OptionParser.new do |opts| # rubocop:disable Metrics/BlockLength
14
14
  opts.banner = 'Usage: yard-junk [formatters]'
15
15
  opts.separator ''
16
16
  opts.separator 'Formatters'
@@ -30,7 +30,11 @@ OptionParser.new do |opts|
30
30
  opts.separator 'Other options'
31
31
 
32
32
  opts.on('-f', '--path PATTERN1,PATTERN2,PATTERN3', 'Limit output only to this files. Can be path to file or folder, or glob pattern') do |patterns|
33
- check_path = patterns.split(',')
33
+ options[:pathes] = patterns.split(',')
34
+ end
35
+
36
+ opts.on('-s', '--sanity', 'Sanity check for docs: just catch mistyped tags and similar stuff. On large codebases, MUCH faster than full check.') do
37
+ options[:mode] = :sanity
34
38
  end
35
39
 
36
40
  opts.on_tail('-v', '--version', 'Prints version') do
@@ -46,6 +50,6 @@ end.parse!
46
50
 
47
51
  formatters = {text: nil} if formatters.empty?
48
52
 
49
- janitor = YardJunk::Janitor.new
53
+ janitor = YardJunk::Janitor.new(**options)
50
54
  janitor.run
51
- exit janitor.report(path: check_path, **formatters)
55
+ exit janitor.report(**formatters)
@@ -5,6 +5,11 @@ require 'backports/2.3.0/enumerable/grep_v'
5
5
 
6
6
  module YardJunk
7
7
  class Janitor
8
+ def initialize(mode: :full, pathes: nil)
9
+ @mode = mode
10
+ @files = expand_pathes(pathes)
11
+ end
12
+
8
13
  def run(*opts)
9
14
  YARD::Registry.clear # Somehow loads all Ruby stdlib classes before Rake task started...
10
15
  Logger.instance.format = nil # Nothing shouuld be printed
@@ -13,27 +18,27 @@ module YardJunk
13
18
 
14
19
  @duration = Benchmark.realtime do
15
20
  command = YARD::CLI::Yardoc.new
16
- command.run('--no-save', '--no-progress', '--no-stats', '--no-output', *opts)
17
- Resolver.resolve_all(command.options)
21
+ command.run(*prepare_options(opts))
22
+ Resolver.resolve_all(command.options) unless mode == :sanity
18
23
  end
19
24
 
20
25
  self
21
26
  end
22
27
 
23
- def stats(path = nil)
28
+ def stats
24
29
  {
25
- errors: filter(errors, path).count,
26
- problems: filter(problems, path).count,
30
+ errors: errors.count,
31
+ problems: problems.count,
27
32
  duration: @duration || 0
28
33
  }
29
34
  end
30
35
 
31
- def report(*args, path: nil, **opts)
36
+ def report(*args, **opts)
32
37
  guess_reporters(*args, **opts).each do |reporter|
33
- reporter.section('Errors', 'severe code or formatting problems', filter(errors, path))
34
- reporter.section('Problems', 'mistyped tags or other typos in documentation', filter(problems, path))
38
+ reporter.section('Errors', 'severe code or formatting problems', errors)
39
+ reporter.section('Problems', 'mistyped tags or other typos in documentation', problems)
35
40
 
36
- reporter.stats(stats(path))
41
+ reporter.stats(stats)
37
42
  reporter.finalize
38
43
  end
39
44
 
@@ -48,8 +53,33 @@ module YardJunk
48
53
 
49
54
  private
50
55
 
56
+ attr_reader :mode, :files, :yardopts
57
+
58
+ BASE_OPTS = %w[--no-save --no-progress --no-stats --no-output --no-cache].freeze
59
+
60
+ def prepare_options(opts)
61
+ if mode == :full || mode == :sanity && files.nil?
62
+ [*BASE_OPTS, *opts]
63
+ elsif mode == :sanity
64
+ # TODO: specs
65
+ [*BASE_OPTS, '--no-yardopts', *yardopts_with_files(files)]
66
+ else
67
+ fail ArgumentError, "Undefined mode: #{mode.inspect}"
68
+ end
69
+ end
70
+
71
+ def yardopts_with_files(files)
72
+ # Use all options from .yardopts file, but replace file lists
73
+ YardOptions.new.remove_option('--files').set_files(*files)
74
+ end
75
+
51
76
  def messages
52
- YardJunk::Logger.instance.messages.grep_v(Logger::Undocumentable) # FIXME: Not DRY
77
+ # FIXME: dropping Undocumentable here is not DRY
78
+ @messages ||= YardJunk::Logger
79
+ .instance
80
+ .messages
81
+ .grep_v(Logger::Undocumentable)
82
+ .select { |m| !files || !m.file || files.include?(File.expand_path(m.file)) }
53
83
  end
54
84
 
55
85
  def errors
@@ -60,14 +90,12 @@ module YardJunk
60
90
  messages.select(&:warn?)
61
91
  end
62
92
 
63
- def filter(messages, pathes)
64
- return messages unless pathes
65
- filters =
66
- Array(pathes)
93
+ def expand_pathes(pathes)
94
+ return unless pathes
95
+ Array(pathes)
67
96
  .map { |path| File.directory?(path) ? File.join(path, '**', '*.*') : path }
68
97
  .flat_map(&Dir.method(:[]))
69
98
  .map(&File.method(:expand_path))
70
- messages.select { |m| filters.include?(File.expand_path(m.file)) }
71
99
  end
72
100
 
73
101
  # TODO: specs for the logic
@@ -85,3 +113,4 @@ require_relative 'janitor/base_reporter'
85
113
  require_relative 'janitor/text_reporter'
86
114
  require_relative 'janitor/html_reporter'
87
115
  require_relative 'janitor/resolver'
116
+ require_relative 'janitor/yard_options'
@@ -8,7 +8,7 @@ module YardJunk
8
8
  # for usage with Jenkins. See {BaseReporter} for details about reporters.
9
9
  #
10
10
  class HtmlReporter < BaseReporter
11
- HEADER = <<-HTML
11
+ HEADER = <<-HTML.freeze
12
12
  <!DOCTYPE html>
13
13
  <html lang="en">
14
14
  <header>
@@ -46,23 +46,23 @@ module YardJunk
46
46
  <h1>YARD Validation Report</h1>
47
47
  HTML
48
48
 
49
- FOOTER = <<-HTML
49
+ FOOTER = <<-HTML.freeze
50
50
  </body>
51
51
  </html>
52
52
  HTML
53
53
 
54
- SECTION = <<-HTML
54
+ SECTION = <<-HTML.freeze
55
55
  <h2 class="<%= title == 'Notices' ? 'notice' : 'problem' %>">
56
56
  <%= title %>
57
57
  <small>(<%= explanation %>)</small>
58
58
  </h2>
59
59
  HTML
60
60
 
61
- ROW = <<-HTML
61
+ ROW = <<-HTML.freeze
62
62
  <li><span class="path"><%= file %>:<%= line %></span>: <%= message %></li>
63
63
  HTML
64
64
 
65
- STATS = <<-HTML
65
+ STATS = <<-HTML.freeze
66
66
  <p class="stats">
67
67
  <span class="<%= 'problem' unless errors.zero? %>"><%= errors %> failures</span>,
68
68
  <span class="<%= 'problem' unless problems.zero? %>"><%= problems %> problems</span>
@@ -2,25 +2,36 @@
2
2
 
3
3
  module YardJunk
4
4
  class Janitor
5
- # TODO: Tests
6
5
  class Resolver
7
6
  include YARD::Templates::Helpers::HtmlHelper
8
7
 
9
- MESSAGE_PATTERN = 'In file `%{file}\':%{line}: Cannot resolve link to %{name} from text: %{link}'
8
+ # This one is copied from real YARD output
9
+ OBJECT_MESSAGE_PATTERN = 'In file `%{file}\':%{line}: Cannot resolve link to %{name} from text: %{link}'.freeze
10
+
11
+ # ...while this one is totally invented, YARD doesn't check file existance at all
12
+ FILE_MESSAGE_PATTERN = "In file `%{file}':%{line}: File '%{name}' does not exist: %{link}".freeze
10
13
 
11
14
  def self.resolve_all(yard_options)
12
15
  YARD::Registry.all.map(&:base_docstring).each { |ds| new(ds, yard_options).resolve }
16
+ yard_options.files.each { |file| new(file, yard_options).resolve }
13
17
  end
14
18
 
15
- def initialize(docstring, yard_options)
16
- @docstring = docstring
19
+ def initialize(object, yard_options)
20
+ case object
21
+ when YARD::CodeObjects::ExtraFileObject
22
+ init_file(object)
23
+ when YARD::Docstring
24
+ init_docstring(object)
25
+ else
26
+ fail "Unknown object to resolve #{object.class}"
27
+ end
17
28
  @options = yard_options
18
29
  end
19
30
 
20
31
  def resolve
21
32
  markup_meth = "html_markup_#{options.markup}"
22
33
  return unless respond_to?(markup_meth)
23
- send(markup_meth, @docstring)
34
+ send(markup_meth, @string)
24
35
  .gsub(%r{<(code|tt|pre)[^>]*>(.*?)</\1>}im, '')
25
36
  .scan(/{[^}]+}/).flatten
26
37
  .map(&CGI.method(:unescapeHTML))
@@ -29,19 +40,52 @@ module YardJunk
29
40
 
30
41
  private
31
42
 
32
- attr_reader :options
43
+ def init_file(file)
44
+ @string = file.contents
45
+ @file = file.filename
46
+ @line = 1
47
+ end
48
+
49
+ def init_docstring(docstring)
50
+ @string = docstring
51
+ @root_object = docstring.object
52
+ @file = @root_object.file
53
+ @line = @root_object.line
54
+ end
55
+
56
+ attr_reader :options, :file, :line
33
57
 
34
58
  def try_resolve(link)
35
59
  name, _comment = link.tr('{}', '').split(/\s+/, 2)
36
- resolved = YARD::Registry.resolve(@docstring.object, name, true, true)
37
- return unless resolved.is_a?(YARD::CodeObjects::Proxy)
38
- Logger.instance.register(MESSAGE_PATTERN % {file: object.file, line: object.line, name: name, link: link})
60
+
61
+ # See YARD::Templates::Helpers::BaseHelper#linkify for the source of patterns
62
+ # TODO: there is also {include:}, {include:file:} and {render:} syntaxes, but I've never seen
63
+ # a project using them. /shrug
64
+ case name
65
+ when %r{://}, /^mailto:/ # that's pattern YARD uses
66
+ # do nothing, assume it is correct
67
+ when /^file:(\S+?)(?:#(\S+))?$/
68
+ resolve_file(Regexp.last_match[1], link)
69
+ else
70
+ resolve_code_object(name, link)
71
+ end
39
72
  end
40
73
 
41
74
  def object
42
75
  @docstring.object
43
76
  end
44
77
 
78
+ def resolve_file(name, link)
79
+ return if options.files.any? { |f| f.name == name || f.filename == name }
80
+ Logger.instance.register(FILE_MESSAGE_PATTERN % {file: file, line: line, name: name, link: link})
81
+ end
82
+
83
+ def resolve_code_object(name, link)
84
+ resolved = YARD::Registry.resolve(@root_object, name, true, true)
85
+ return unless resolved.is_a?(YARD::CodeObjects::Proxy)
86
+ Logger.instance.register(OBJECT_MESSAGE_PATTERN % {file: file, line: line, name: name, link: link})
87
+ end
88
+
45
89
  # required by HtmlHelper
46
90
  def serializer
47
91
  nil
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'tty/color'
3
4
  require 'rainbow'
4
5
 
5
6
  module YardJunk
@@ -11,26 +12,27 @@ module YardJunk
11
12
  private
12
13
 
13
14
  def _stats(**stat)
14
- @io.puts "\n#{template_for(stat) % stat}"
15
+ @io.puts "\n#{colorized_stats(stat)}"
15
16
  end
16
17
 
17
- NO_ISSUES_TEMPLATE = [
18
- Rainbow('%<errors>i failures, %<problems>i problems').green,
19
- Rainbow(', (%<duration>s to run)').gray
20
- ].join('').freeze
21
-
22
- ERROR_COUNT_TEMPLATE = [
23
- Rainbow('%<errors>i failures').red,
24
- Rainbow(',').gray,
25
- Rainbow(' %<problems>i problems').yellow,
26
- Rainbow(', (%<duration>s to run)').gray
27
- ].join('').freeze
28
-
29
- def template_for(stat)
30
- if stat[:errors].zero? && stat[:problems].zero?
31
- NO_ISSUES_TEMPLATE
18
+ def colorized_stats(errors:, problems:, duration:)
19
+ colorize(format('%i failures, %i problems', errors, problems), status_color(errors, problems)) +
20
+ format(' (%s to run)', duration)
21
+ end
22
+
23
+ def colorize(text, color)
24
+ return text unless TTY::Color.supports?
25
+ Rainbow(text).color(color)
26
+ end
27
+
28
+ def status_color(errors, problems)
29
+ case
30
+ when errors > 0
31
+ :red
32
+ when problems > 0
33
+ :yellow
32
34
  else
33
- ERROR_COUNT_TEMPLATE
35
+ :green
34
36
  end
35
37
  end
36
38
 
@@ -0,0 +1,54 @@
1
+ module YardJunk
2
+ class Janitor
3
+ # Allows to properly parse `.yardopts` or other option file YARD supports and gracefully replace
4
+ # or remove some of options.
5
+ class YardOptions
6
+ attr_reader :options, :files, :extra_files
7
+
8
+ def initialize
9
+ internal = Internal.new
10
+ internal.parse_arguments
11
+ @options = internal.option_args
12
+ @files = internal.files
13
+ @extra_files = internal.options.files
14
+ end
15
+
16
+ def set_files(*files) # rubocop:disable Style/AccessorMethodName
17
+ # TODO: REALLY fragile :(
18
+ @files, @extra_files = files.partition { |f| f =~ /\.(rb|c|cxx|cpp)/ }
19
+ self
20
+ end
21
+
22
+ def remove_option(long, short = nil)
23
+ [short, long].compact.each do |o|
24
+ i = @options.index(o)
25
+ next unless i
26
+ @options.delete_at(i)
27
+ @options.delete_at(i) unless @options[i].start_with?('-') # it was argument
28
+ end
29
+ self
30
+ end
31
+
32
+ def to_a
33
+ (@options + @files).tap { |res| res.concat(['-', *@extra_files]) unless @extra_files.empty? }
34
+ end
35
+
36
+ # The easiest way to think like Yardoc is to become Yardoc, you know.
37
+ class Internal < YARD::CLI::Yardoc
38
+ attr_reader :option_args
39
+
40
+ def optparse(*args)
41
+ # remember all passed options...
42
+ @all_args = args
43
+ super
44
+ end
45
+
46
+ def parse_files(*args)
47
+ # ...and substract what left after they were parsed as options, and only files left
48
+ @option_args = @all_args - args
49
+ super
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -33,7 +33,7 @@ module YardJunk
33
33
  other.is_a?(self.class) && to_h == other.to_h
34
34
  end
35
35
 
36
- DEFAULT_FORMAT = '%{file}:%{line}: [%{type}] %{message}'
36
+ DEFAULT_FORMAT = '%{file}:%{line}: [%{type}] %{message}'.freeze
37
37
 
38
38
  def to_s(format = DEFAULT_FORMAT)
39
39
  format % to_h
@@ -225,5 +225,10 @@ module YardJunk
225
225
  pattern %r{^In file `(?<file>[^']+)':(?<line>\d+): (?<message>Cannot resolve link to (?<object>\S+) from text:\s+(?<quote>.+))$}
226
226
  search_up '%{quote}'
227
227
  end
228
+
229
+ class InvalidFileLink < Message
230
+ pattern %r{^In file `(?<file>[^']+)':(?<line>\d+): (?<message>File '(?<object>\S+)' does not exist:\s+(?<quote>.+))$}
231
+ search_up '%{quote}'
232
+ end
228
233
  end
229
234
  end
@@ -6,7 +6,7 @@ module YardJunk
6
6
  # @private
7
7
  MINOR = 0
8
8
  # @private
9
- PATCH = 5
9
+ PATCH = 6
10
10
 
11
11
  # @private
12
12
  VERSION = [MINOR, MAJOR, PATCH].join('.')
@@ -33,14 +33,15 @@ Gem::Specification.new do |s|
33
33
  s.bindir = 'exe'
34
34
  s.executables << 'yard-junk'
35
35
 
36
- s.add_dependency 'rainbow'
37
36
  s.add_dependency 'yard'
38
37
  s.add_dependency 'did_you_mean' if RUBY_VERSION < '2.3'
39
38
  s.add_dependency 'backports'
39
+ s.add_dependency 'rainbow'
40
+ s.add_dependency 'tty-color'
40
41
 
41
- s.add_development_dependency 'rubocop', '>= 0.49'
42
+ s.add_development_dependency 'rubocop', '= 0.49' # 0.50 breaks current rubocop-rspec
42
43
  s.add_development_dependency 'rspec', '>= 3'
43
- s.add_development_dependency 'rubocop-rspec', '= 1.15.1' # 1.16.0 is broken on JRuby
44
+ s.add_development_dependency 'rubocop-rspec', '= 1.15.1' # 1.16+ is broken on JRuby
44
45
  s.add_development_dependency 'rspec-its', '~> 1'
45
46
  #s.add_development_dependency 'saharspec' # saharspec is moving target!
46
47
  s.add_development_dependency 'fakefs'
metadata CHANGED
@@ -1,185 +1,199 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yard-junk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Shepelev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-11 00:00:00.000000000 Z
11
+ date: 2017-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rainbow
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
18
  version: '0'
20
- type: :runtime
19
+ name: yard
21
20
  prerelease: false
21
+ type: :runtime
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: yard
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
32
  version: '0'
34
- type: :runtime
33
+ name: backports
35
34
  prerelease: false
35
+ type: :runtime
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: backports
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - ">="
46
45
  - !ruby/object:Gem::Version
47
46
  version: '0'
48
- type: :runtime
47
+ name: rainbow
49
48
  prerelease: false
49
+ type: :runtime
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rubocop
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - ">="
60
59
  - !ruby/object:Gem::Version
61
- version: '0.49'
62
- type: :development
60
+ version: '0'
61
+ name: tty-color
63
62
  prerelease: false
63
+ type: :runtime
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '='
73
+ - !ruby/object:Gem::Version
74
+ version: '0.49'
75
+ name: rubocop
76
+ prerelease: false
77
+ type: :development
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0.49'
69
83
  - !ruby/object:Gem::Dependency
70
- name: rspec
71
84
  requirement: !ruby/object:Gem::Requirement
72
85
  requirements:
73
86
  - - ">="
74
87
  - !ruby/object:Gem::Version
75
88
  version: '3'
76
- type: :development
89
+ name: rspec
77
90
  prerelease: false
91
+ type: :development
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '3'
83
97
  - !ruby/object:Gem::Dependency
84
- name: rubocop-rspec
85
98
  requirement: !ruby/object:Gem::Requirement
86
99
  requirements:
87
100
  - - '='
88
101
  - !ruby/object:Gem::Version
89
102
  version: 1.15.1
90
- type: :development
103
+ name: rubocop-rspec
91
104
  prerelease: false
105
+ type: :development
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - '='
95
109
  - !ruby/object:Gem::Version
96
110
  version: 1.15.1
97
111
  - !ruby/object:Gem::Dependency
98
- name: rspec-its
99
112
  requirement: !ruby/object:Gem::Requirement
100
113
  requirements:
101
114
  - - "~>"
102
115
  - !ruby/object:Gem::Version
103
116
  version: '1'
104
- type: :development
117
+ name: rspec-its
105
118
  prerelease: false
119
+ type: :development
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
124
  version: '1'
111
125
  - !ruby/object:Gem::Dependency
112
- name: fakefs
113
126
  requirement: !ruby/object:Gem::Requirement
114
127
  requirements:
115
128
  - - ">="
116
129
  - !ruby/object:Gem::Version
117
130
  version: '0'
118
- type: :development
131
+ name: fakefs
119
132
  prerelease: false
133
+ type: :development
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - ">="
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
- name: simplecov
127
140
  requirement: !ruby/object:Gem::Requirement
128
141
  requirements:
129
142
  - - "~>"
130
143
  - !ruby/object:Gem::Version
131
144
  version: '0.9'
132
- type: :development
145
+ name: simplecov
133
146
  prerelease: false
147
+ type: :development
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
152
  version: '0.9'
139
153
  - !ruby/object:Gem::Dependency
140
- name: rake
141
154
  requirement: !ruby/object:Gem::Requirement
142
155
  requirements:
143
156
  - - ">="
144
157
  - !ruby/object:Gem::Version
145
158
  version: '0'
146
- type: :development
159
+ name: rake
147
160
  prerelease: false
161
+ type: :development
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - ">="
151
165
  - !ruby/object:Gem::Version
152
166
  version: '0'
153
167
  - !ruby/object:Gem::Dependency
154
- name: rubygems-tasks
155
168
  requirement: !ruby/object:Gem::Requirement
156
169
  requirements:
157
170
  - - ">="
158
171
  - !ruby/object:Gem::Version
159
172
  version: '0'
160
- type: :development
173
+ name: rubygems-tasks
161
174
  prerelease: false
175
+ type: :development
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - ">="
165
179
  - !ruby/object:Gem::Version
166
180
  version: '0'
167
181
  - !ruby/object:Gem::Dependency
168
- name: yard
169
182
  requirement: !ruby/object:Gem::Requirement
170
183
  requirements:
171
184
  - - ">="
172
185
  - !ruby/object:Gem::Version
173
186
  version: '0'
174
- type: :development
187
+ name: yard
175
188
  prerelease: false
189
+ type: :development
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
192
  - - ">="
179
193
  - !ruby/object:Gem::Version
180
194
  version: '0'
181
- description: " YardJunk is structured logger/error validator plugin for YARD documentation
182
- gem.\n"
195
+ description: " YardJunk is structured logger/error validator plugin for YARD documentation\
196
+ \ gem.\n"
183
197
  email: zverok.offline@gmail.com
184
198
  executables:
185
199
  - yard-junk
@@ -201,6 +215,7 @@ files:
201
215
  - lib/yard-junk/janitor/html_reporter.rb
202
216
  - lib/yard-junk/janitor/resolver.rb
203
217
  - lib/yard-junk/janitor/text_reporter.rb
218
+ - lib/yard-junk/janitor/yard_options.rb
204
219
  - lib/yard-junk/logger.rb
205
220
  - lib/yard-junk/logger/message.rb
206
221
  - lib/yard-junk/logger/spellcheck.rb
@@ -211,7 +226,7 @@ homepage: https://github.com/zverok/junk_yard
211
226
  licenses:
212
227
  - MIT
213
228
  metadata: {}
214
- post_install_message:
229
+ post_install_message:
215
230
  rdoc_options: []
216
231
  require_paths:
217
232
  - lib
@@ -226,9 +241,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
241
  - !ruby/object:Gem::Version
227
242
  version: '0'
228
243
  requirements: []
229
- rubyforge_project:
230
- rubygems_version: 2.6.10
231
- signing_key:
244
+ rubyforge_project:
245
+ rubygems_version: 2.6.13
246
+ signing_key:
232
247
  specification_version: 4
233
248
  summary: Get rid of the junk in your YARD docs
234
249
  test_files: []