yard 0.9.26 → 0.9.37
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 +4 -4
- data/CHANGELOG.md +104 -8
- data/LEGAL +29 -1
- data/LICENSE +1 -1
- data/README.md +9 -2
- data/docs/Tags.md +1 -1
- data/docs/WhatsNew.md +2 -2
- data/lib/yard/autoload.rb +3 -1
- data/lib/yard/cli/command.rb +1 -1
- data/lib/yard/cli/stats.rb +4 -1
- data/lib/yard/cli/yardoc.rb +5 -3
- data/lib/yard/code_objects/base.rb +5 -1
- data/lib/yard/code_objects/macro_object.rb +0 -1
- data/lib/yard/config.rb +5 -1
- data/lib/yard/docstring_parser.rb +1 -2
- data/lib/yard/handlers/processor.rb +0 -1
- data/lib/yard/handlers/ruby/attribute_handler.rb +1 -1
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +1 -1
- data/lib/yard/handlers/ruby/method_handler.rb +2 -2
- data/lib/yard/handlers/ruby/mixin_handler.rb +15 -6
- data/lib/yard/handlers/ruby/module_function_handler.rb +15 -3
- data/lib/yard/handlers/ruby/visibility_handler.rb +13 -1
- data/lib/yard/i18n/locale.rb +1 -1
- data/lib/yard/i18n/message.rb +2 -2
- data/lib/yard/i18n/messages.rb +1 -1
- data/lib/yard/i18n/pot_generator.rb +1 -1
- data/lib/yard/logging.rb +116 -61
- data/lib/yard/open_struct.rb +67 -0
- data/lib/yard/options.rb +1 -1
- data/lib/yard/parser/ruby/ast_node.rb +9 -2
- data/lib/yard/parser/ruby/legacy/ruby_lex.rb +19 -4
- data/lib/yard/parser/ruby/ruby_parser.rb +9 -3
- data/lib/yard/parser/source_parser.rb +4 -5
- data/lib/yard/registry_resolver.rb +2 -1
- data/lib/yard/server/commands/base.rb +1 -1
- data/lib/yard/server/commands/library_command.rb +9 -9
- data/lib/yard/server/commands/static_file_helpers.rb +1 -2
- data/lib/yard/server/http_utils.rb +512 -0
- data/lib/yard/server/rack_adapter.rb +13 -5
- data/lib/yard/tags/default_factory.rb +1 -0
- data/lib/yard/tags/directives.rb +10 -2
- data/lib/yard/tags/tag.rb +3 -2
- data/lib/yard/tags/types_explainer.rb +1 -1
- data/lib/yard/templates/engine.rb +0 -1
- data/lib/yard/templates/helpers/html_helper.rb +5 -2
- data/lib/yard/templates/helpers/markup_helper.rb +2 -1
- data/lib/yard/templates/helpers/method_helper.rb +3 -1
- data/lib/yard/templates/template.rb +3 -1
- data/lib/yard/templates/template_options.rb +0 -1
- data/lib/yard/version.rb +1 -1
- data/lib/yard.rb +6 -0
- data/po/ja.po +19 -19
- data/templates/default/fulldoc/html/css/full_list.css +3 -3
- data/templates/default/fulldoc/html/css/style.css +6 -0
- data/templates/default/fulldoc/html/frames.erb +9 -4
- data/templates/default/fulldoc/html/full_list.erb +5 -2
- data/templates/default/fulldoc/html/js/app.js +294 -264
- data/templates/default/fulldoc/html/js/full_list.js +30 -4
- data/templates/default/fulldoc/html/setup.rb +10 -2
- data/templates/default/layout/html/footer.erb +1 -1
- data/templates/default/onefile/html/headers.erb +2 -0
- data/templates/default/tags/html/example.erb +2 -2
- data/templates/default/tags/html/option.erb +1 -1
- metadata +5 -41
- data/.dockerignore +0 -2
- data/.gitattributes +0 -4
- data/.github/FUNDING.yml +0 -3
- data/.github/ISSUE_TEMPLATE.md +0 -33
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -12
- data/.github/workflows/ci.yml +0 -42
- data/.github/workflows/gem.yml +0 -27
- data/.gitignore +0 -14
- data/.rspec +0 -2
- data/.rubocop.yml +0 -112
- data/.travis.yml +0 -49
- data/CODE_OF_CONDUCT.md +0 -15
- data/CONTRIBUTING.md +0 -140
- data/Dockerfile.samus +0 -28
- data/Gemfile +0 -33
- data/Rakefile +0 -39
- data/SECURITY.md +0 -26
- data/benchmarks/builtins_vs_eval.rb +0 -24
- data/benchmarks/concat_vs_join.rb +0 -13
- data/benchmarks/erb_vs_erubis.rb +0 -54
- data/benchmarks/format_args.rb +0 -47
- data/benchmarks/generation.rb +0 -38
- data/benchmarks/marshal_vs_dbm.rb +0 -64
- data/benchmarks/parsing.rb +0 -46
- data/benchmarks/pathname_vs_string.rb +0 -51
- data/benchmarks/rdoc_vs_yardoc.rb +0 -11
- data/benchmarks/registry_store_types.rb +0 -49
- data/benchmarks/ri_vs_yri.rb +0 -19
- data/benchmarks/ripper_parser.rb +0 -13
- data/benchmarks/splat_vs_flatten.rb +0 -13
- data/benchmarks/template_erb.rb +0 -23
- data/benchmarks/template_format.rb +0 -7
- data/benchmarks/template_profile.rb +0 -18
- data/benchmarks/yri_cache.rb +0 -20
- data/samus.json +0 -49
- data/tasks/update_error_map.rake +0 -53
- data/yard.gemspec +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0774d1772b133075737690acbc502767f6fef28d3765a14929074259248f3981
|
4
|
+
data.tar.gz: '068103b3caf24a6c6071a6c9b0f52bd58641fd0c03e22220fb2d1b09a104385c'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64a799b2f45d7ad6aad8684c805344f242c8e2f8ef1c60a43094bc237bccd449ee1c93c60c0f54a36f05a79e5b652636d7170dce85941b1f74a4bcc173c92c21
|
7
|
+
data.tar.gz: b19ba690f1a244b0c7df5c1524f77355323fa9164e9496c609f258b3d0691c0a3d807cd985f20f335884ba1d8e97193149d4a7b9e1eebd9ed3a43431492a1ce3
|
data/CHANGELOG.md
CHANGED
@@ -1,13 +1,109 @@
|
|
1
1
|
# main
|
2
2
|
|
3
|
-
# 0.9.
|
3
|
+
# [0.9.37] - September 4th, 2024
|
4
|
+
|
5
|
+
[0.9.37]: https://github.com/lsegal/yard/compare/v0.9.36...v0.9.37
|
6
|
+
|
7
|
+
- Fix JavaScript errors in `--one-file` template (#1426)
|
8
|
+
- Fix heredoc parsing and add support for squiggly heredocs (#1315, #1495)
|
9
|
+
- Accessibility improvements to the default template (#1501)
|
10
|
+
- Improved YARD documentation (#1410, #1512, #1516, #1544)
|
11
|
+
- Fix error when parsing `@option` tags (#1515)
|
12
|
+
- Fix issue parsing UTF-8 filenames (#1517)
|
13
|
+
- Replace OpenStruct with optimized YARD::OpenStruct to avoid ostruct performance warnings (#1545)
|
14
|
+
- Add support for `private attr_*` syntax (#1541)
|
15
|
+
- Remove logger dependency (#1546)
|
16
|
+
|
17
|
+
# [0.9.36] - February 29th, 2024
|
18
|
+
|
19
|
+
[0.9.36]: https://github.com/lsegal/yard/compare/v0.9.35...v0.9.36
|
20
|
+
|
21
|
+
- Further XSS fixes for generated frameset pages (#1538)
|
22
|
+
- Improve tests for Ruby 3.3 compatibility (#1519, #1531)
|
23
|
+
- Documentation improvements (#1524)
|
24
|
+
|
25
|
+
# [0.9.35] - February 28th, 2024
|
26
|
+
|
27
|
+
[0.9.35]: https://github.com/lsegal/yard/compare/v0.9.34...v0.9.35
|
28
|
+
|
29
|
+
- Fix possible XSS on generated YARD frameset pages (thanks to @RedYetiDev for finding and patching) (2069e2b).
|
30
|
+
- Fix errors when using `@option` on non-method objects (#1508)
|
31
|
+
- Support Ruby 3.3 changes in Ripper parser (#1510)
|
32
|
+
|
33
|
+
# [0.9.34] - April 12nd, 2023
|
34
|
+
|
35
|
+
[0.9.34]: https://github.com/lsegal/yard/compare/v0.9.33...v0.9.34
|
36
|
+
|
37
|
+
- Add changelog to yard.gemspec
|
38
|
+
- Fix fork behavior in `yard server --fork`
|
39
|
+
|
40
|
+
# [0.9.33] - April 11st, 2023
|
41
|
+
|
42
|
+
[0.9.33]: https://github.com/lsegal/yard/compare/v0.9.32...v0.9.33
|
43
|
+
|
44
|
+
- Ensure .yardopts is present in gem package (internal YARD documentation change)
|
45
|
+
|
46
|
+
# 0.9.32 - April 9th, 2023
|
47
|
+
|
48
|
+
[0.9.32]: https://github.com/lsegal/yard/compare/v0.9.31...v0.9.32
|
49
|
+
|
50
|
+
- Fix issue with custom Rack::Request attributes in `yard server`
|
51
|
+
|
52
|
+
# [0.9.31] - April 9th, 2023
|
53
|
+
|
54
|
+
[0.9.31]: https://github.com/lsegal/yard/compare/v0.9.30...v0.9.31
|
55
|
+
|
56
|
+
- Remove dependency on webrick in YARD::Server::Commands::StaticFileHelpers
|
57
|
+
|
58
|
+
# [0.9.30] - April 9th, 2023
|
59
|
+
|
60
|
+
[0.9.30]: https://github.com/lsegal/yard/compare/v0.9.29...v0.9.30
|
61
|
+
|
62
|
+
- Hot release fix to correct issue with gem packaging missing templates (#1490)
|
63
|
+
|
64
|
+
# [0.9.29] - April 8th, 2023
|
65
|
+
|
66
|
+
[0.9.29]: https://github.com/lsegal/yard/compare/v0.9.28...v0.9.29
|
67
|
+
|
68
|
+
- Enable table support for CommonMarker (#1443)
|
69
|
+
- Parser performance improvements (#1452, #1453, #1454, #1455)
|
70
|
+
- Fix autoload of RipperParser (#1460)
|
71
|
+
- Remove dependency on webrick for better Ruby 3.1+ support
|
72
|
+
- Improvements for mixin resolution (#1467, #1468)
|
73
|
+
|
74
|
+
# [0.9.28] - June 1st, 2022
|
75
|
+
|
76
|
+
[0.9.28]: https://github.com/lsegal/yard/compare/v0.9.27...v0.9.28
|
77
|
+
|
78
|
+
- Safe load config YAML files (#1385)
|
79
|
+
- Handle empty string constants (#1415)
|
80
|
+
- Pre-emptively support removal of `Object#taint` in Ruby 3.2 (#1419)
|
81
|
+
- Fix Ruby 3.1 forward args Ripper change (#1431)
|
82
|
+
|
83
|
+
# [0.9.27] - November 29th, 2021
|
84
|
+
|
85
|
+
[0.9.27]: https://github.com/lsegal/yard/compare/v0.9.26...v0.9.27
|
86
|
+
|
87
|
+
- Add support for Ruby 3.0 endless method definitions. (#1376, #1381)
|
88
|
+
- Add existence check for README file (#1367)
|
89
|
+
- Support module_function decorator (#1365)
|
90
|
+
- Add CommonMarker markup support (`-m commonmarker`) (#1157, #1388)
|
91
|
+
- Fix nested array parsing (#1389)
|
92
|
+
- Add WEBrick as a runtime dependency for Ruby 3.0 support (#1400)
|
93
|
+
- Support `fail_on_warning` option in `yard stats` command (#1392)
|
94
|
+
- Better integration with Sorbet (#1401)
|
95
|
+
- Handle include mixins on complex paths (#1386)
|
96
|
+
- Fix `@!scope` maintaining state in lone comment blocks (#1411)
|
97
|
+
- Remove support for Travis CI
|
98
|
+
|
99
|
+
# [0.9.26] - December 26th, 2020
|
4
100
|
|
5
101
|
[0.9.26]: https://github.com/lsegal/yard/compare/v0.9.25...v0.9.26
|
6
102
|
|
7
103
|
- Add support for Ruby 3.0 and fix tests
|
8
104
|
- Fix support for `frozen_string_literal: false` magic comments (#1363)
|
9
105
|
|
10
|
-
# 0.9.25 - May 3rd, 2020
|
106
|
+
# [0.9.25] - May 3rd, 2020
|
11
107
|
|
12
108
|
[0.9.25]: https://github.com/lsegal/yard/compare/v0.9.24...v0.9.25
|
13
109
|
|
@@ -22,7 +118,7 @@
|
|
22
118
|
- Omit spec files in gem package (#1307)
|
23
119
|
- README updates (#1322)
|
24
120
|
|
25
|
-
# 0.9.24 - January 8th, 2020
|
121
|
+
# [0.9.24] - January 8th, 2020
|
26
122
|
|
27
123
|
[0.9.24]: https://github.com/lsegal/yard/compare/v0.9.23...v0.9.24
|
28
124
|
|
@@ -30,20 +126,20 @@
|
|
30
126
|
cache is changed.
|
31
127
|
- Fix issue where Registry fails to resolve first-time lookups on instance methods.
|
32
128
|
|
33
|
-
# 0.9.23 - January 5th, 2020
|
129
|
+
# [0.9.23] - January 5th, 2020
|
34
130
|
|
35
131
|
[0.9.23]: https://github.com/lsegal/yard/compare/v0.9.22...v0.9.23
|
36
132
|
|
37
133
|
- Fix issues with double encoded code blocks when highlighted from an extra
|
38
134
|
file.
|
39
135
|
|
40
|
-
# 0.9.22 - December 31st, 2019
|
136
|
+
# [0.9.22] - December 31st, 2019
|
41
137
|
|
42
138
|
[0.9.22]: https://github.com/lsegal/yard/compare/v0.9.21...v0.9.22
|
43
139
|
|
44
140
|
- Revert jquery update in last release since it requires more changes. (#1298)
|
45
141
|
|
46
|
-
# 0.9.21 - December 31st, 2019
|
142
|
+
# [0.9.21] - December 31st, 2019
|
47
143
|
|
48
144
|
[0.9.21]: https://github.com/lsegal/yard/compare/v0.9.20...v0.9.21
|
49
145
|
|
@@ -59,7 +155,7 @@
|
|
59
155
|
- Update jquery to 3.4.1 (#1294)
|
60
156
|
- Test fixes (#1244)
|
61
157
|
|
62
|
-
# 0.9.20 - June 27th, 2019
|
158
|
+
# [0.9.20] - June 27th, 2019
|
63
159
|
|
64
160
|
[0.9.20]: https://github.com/lsegal/yard/compare/v0.9.19...v0.9.20
|
65
161
|
|
@@ -69,7 +165,7 @@
|
|
69
165
|
`yard server` host under certain conditions. Thanks to CuongMX from
|
70
166
|
Viettel Cyber Security for discovering this vulnerability.
|
71
167
|
|
72
|
-
# 0.9.19 - April 2nd, 2019
|
168
|
+
# [0.9.19] - April 2nd, 2019
|
73
169
|
|
74
170
|
[0.9.19]: https://github.com/lsegal/yard/compare/v0.9.16...v0.9.19
|
75
171
|
|
data/LEGAL
CHANGED
@@ -4,7 +4,7 @@ LEGAL NOTICE INFORMATION
|
|
4
4
|
All the files in this distribution are covered under either the MIT
|
5
5
|
license (see the file LICENSE) except some files mentioned below.
|
6
6
|
|
7
|
-
lib/parser/ruby/legacy/ruby_lex.rb:
|
7
|
+
lib/yard/parser/ruby/legacy/ruby_lex.rb:
|
8
8
|
|
9
9
|
This file is under the Ruby license. YARD uses a modified version of it.
|
10
10
|
|
@@ -64,3 +64,31 @@ lib/parser/ruby/legacy/ruby_lex.rb:
|
|
64
64
|
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
65
65
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
66
66
|
PURPOSE.
|
67
|
+
|
68
|
+
lib/yard/server/http_utils.rb:
|
69
|
+
|
70
|
+
This file is vendored and slightly modified from WEBrick because it was
|
71
|
+
removed from Ruby core in Ruby 3.x.
|
72
|
+
|
73
|
+
Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved.
|
74
|
+
|
75
|
+
Redistribution and use in source and binary forms, with or without
|
76
|
+
modification, are permitted provided that the following conditions
|
77
|
+
are met:
|
78
|
+
1. Redistributions of source code must retain the above copyright
|
79
|
+
notice, this list of conditions and the following disclaimer.
|
80
|
+
2. Redistributions in binary form must reproduce the above copyright
|
81
|
+
notice, this list of conditions and the following disclaimer in the
|
82
|
+
documentation and/or other materials provided with the distribution.
|
83
|
+
|
84
|
+
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
85
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
86
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
87
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
88
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
89
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
90
|
+
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
91
|
+
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
92
|
+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
93
|
+
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
94
|
+
SUCH DAMAGE.
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
[](http://rubydoc.org/gems/yard/frames)
|
6
6
|
|
7
7
|
[](http://github.com/lsegal/yard/releases)
|
8
|
-
[](https://github.com/lsegal/yard/actions/workflows/ci.yml)
|
9
9
|
[](https://coveralls.io/github/lsegal/yard)
|
10
10
|
[](#license)
|
11
11
|
|
@@ -122,6 +122,13 @@ HTML. If running `which rdoc` turns up empty, install RDoc by issuing:
|
|
122
122
|
$ sudo apt-get install rdoc
|
123
123
|
```
|
124
124
|
|
125
|
+
### Markdown parser
|
126
|
+
|
127
|
+
When rendering markdown, yard will use one of several possible markdown providers,
|
128
|
+
[in order of priority](https://github.com/lsegal/yard/blob/e833aac7a01510245dd4ae1d1d18b046c8293c2d/lib/yard/templates/helpers/markup_helper.rb#L26-L33).
|
129
|
+
If you are experiencing rendering bugs (example [1](https://github.com/lsegal/yard/issues/1410) [2](https://github.com/lsegal/yard/issues/1543)), try adding one of the
|
130
|
+
gems further up in the list to your Gemfile.
|
131
|
+
|
125
132
|
## Usage
|
126
133
|
|
127
134
|
There are a couple of ways to use YARD. The first is via command-line, and the
|
@@ -185,7 +192,7 @@ Note that the README file can be specified with its own `--readme` switch.
|
|
185
192
|
You can also add a `.yardopts` file to your project directory which lists the
|
186
193
|
switches separated by whitespace (newlines or space) to pass to yardoc whenever
|
187
194
|
it is run. A full overview of the `.yardopts` file can be found in
|
188
|
-
|
195
|
+
[YARD::CLI::Yardoc](https://rubydoc.info/gems/yard/YARD/CLI/Yardoc#label-Options+File+-28.yardopts-29).
|
189
196
|
|
190
197
|
### Queries
|
191
198
|
|
data/docs/Tags.md
CHANGED
@@ -206,7 +206,7 @@ also be a list of types separated by commas.
|
|
206
206
|
An order dependent list is a set of types surrounded by "()" and separated by
|
207
207
|
commas. This list must contain exactly those types in exactly the order specified.
|
208
208
|
For instance, an Array containing a String, Fixnum and Hash in that order (and
|
209
|
-
having exactly those 3 elements) would be listed as: `Array
|
209
|
+
having exactly those 3 elements) would be listed as: `Array(String, Fixnum, Hash)`.
|
210
210
|
|
211
211
|
#### Literals
|
212
212
|
|
data/docs/WhatsNew.md
CHANGED
@@ -92,7 +92,7 @@ methods are defined dynamically and not associated with any code.
|
|
92
92
|
#### New `@!parse` directive to parse Ruby code
|
93
93
|
|
94
94
|
A new {tag:!parse} directive was added that allows a developer to have
|
95
|
-
YARD parse code that might not necessarily be
|
95
|
+
YARD parse code that might not necessarily be parsable in its original
|
96
96
|
form. This is useful when using `instance_eval` and other dynamic
|
97
97
|
meta-programming techniques to define methods or perform functionality.
|
98
98
|
For instance, a common case of the "self.included" callback in module
|
@@ -1204,7 +1204,7 @@ that is actually being employed. Here's an example:
|
|
1204
1204
|
# @overload def to_html(html, autolink = true)
|
1205
1205
|
# This docstring describes the specific overload only.
|
1206
1206
|
# @param [String] html the HTML
|
1207
|
-
# @param [Boolean] autolink whether or not to
|
1207
|
+
# @param [Boolean] autolink whether or not to automatically link
|
1208
1208
|
# URL references
|
1209
1209
|
# @overload def to_html(html, opts = {})
|
1210
1210
|
# @param [String] html the HTML
|
data/lib/yard/autoload.rb
CHANGED
@@ -170,7 +170,6 @@ module YARD
|
|
170
170
|
|
171
171
|
module Ruby # Ruby parsing components.
|
172
172
|
module Legacy # Handles Ruby parsing in Ruby 1.8.
|
173
|
-
autoload :RipperParser, __p('parser/ruby/legacy/ruby_parser')
|
174
173
|
autoload :RubyParser, __p('parser/ruby/legacy/ruby_parser')
|
175
174
|
autoload :RubyToken, __p('parser/ruby/legacy/ruby_lex')
|
176
175
|
autoload :Statement, __p('parser/ruby/legacy/statement')
|
@@ -180,6 +179,7 @@ module YARD
|
|
180
179
|
|
181
180
|
autoload :AstNode, __p('parser/ruby/ast_node')
|
182
181
|
autoload :RubyParser, __p('parser/ruby/ruby_parser')
|
182
|
+
autoload :RipperParser, __p('parser/ruby/ruby_parser')
|
183
183
|
autoload :TokenResolver, __p('parser/ruby/token_resolver')
|
184
184
|
end
|
185
185
|
|
@@ -236,6 +236,7 @@ module YARD
|
|
236
236
|
autoload :FinishRequest, __p('server/adapter')
|
237
237
|
autoload :LibraryVersion, __p('server/library_version')
|
238
238
|
autoload :NotFoundError, __p('server/adapter')
|
239
|
+
autoload :HTTPUtils, __p('server/http_utils')
|
239
240
|
autoload :RackAdapter, __p('server/rack_adapter')
|
240
241
|
autoload :RackMiddleware, __p('server/rack_adapter')
|
241
242
|
autoload :Router, __p('server/router')
|
@@ -297,6 +298,7 @@ module YARD
|
|
297
298
|
autoload :DocstringParser, __p('docstring_parser')
|
298
299
|
autoload :GemIndex, __p('gem_index')
|
299
300
|
autoload :Logger, __p('logging')
|
301
|
+
autoload :OpenStruct, __p('open_struct')
|
300
302
|
autoload :Options, __p('options')
|
301
303
|
autoload :Registry, __p('registry')
|
302
304
|
autoload :RegistryResolver, __p('registry_resolver')
|
data/lib/yard/cli/command.rb
CHANGED
data/lib/yard/cli/stats.rb
CHANGED
@@ -43,6 +43,8 @@ module YARD
|
|
43
43
|
|
44
44
|
print_statistics
|
45
45
|
print_undocumented_objects
|
46
|
+
|
47
|
+
abort if fail_on_warning && log.warned
|
46
48
|
end
|
47
49
|
|
48
50
|
# Prints statistics for different object types
|
@@ -223,7 +225,8 @@ module YARD
|
|
223
225
|
end
|
224
226
|
|
225
227
|
opts.on('--query QUERY', "Only includes objects that match a specific query") do |query|
|
226
|
-
|
228
|
+
query.taint if query.respond_to?(:taint)
|
229
|
+
options[:verifier].add_expressions(query)
|
227
230
|
end
|
228
231
|
end
|
229
232
|
end
|
data/lib/yard/cli/yardoc.rb
CHANGED
@@ -295,9 +295,10 @@ module YARD
|
|
295
295
|
self.files = Parser::SourceParser::DEFAULT_PATH_GLOB if files.empty?
|
296
296
|
files.delete_if {|x| x =~ /\A\s*\Z/ } # remove empty ones
|
297
297
|
readme = Dir.glob('README{,*[^~]}').
|
298
|
+
select {|f| extra_file_valid?(f)}.
|
298
299
|
sort_by {|r| [r.count('.'), r.index('.'), r] }.first
|
299
300
|
readme ||= Dir.glob(files.first).first if options.onefile && !files.empty?
|
300
|
-
options.readme ||= CodeObjects::ExtraFileObject.new(readme) if readme
|
301
|
+
options.readme ||= CodeObjects::ExtraFileObject.new(readme) if readme && extra_file_valid?(readme)
|
301
302
|
options.files.unshift(options.readme).uniq! if options.readme
|
302
303
|
|
303
304
|
Tags::Library.visible_tags -= hidden_tags
|
@@ -333,7 +334,7 @@ module YARD
|
|
333
334
|
private
|
334
335
|
|
335
336
|
# Generates output for objects
|
336
|
-
# @param [Hash, nil] checksums if supplied, a list of
|
337
|
+
# @param [Hash, nil] checksums if supplied, a list of checksums for files.
|
337
338
|
# @return [void]
|
338
339
|
# @since 0.5.1
|
339
340
|
def run_generate(checksums)
|
@@ -649,7 +650,8 @@ module YARD
|
|
649
650
|
|
650
651
|
opts.on('--query QUERY', "Only show objects that match a specific query") do |query|
|
651
652
|
next if YARD::Config.options[:safe_mode]
|
652
|
-
|
653
|
+
query.taint if query.respond_to?(:taint)
|
654
|
+
options.verifier.add_expressions(query)
|
653
655
|
end
|
654
656
|
|
655
657
|
opts.on('--title TITLE', 'Add a specific title to HTML documents') do |title|
|
@@ -303,6 +303,7 @@ module YARD
|
|
303
303
|
# definitions with docstrings first.
|
304
304
|
#
|
305
305
|
# @return [String] a filename
|
306
|
+
# @return [nil] if there is no file associated with the object
|
306
307
|
def file
|
307
308
|
@files.first ? @files.first[0] : nil
|
308
309
|
end
|
@@ -434,7 +435,10 @@ module YARD
|
|
434
435
|
#
|
435
436
|
# @return [Symbol] the type of code object this represents
|
436
437
|
def type
|
437
|
-
self.class.name.split('::').last
|
438
|
+
obj_name = self.class.name.split('::').last
|
439
|
+
obj_name.gsub!(/Object$/, '')
|
440
|
+
obj_name.downcase!
|
441
|
+
obj_name.to_sym
|
438
442
|
end
|
439
443
|
|
440
444
|
# Represents the unique path of the object. The default implementation
|
data/lib/yard/config.rb
CHANGED
@@ -236,7 +236,11 @@ module YARD
|
|
236
236
|
def self.read_config_file
|
237
237
|
if File.file?(CONFIG_FILE)
|
238
238
|
require 'yaml'
|
239
|
-
YAML.
|
239
|
+
if YAML.respond_to?(:safe_load_file)
|
240
|
+
YAML.safe_load_file(CONFIG_FILE, permitted_classes: [SymbolHash, Symbol])
|
241
|
+
else
|
242
|
+
YAML.load_file(CONFIG_FILE)
|
243
|
+
end
|
240
244
|
else
|
241
245
|
{}
|
242
246
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'ostruct'
|
3
2
|
|
4
3
|
module YARD
|
5
4
|
# Parses text and creates a {Docstring} object to represent documentation
|
@@ -8,7 +7,7 @@ module YARD
|
|
8
7
|
#
|
9
8
|
# == Subclassing Notes
|
10
9
|
#
|
11
|
-
# The DocstringParser can be subclassed and
|
10
|
+
# The DocstringParser can be subclassed and substituted during parsing by
|
12
11
|
# setting the {Docstring.default_parser} attribute with the name of the
|
13
12
|
# subclass. This allows developers to change the way docstrings are
|
14
13
|
# parsed, allowing for completely different docstring syntaxes.
|
@@ -52,7 +52,7 @@ class YARD::Handlers::Ruby::AttributeHandler < YARD::Handlers::Ruby::Base
|
|
52
52
|
register(o)
|
53
53
|
o.docstring = doc if o.docstring.blank?(false)
|
54
54
|
|
55
|
-
#
|
55
|
+
# Register the object explicitly
|
56
56
|
namespace.attributes[scope][name][type] = o
|
57
57
|
else
|
58
58
|
obj = namespace.children.find {|other| other.name == meth.to_sym && other.scope == scope }
|
@@ -51,7 +51,7 @@ class YARD::Handlers::Ruby::Legacy::AttributeHandler < YARD::Handlers::Ruby::Leg
|
|
51
51
|
register(o)
|
52
52
|
o.docstring = doc if o.docstring.blank?(false)
|
53
53
|
|
54
|
-
#
|
54
|
+
# Register the object explicitly
|
55
55
|
namespace.attributes[scope][name][type] = o
|
56
56
|
else
|
57
57
|
obj = namespace.children.find {|other| other.name == meth.to_sym && other.scope == scope }
|
@@ -67,7 +67,7 @@ class YARD::Handlers::Ruby::MethodHandler < YARD::Handlers::Ruby::Base
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def format_args
|
70
|
-
args = statement.parameters
|
70
|
+
return [] unless args = statement.parameters
|
71
71
|
|
72
72
|
params = []
|
73
73
|
|
@@ -97,7 +97,7 @@ class YARD::Handlers::Ruby::MethodHandler < YARD::Handlers::Ruby::Base
|
|
97
97
|
params << ['**' + args.double_splat_param.source, nil]
|
98
98
|
end
|
99
99
|
|
100
|
-
params << ['&' + args.block_param.source, nil] if args.block_param
|
100
|
+
params << ['&' + args.block_param.source, nil] if args.block_param && !args.args_forward
|
101
101
|
|
102
102
|
params
|
103
103
|
end
|
@@ -26,22 +26,31 @@ class YARD::Handlers::Ruby::MixinHandler < YARD::Handlers::Ruby::Base
|
|
26
26
|
raise YARD::Parser::UndocumentableError unless mixin.ref?
|
27
27
|
raise YARD::Parser::UndocumentableError if mixin.first.type == :ident
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
obj = Proxy.new(namespace, obj.value, :module)
|
29
|
+
if mixin.type == :var_ref && mixin[0] == s(:kw, "self")
|
30
|
+
obj = namespace
|
32
31
|
else
|
33
|
-
obj = Proxy.new(namespace, mixin.source
|
32
|
+
case obj = Proxy.new(namespace, mixin.source)
|
33
|
+
when ConstantObject # If a constant is included, use its value as the real object
|
34
|
+
obj = Proxy.new(namespace, obj.value, :module)
|
35
|
+
else
|
36
|
+
obj = Proxy.new(namespace, mixin.source, :module)
|
37
|
+
end
|
34
38
|
end
|
35
39
|
|
36
40
|
rec = recipient(mixin)
|
37
|
-
return if rec.nil?
|
41
|
+
return if rec.nil?
|
42
|
+
|
43
|
+
ensure_loaded!(rec)
|
44
|
+
return if rec.mixins(scope).include?(obj)
|
38
45
|
|
39
46
|
shift = statement.method_name(true) == :include ? :unshift : :push
|
40
47
|
rec.mixins(scope).send(shift, obj)
|
41
48
|
end
|
42
49
|
|
43
50
|
def recipient(mixin)
|
44
|
-
if statement[0].type == :
|
51
|
+
if statement[0].type == :const_path_ref || statement[0].type == :top_const_ref
|
52
|
+
Proxy.new(namespace, statement[0].source)
|
53
|
+
elsif statement[0].type == :var_ref && statement[0][0] != s(:kw, "self")
|
45
54
|
statement[0][0].type == :const ?
|
46
55
|
Proxy.new(namespace, statement.namespace.source) :
|
47
56
|
nil
|
@@ -2,6 +2,8 @@
|
|
2
2
|
# Handles module_function calls to turn methods into public class methods.
|
3
3
|
# Also creates a private instance copy of the method.
|
4
4
|
class YARD::Handlers::Ruby::ModuleFunctionHandler < YARD::Handlers::Ruby::Base
|
5
|
+
include YARD::Handlers::Ruby::DecoratorHandlerMethods
|
6
|
+
|
5
7
|
handles method_call(:module_function)
|
6
8
|
namespace_only
|
7
9
|
|
@@ -13,15 +15,25 @@ class YARD::Handlers::Ruby::ModuleFunctionHandler < YARD::Handlers::Ruby::Base
|
|
13
15
|
when :fcall, :command
|
14
16
|
statement[1].traverse do |node|
|
15
17
|
case node.type
|
18
|
+
when :def
|
19
|
+
process_decorator do |instance_method|
|
20
|
+
make_module_function(instance_method, namespace)
|
21
|
+
end
|
22
|
+
break
|
16
23
|
when :symbol; name = node.first.source
|
17
24
|
when :string_content; name = node.source
|
18
25
|
else next
|
19
26
|
end
|
27
|
+
|
20
28
|
instance_method = MethodObject.new(namespace, name)
|
21
|
-
|
22
|
-
instance_method.copy_to(class_method)
|
23
|
-
class_method.visibility = :public
|
29
|
+
make_module_function(instance_method, namespace)
|
24
30
|
end
|
25
31
|
end
|
26
32
|
end
|
33
|
+
|
34
|
+
def make_module_function(instance_method, namespace)
|
35
|
+
class_method = MethodObject.new(namespace, instance_method.name, :module)
|
36
|
+
instance_method.copy_to(class_method)
|
37
|
+
class_method.visibility = :public
|
38
|
+
end
|
27
39
|
end
|
@@ -13,10 +13,22 @@ class YARD::Handlers::Ruby::VisibilityHandler < YARD::Handlers::Ruby::Base
|
|
13
13
|
case statement.type
|
14
14
|
when :var_ref, :vcall
|
15
15
|
self.visibility = ident.first.to_sym
|
16
|
-
when :
|
16
|
+
when :command
|
17
|
+
if RUBY_VERSION >= '3.' && is_attribute_method?(statement.parameters.first)
|
18
|
+
parse_block(statement.parameters.first, visibility: ident.first.to_sym)
|
19
|
+
return
|
20
|
+
end
|
21
|
+
process_decorator do |method|
|
22
|
+
method.visibility = ident.first if method.respond_to? :visibility=
|
23
|
+
end
|
24
|
+
when :fcall
|
17
25
|
process_decorator do |method|
|
18
26
|
method.visibility = ident.first if method.respond_to? :visibility=
|
19
27
|
end
|
20
28
|
end
|
21
29
|
end
|
30
|
+
|
31
|
+
def is_attribute_method?(node)
|
32
|
+
node.type == :command && node.jump(:ident).first.to_s =~ /^attr_(accessor|writer|reader)$/
|
33
|
+
end
|
22
34
|
end
|
data/lib/yard/i18n/locale.rb
CHANGED
@@ -57,7 +57,7 @@ module YARD
|
|
57
57
|
end
|
58
58
|
|
59
59
|
# @param [String] message the translation target message.
|
60
|
-
# @return [String] translated message. If
|
60
|
+
# @return [String] translated message. If translation isn't
|
61
61
|
# registered, the +message+ is returned.
|
62
62
|
def translate(message)
|
63
63
|
@messages[message] || message
|
data/lib/yard/i18n/message.rb
CHANGED
@@ -8,7 +8,7 @@ module YARD
|
|
8
8
|
#
|
9
9
|
# @since 0.8.1
|
10
10
|
class Message
|
11
|
-
# @return [String] the message ID of the
|
11
|
+
# @return [String] the message ID of the translation target message.
|
12
12
|
attr_reader :id
|
13
13
|
|
14
14
|
# @return [Set] the set of locations. Location is an array of
|
@@ -18,7 +18,7 @@ module YARD
|
|
18
18
|
# @return [Set] the set of comments for the messages.
|
19
19
|
attr_reader :comments
|
20
20
|
|
21
|
-
# Creates a
|
21
|
+
# Creates a translate target message for message ID +id+.
|
22
22
|
#
|
23
23
|
# @param [String] id the message ID of the translate target message.
|
24
24
|
def initialize(id)
|
data/lib/yard/i18n/messages.rb
CHANGED
@@ -28,7 +28,7 @@ module YARD
|
|
28
28
|
@messages[id]
|
29
29
|
end
|
30
30
|
|
31
|
-
# Registers a {Message}, the
|
31
|
+
# Registers a {Message}, the message ID of which is +id+. If
|
32
32
|
# corresponding +Message+ is already registered, the previously
|
33
33
|
# registered object is returned.
|
34
34
|
#
|
@@ -113,7 +113,7 @@ module YARD
|
|
113
113
|
#
|
114
114
|
# Locations of the +Message+ are used to generate the reference
|
115
115
|
# line that is started with "#: ". +relative_base_path+ passed
|
116
|
-
# when the
|
116
|
+
# when the generator is created is prepended to each path in location.
|
117
117
|
#
|
118
118
|
# Comments of the +Message+ are used to generate the
|
119
119
|
# translator-comment line that is started with "# ".
|