chusaku 1.4.1 → 1.5.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
  SHA256:
3
- metadata.gz: f8ab5946d4be43df335d71e2cc2639c8c4f548230f3ba035a947b53d0008c20a
4
- data.tar.gz: b396e52e72f519352e0bfee5d9bde697bd6047a1ba3a1ff79d25a56331ad523a
3
+ metadata.gz: 34e6c3d99896a2ad9665c71b82575bb40491b8bcafa507560deeda2bf33b612b
4
+ data.tar.gz: 0ddf816adf5f24ccd5eb29d186db0e4014cd6c349fd11b950b268dd35154c3df
5
5
  SHA512:
6
- metadata.gz: a586a909a9c01f86555af6e5416d5c20ee3b6baf492c30cde206ec85b26767f9cdc058e08b71fa3ccd660687baa36436a83b545d3533d3ccab2c3156b29a7a0f
7
- data.tar.gz: 981fd3e8225cf30346e50c7bc0654fc35b77528e82fabf444a3e25f6254c151f49ba96047e02e685337aa27fd69951f551b75fcf147f03937ac8b0f34cf416db
6
+ metadata.gz: fdec79c08e8a227a4e527c4325281a5499ecbbc3a511d9793b089da831aca609d260a60c013b770a1f2b49eb0cf643b222584af25f4f0d7ec719f2915f89a3a1
7
+ data.tar.gz: f48ff79a5d78e5e7a888f99f6e19e5e2a0e11e760f1085a0ec75c17b6f4375571cf48ab52ff9781d52cf6948131ea993bb6cc096ab63eda762df8470402e1aa5
@@ -1,14 +1,18 @@
1
1
  name: Linting
2
2
  on: [pull_request]
3
3
  jobs:
4
- standard:
4
+ lint:
5
5
  runs-on: ubuntu-latest
6
6
  steps:
7
- - uses: actions/checkout@v2
7
+ - name: Checkout
8
+ uses: actions/checkout@v4
9
+
8
10
  - name: Set up Ruby
9
11
  uses: ruby/setup-ruby@v1
10
12
  with:
11
- ruby-version: 3.3
13
+ ruby-version: 4.0
14
+ bundler: 4
12
15
  bundler-cache: true
16
+
13
17
  - name: Run Standard
14
18
  run: bundle exec standardrb --fail-level A
@@ -5,13 +5,18 @@ jobs:
5
5
  runs-on: ubuntu-latest
6
6
  strategy:
7
7
  matrix:
8
- ruby-version: ["3.1", "3.2", "3.3"]
8
+ ruby-version: ["3.2", "3.3", "3.4", "4.0"]
9
+
9
10
  steps:
10
- - uses: actions/checkout@v2
11
+ - name: Checkout
12
+ uses: actions/checkout@v4
13
+
11
14
  - name: Set up Ruby
12
15
  uses: ruby/setup-ruby@v1
13
16
  with:
14
17
  ruby-version: ${{ matrix.ruby-version }}
18
+ bundler: 4
15
19
  bundler-cache: true
20
+
16
21
  - name: Run tests
17
- run: bundle exec rake
22
+ run: bundle exec rake test
data/README.md CHANGED
@@ -17,6 +17,21 @@ def update
17
17
  end
18
18
  ```
19
19
 
20
+ With `--format=rdoc`:
21
+
22
+ ```ruby
23
+ # Route:: GET /waterlilies/:id (waterlily)
24
+ def show
25
+ # ...
26
+ end
27
+
28
+ # Route:: PATCH /waterlilies/:id (waterlily)
29
+ # Route:: PUT /waterlilies/:id (waterlily)
30
+ def update
31
+ # ...
32
+ end
33
+ ```
34
+
20
35
  Based on your `routes.rb` file!
21
36
 
22
37
 
@@ -54,6 +69,7 @@ Usage: chusaku [options]
54
69
  --exit-with-error-on-annotation Fail if any file was annotated
55
70
  -c, --controllers-pattern=GLOB Specify alternative controller files glob pattern
56
71
  -e, --exclusion-pattern=GLOB Specify controller files exclusion glob pattern
72
+ -f, --format=FORMAT Annotation style: yard (default) or rdoc
57
73
  --verbose Print all annotated files
58
74
  -v, --version Show Chusaku version number and quit
59
75
  -h, --help Show this help message and quit
data/chusaku.gemspec CHANGED
@@ -23,8 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.metadata["source_code_uri"] = spec.homepage
24
24
  spec.metadata["changelog_uri"] = spec.homepage
25
25
  else
26
- raise "RubyGems 2.0 or newer is required to protect against " \
27
- "public gem pushes."
26
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
28
27
  end
29
28
 
30
29
  # Specify which files should be added to the gem when it is released.
@@ -39,10 +38,10 @@ Gem::Specification.new do |spec|
39
38
  spec.executables = "chusaku"
40
39
  spec.require_paths = ["lib"]
41
40
 
42
- spec.add_development_dependency "bundler", "~> 2.2"
43
- spec.add_development_dependency "minitest", "~> 5.14"
44
- spec.add_development_dependency "rake", "~> 13.0"
45
- spec.add_development_dependency "standardrb", "~> 1.0"
41
+ spec.add_development_dependency "bundler", "~> 4"
42
+ spec.add_development_dependency "minitest", "~> 5"
43
+ spec.add_development_dependency "rake", "~> 13"
44
+ spec.add_development_dependency "standard", "~> 1"
46
45
 
47
46
  spec.add_dependency "railties", ">= 3.0"
48
47
  end
data/lib/chusaku/cli.rb CHANGED
@@ -58,6 +58,7 @@ module Chusaku
58
58
  add_error_on_annotation_flag(opts)
59
59
  add_controllers_pattern_flag(opts)
60
60
  add_exclusion_pattern_flag(opts)
61
+ add_format_flag(opts)
61
62
  add_verbose_flag(opts)
62
63
  add_version_flag(opts)
63
64
  add_help_flag(opts)
@@ -104,6 +105,16 @@ module Chusaku
104
105
  end
105
106
  end
106
107
 
108
+ # Adds `--format` flag.
109
+ #
110
+ # @param opts [OptionParser] OptionParser instance
111
+ # @return [void]
112
+ def add_format_flag(opts)
113
+ opts.on("-f", "--format=FORMAT", %w[yard rdoc], "Annotation style: yard (default) or rdoc") do |value|
114
+ @options[:format] = value.to_sym
115
+ end
116
+ end
117
+
107
118
  # Adds `--verbose` flag.
108
119
  #
109
120
  # @param opts [OptionParser] OptionParser instance
@@ -1,3 +1,5 @@
1
+ require "active_support/inflector"
2
+
1
3
  module Chusaku
2
4
  # Handles extracting information about the Rails project's routes.
3
5
  class Routes
@@ -192,7 +194,8 @@ module Chusaku
192
194
  controller = defaults.delete(:controller)
193
195
  action = defaults.delete(:action)
194
196
 
195
- controller_class = controller ? "#{controller.underscore.camelize}Controller".constantize : nil
197
+ controller_name = ActiveSupport::Inflector.camelize(ActiveSupport::Inflector.underscore(controller))
198
+ controller_class = controller ? ActiveSupport::Inflector.constantize("#{controller_name}Controller") : nil
196
199
  action_method_name = action&.to_sym
197
200
  source_path =
198
201
  if !action_method_name.nil? && controller_class&.method_defined?(action_method_name)
@@ -1,3 +1,3 @@
1
1
  module Chusaku
2
- VERSION = "1.4.1"
2
+ VERSION = "1.5.0"
3
3
  end
data/lib/chusaku.rb CHANGED
@@ -105,6 +105,7 @@ module Chusaku
105
105
  return unless group[:type] == :comment
106
106
 
107
107
  group[:body] = group[:body].gsub(/^\s*#\s*@route.*$\n/, "")
108
+ group[:body] = group[:body].gsub(/^\s*#\s*Route::.*$\n/, "")
108
109
  group[:body] =
109
110
  group[:body].gsub(%r{^\s*# (GET|POST|PATCH/PUT|DELETE) /\S+$\n}, "")
110
111
  end
@@ -134,7 +135,8 @@ module Chusaku
134
135
  # @param source_path [String] Path to controller file
135
136
  # @return [String] "@route <verb> <path> {<defaults>} (<name>)"
136
137
  def annotate_route(verb:, path:, name:, defaults:, source_path:)
137
- annotation = "@route #{verb} #{path}"
138
+ prefix = (@flags[:format] == :rdoc) ? "Route::" : "@route"
139
+ annotation = "#{prefix} #{verb} #{path}"
138
140
  if defaults&.any?
139
141
  defaults_str =
140
142
  defaults
@@ -188,7 +190,7 @@ module Chusaku
188
190
  #
189
191
  # @return [String] 'r' or 'w'
190
192
  def file_mode
191
- File.instance_methods.include?(:test_write) ? "r" : "w"
193
+ File.method_defined?(:test_write) ? "r" : "w"
192
194
  end
193
195
 
194
196
  # Output results to user.
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chusaku
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nishiki Liu
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-11-10 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
@@ -16,56 +15,56 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: '2.2'
18
+ version: '4'
20
19
  type: :development
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: '2.2'
25
+ version: '4'
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: minitest
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: '5.14'
32
+ version: '5'
34
33
  type: :development
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: '5.14'
39
+ version: '5'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: rake
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: '13.0'
46
+ version: '13'
48
47
  type: :development
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
- version: '13.0'
53
+ version: '13'
55
54
  - !ruby/object:Gem::Dependency
56
- name: standardrb
55
+ name: standard
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: '1.0'
60
+ version: '1'
62
61
  type: :development
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: '1.0'
67
+ version: '1'
69
68
  - !ruby/object:Gem::Dependency
70
69
  name: railties
71
70
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +113,6 @@ metadata:
114
113
  homepage_uri: https://github.com/nshki/chusaku
115
114
  source_code_uri: https://github.com/nshki/chusaku
116
115
  changelog_uri: https://github.com/nshki/chusaku
117
- post_install_message:
118
116
  rdoc_options: []
119
117
  require_paths:
120
118
  - lib
@@ -129,8 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
127
  - !ruby/object:Gem::Version
130
128
  version: '0'
131
129
  requirements: []
132
- rubygems_version: 3.5.23
133
- signing_key:
130
+ rubygems_version: 4.0.6
134
131
  specification_version: 4
135
132
  summary: Annotate your Rails controllers with route info.
136
133
  test_files: []