yard-junk 0.0.5 → 0.0.6

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
- 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: []