rubocop_todo_corrector 0.13.0 → 0.14.2

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
  SHA256:
3
- metadata.gz: 3e370ea5e7275cba3675a1e5ebae1aababaddb87917bb7ac5507efb6b3e5fb79
4
- data.tar.gz: 5a235861dbdf945bf4fd1a3c271cedb2f08e76397706d2f48e16adec0e94e8a4
3
+ metadata.gz: dff04eb883e0fd8b45e35cf11bf14351a6e93f397e40117a87c2f8beefce2cdc
4
+ data.tar.gz: f75586ac0a17d1b025925b4faca387eca5d069b9ccf149a1d56f27da1493bede
5
5
  SHA512:
6
- metadata.gz: 55cd6960281b726f3cd5ab258d112c2fbbe8d589fd57045ce1186b06af17502883a591709fcc40f7ac773b785f05a01784a35f6a641d21de01f6334d0cef829a
7
- data.tar.gz: a05b1ca686adb83f7eae952c0357109b0f18973f0e85965468518264b89b1a531a071d387a7209226837f66abef89680c2b43fac90daa1aa181f2cd63fae6da1
6
+ metadata.gz: 6c72738de0ffbf7845926c46950c97800bb991f24bfe032b0c6209d71a1f79ebf42967c56c907462f175cefbec631e27f16c092ce60afb4401e816a7283d50dc
7
+ data.tar.gz: 291c3db91da97dcda17875a33844643128c9bd1607957300f064d4ee3e3bb4da545d8efd0dd6e32549d1fac6d0a7094d62e1b721a40b209e1b183f7743e99851
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubocop_todo_corrector (0.13.0)
4
+ rubocop_todo_corrector (0.14.2)
5
5
  asciidoctor
6
6
  bundler
7
7
  thor
@@ -35,10 +35,15 @@ module RubocopTodoCorrector
35
35
  cop_document = CopDocumentParser.call(source_path: cop_source_path)
36
36
  return unless cop_document
37
37
 
38
+ cop_url = CopUrlFinder.call(
39
+ cop_name: @cop_name,
40
+ cop_source_path:,
41
+ temporary_gemfile_path: @temporary_gemfile_path
42
+ )
38
43
  description = DescriptionRenderer.call(
39
44
  cop_document:,
40
45
  cop_name: @cop_name,
41
- cop_source_path:
46
+ cop_url:
42
47
  )
43
48
  ::Kernel.puts(description)
44
49
  end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'asciidoctor'
4
3
  require 'yard'
5
4
 
6
5
  module RubocopTodoCorrector
@@ -38,14 +37,6 @@ module RubocopTodoCorrector
38
37
 
39
38
  # @return [String]
40
39
  def description
41
- ::Asciidoctor.convert(
42
- docstring,
43
- safe: :safe
44
- )
45
- end
46
-
47
- # @return [String]
48
- def docstring
49
40
  yard_class_object.docstring
50
41
  end
51
42
 
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'open3'
4
+
5
+ module RubocopTodoCorrector
6
+ class CopUrlFinder
7
+ class << self
8
+ # @param [String] cop_name
9
+ # @param [String] cop_source_path
10
+ # @param [String] temporary_gemfile_path
11
+ # @return [String]
12
+ def call(
13
+ cop_name:,
14
+ cop_source_path:,
15
+ temporary_gemfile_path:
16
+ )
17
+ new(
18
+ cop_name:,
19
+ cop_source_path:,
20
+ temporary_gemfile_path:
21
+ ).call
22
+ end
23
+ end
24
+
25
+ def initialize(
26
+ cop_name:,
27
+ cop_source_path:,
28
+ temporary_gemfile_path:
29
+ )
30
+ @cop_name = cop_name
31
+ @cop_source_path = cop_source_path
32
+ @temporary_gemfile_path = temporary_gemfile_path
33
+ end
34
+
35
+ # @return [String]
36
+ def call
37
+ if !captured_url.empty?
38
+ captured_url
39
+ elsif gem_name
40
+ "https://www.rubydoc.info/gems/#{gem_name}/RuboCop/Cop/#{@cop_name}"
41
+ else
42
+ "https://www.google.com/search?q=rubocop+#{::URI.encode_www_form_component(@cop_name.inspect)}"
43
+ end
44
+ end
45
+
46
+ private
47
+
48
+ # @return [String, nil]
49
+ def captured_url
50
+ @captured_url ||= ::Open3.capture2(
51
+ { 'BUNDLE_GEMFILE' => @temporary_gemfile_path },
52
+ "bundle exec rubocop --show-docs-url #{@cop_name}"
53
+ ).first.strip
54
+ end
55
+
56
+ # @return [String, nil]
57
+ def gem_name
58
+ @gem_name ||= @cop_source_path[
59
+ %r{/gems/([\w-]+)-\d+(?:\.\w+)*/lib},
60
+ 1
61
+ ]
62
+ end
63
+ end
64
+ end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'asciidoctor'
3
4
  require 'erb'
5
+ require 'open3'
4
6
 
5
7
  module RubocopTodoCorrector
6
8
  class DescriptionRenderer
@@ -9,17 +11,17 @@ module RubocopTodoCorrector
9
11
  class << self
10
12
  # @param [String] cop_document
11
13
  # @param [String] cop_name
12
- # @param [String] cop_source_path
14
+ # @param [String] cop_url
13
15
  # @return [String]
14
16
  def call(
15
17
  cop_document:,
16
18
  cop_name:,
17
- cop_source_path:
19
+ cop_url:
18
20
  )
19
21
  new(
20
22
  cop_document:,
21
23
  cop_name:,
22
- cop_source_path:
24
+ cop_url:
23
25
  ).call
24
26
  end
25
27
  end
@@ -27,11 +29,11 @@ module RubocopTodoCorrector
27
29
  def initialize(
28
30
  cop_document:,
29
31
  cop_name:,
30
- cop_source_path:
32
+ cop_url:
31
33
  )
32
34
  @cop_document = cop_document
33
35
  @cop_name = cop_name
34
- @cop_source_path = cop_source_path
36
+ @cop_url = cop_url
35
37
  end
36
38
 
37
39
  # @return [String]
@@ -41,21 +43,23 @@ module RubocopTodoCorrector
41
43
 
42
44
  private
43
45
 
46
+ # Convert AsciiDoc to HTML.
47
+ # @param [String] string
44
48
  # @return [String]
45
- def cop_url
46
- if gem_name
47
- "https://www.rubydoc.info/gems/#{gem_name}/RuboCop/Cop/#{@cop_name}"
48
- else
49
- "https://www.google.com/search?q=rubocop+#{::URI.encode_www_form_component(@cop_name.inspect)}"
50
- end
49
+ def asciidoc(string)
50
+ ::Asciidoctor.convert(
51
+ string,
52
+ safe: :safe
53
+ )
51
54
  end
52
55
 
53
- # @return [String, nil]
54
- def gem_name
55
- @gem_name ||= @cop_source_path[
56
- %r{/gems/([\w-]+)-\d+(?:\.\w+)*/lib},
57
- 1
58
- ]
56
+ # Prepend quote marker to each line.
57
+ # @param [String] string
58
+ # @return [String]
59
+ def quote(string)
60
+ string.each_line.map do |line|
61
+ "> #{line}".strip
62
+ end.join("\n")
59
63
  end
60
64
 
61
65
  # @return [String]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubocopTodoCorrector
4
- VERSION = '0.13.0'
4
+ VERSION = '0.14.2'
5
5
  end
@@ -8,6 +8,7 @@ module RubocopTodoCorrector
8
8
  autoload :Commands, 'rubocop_todo_corrector/commands'
9
9
  autoload :CopDocumentParser, 'rubocop_todo_corrector/cop_document_parser'
10
10
  autoload :CopSourceDetector, 'rubocop_todo_corrector/cop_source_detector'
11
+ autoload :CopUrlFinder, 'rubocop_todo_corrector/cop_url_finder'
11
12
  autoload :DescriptionRenderer, 'rubocop_todo_corrector/description_renderer'
12
13
  autoload :GemNamesDetector, 'rubocop_todo_corrector/gem_names_detector'
13
14
  autoload :GemVersionDetector, 'rubocop_todo_corrector/gem_version_detector'
@@ -2,20 +2,18 @@ Auto-correct <%= @cop_name %>
2
2
 
3
3
  ## Summary
4
4
 
5
- Auto-corrected [<%= @cop_name %>](<%= cop_url %>).
5
+ Auto-corrected [<%= @cop_name %>](<%= @cop_url %>).
6
6
 
7
7
  ## Details
8
8
 
9
9
  ### <%= @cop_name %>
10
10
 
11
- <% @cop_document[:description].each_line do |line| -%>
12
- <%= "> #{line}".strip %>
13
- <% end -%>
11
+ <%= quote(asciidoc(@cop_document[:description])) %>
14
12
  <% if @cop_document[:safety] -%>
15
13
  >
16
14
  > #### Safety
17
15
  >
18
- > <%= @cop_document[:safety][:text].gsub("\n", " ").strip %>
16
+ <%= quote(asciidoc(@cop_document[:safety][:text])) %>
19
17
  <% end -%>
20
18
  <% unless @cop_document[:examples].empty? -%>
21
19
  >
@@ -27,9 +25,7 @@ Auto-corrected [<%= @cop_name %>](<%= cop_url %>).
27
25
  <% end -%>
28
26
  >
29
27
  > ```ruby
30
- <% example[:text].each_line do |line| -%>
31
- <%= "> #{line}".strip %>
32
- <% end -%>
28
+ <%= quote(example[:text]) %>
33
29
  > ```
34
30
  <% end -%>
35
31
  <% end -%>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop_todo_corrector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-12 00:00:00.000000000 Z
11
+ date: 2022-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
@@ -76,7 +76,6 @@ extra_rdoc_files: []
76
76
  files:
77
77
  - ".rspec"
78
78
  - ".rubocop.yml"
79
- - CHANGELOG.md
80
79
  - CODE_OF_CONDUCT.md
81
80
  - Gemfile
82
81
  - Gemfile.lock
@@ -98,6 +97,7 @@ files:
98
97
  - lib/rubocop_todo_corrector/commands/remove.rb
99
98
  - lib/rubocop_todo_corrector/cop_document_parser.rb
100
99
  - lib/rubocop_todo_corrector/cop_source_detector.rb
100
+ - lib/rubocop_todo_corrector/cop_url_finder.rb
101
101
  - lib/rubocop_todo_corrector/description_renderer.rb
102
102
  - lib/rubocop_todo_corrector/gem_names_detector.rb
103
103
  - lib/rubocop_todo_corrector/gem_version_detector.rb
data/CHANGELOG.md DELETED
@@ -1,101 +0,0 @@
1
- # Changelog
2
-
3
- ## Unreleased
4
-
5
- ## 0.12.0 - 2022-08-08
6
-
7
- ### Added
8
-
9
- - Add Safety section if `@safety` YARD tag is written in Cop class.
10
-
11
- ## 0.11.1 - 2022-08-03
12
-
13
- ### Fixed
14
-
15
- - Fix `describe` command on more than three nested cop class.
16
-
17
- ## 0.11.0 - 2022-07-29
18
-
19
- ### Changed
20
-
21
- - Use `rubocop --regenerate-todo` option on `generate` command.
22
-
23
- ## 0.10.0 - 2022-07-27
24
-
25
- ### Added
26
-
27
- - Add `ignore` command.
28
-
29
- ## 0.9.0 - 2022-07-27
30
-
31
- ### Added
32
-
33
- - Add `.rubocop_todo_corrector_ignore` file support.
34
-
35
- ## 0.8.0 - 2022-07-23
36
-
37
- ### Added
38
-
39
- - Add `clean` command.
40
-
41
- ## 0.7.1 - 2022-05-28
42
-
43
- ### Fixed
44
-
45
- - Fix YARD unknown tag warning.
46
-
47
- ## 0.7.0 - 2022-05-27
48
-
49
- ### Added
50
-
51
- - Support rubocop 1.30 .rubocop_todo.yml format.
52
-
53
- ## 0.6.0 - 2022-05-16
54
-
55
- ### Added
56
-
57
- - Add `--only-safe` option to `correct` and `pick` command (default: `true`).
58
-
59
- ## 0.5.0 - 2022-05-16
60
-
61
- ### Changed
62
-
63
- - Change required ruby version from 3.0 to 3.1.
64
-
65
- ## 0.4.0 - 2022-05-16
66
-
67
- ### Fixed
68
-
69
- - Fix misspell: `occured` -> `occurred`.
70
-
71
- ## 0.3.0 - 2022-05-15
72
-
73
- ### Changed
74
-
75
- - Change `describe` output so that commit-message-ready text is described.
76
-
77
- ## 0.2.0 - 2022-05-15
78
-
79
- ### Added
80
-
81
- - Add `correct` command.
82
-
83
- ### Changed
84
-
85
- - Improve description on no named example.
86
-
87
- ## 0.1.1 - 2022-05-15
88
-
89
- ### Changed
90
-
91
- - Abort if no cop was picked on `pick` command.
92
-
93
- ### Fixed
94
-
95
- - Fix bug that `pick` cannot find any cop on rubocop >= 1.26.
96
-
97
- ## 0.1.0 - 2022-05-15
98
-
99
- ### Added
100
-
101
- - Initial release.