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 +5 -5
- data/Changelog.md +5 -0
- data/README.md +3 -4
- data/exe/yard-junk +9 -5
- data/lib/yard-junk/janitor.rb +44 -15
- data/lib/yard-junk/janitor/html_reporter.rb +5 -5
- data/lib/yard-junk/janitor/resolver.rb +53 -9
- data/lib/yard-junk/janitor/text_reporter.rb +19 -17
- data/lib/yard-junk/janitor/yard_options.rb +54 -0
- data/lib/yard-junk/logger/message.rb +6 -1
- data/lib/yard-junk/version.rb +1 -1
- data/yard-junk.gemspec +4 -3
- metadata +49 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f972096c735aa10f1d097ba129b9df1cb395125fc0fb1ecbfa9fad45398cf370
|
4
|
+
data.tar.gz: d2ced5a123314ad4871b18513b7e9f50a7cfb5c4030de060465eb3294671c792
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50f61b3c8e59f14d500c45790c51f819ac9c58d22d947256b7f85ff30b710eacd574160df7016947e0d30a62b51b7ab59cfd9e62045aa98d222417eb3bbe7ba1
|
7
|
+
data.tar.gz: 767f7cc67a380e6e530b08b9a0620800079d29f8b973061efb2110d63b830a093add85cd7de9688c749eec2f56532b462c38004c4c76f7b65ec45f94b6c6dd00
|
data/Changelog.md
CHANGED
@@ -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
|
-
|
433
|
-
|
434
|
-
|
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
|
|
data/exe/yard-junk
CHANGED
@@ -8,9 +8,9 @@ require 'yard-junk'
|
|
8
8
|
require 'optparse'
|
9
9
|
|
10
10
|
formatters = {}
|
11
|
-
|
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
|
-
|
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(
|
55
|
+
exit janitor.report(**formatters)
|
data/lib/yard-junk/janitor.rb
CHANGED
@@ -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(
|
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
|
28
|
+
def stats
|
24
29
|
{
|
25
|
-
errors:
|
26
|
-
problems:
|
30
|
+
errors: errors.count,
|
31
|
+
problems: problems.count,
|
27
32
|
duration: @duration || 0
|
28
33
|
}
|
29
34
|
end
|
30
35
|
|
31
|
-
def report(*args,
|
36
|
+
def report(*args, **opts)
|
32
37
|
guess_reporters(*args, **opts).each do |reporter|
|
33
|
-
reporter.section('Errors', 'severe code or formatting problems',
|
34
|
-
reporter.section('Problems', 'mistyped tags or other typos in documentation',
|
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
|
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
|
-
|
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
|
64
|
-
return
|
65
|
-
|
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
|
-
|
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(
|
16
|
-
|
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, @
|
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
|
-
|
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
|
-
|
37
|
-
|
38
|
-
|
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#{
|
15
|
+
@io.puts "\n#{colorized_stats(stat)}"
|
15
16
|
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
Rainbow(
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
-
|
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
|
data/lib/yard-junk/version.rb
CHANGED
data/yard-junk.gemspec
CHANGED
@@ -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', '
|
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
|
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.
|
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
|
+
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
|
-
|
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
|
-
|
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
|
-
|
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
|
62
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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: []
|