yard 0.9.23 → 0.9.27

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of yard might be problematic. Click here for more details.

Files changed (257) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +0 -0
  3. data/.gitattributes +4 -0
  4. data/.github/FUNDING.yml +3 -0
  5. data/.github/ISSUE_TEMPLATE.md +6 -6
  6. data/.github/PULL_REQUEST_TEMPLATE.md +5 -5
  7. data/.github/workflows/ci.yml +30 -0
  8. data/.github/workflows/gem.yml +19 -0
  9. data/.gitignore +0 -0
  10. data/.rspec +0 -0
  11. data/.rubocop.yml +37 -24
  12. data/.yardopts +0 -0
  13. data/.yardopts_guide +0 -0
  14. data/.yardopts_i18n +0 -0
  15. data/CHANGELOG.md +50 -4
  16. data/CONTRIBUTING.md +2 -2
  17. data/Gemfile +5 -3
  18. data/README.md +97 -102
  19. data/Rakefile +2 -3
  20. data/lib/yard/cli/diff.rb +4 -1
  21. data/lib/yard/cli/server.rb +22 -13
  22. data/lib/yard/cli/stats.rb +2 -0
  23. data/lib/yard/cli/yardoc.rb +2 -1
  24. data/lib/yard/code_objects/method_object.rb +1 -1
  25. data/lib/yard/code_objects/namespace_mapper.rb +30 -3
  26. data/lib/yard/code_objects/proxy.rb +2 -1
  27. data/lib/yard/globals.rb +1 -1
  28. data/lib/yard/handlers/c/base.rb +35 -0
  29. data/lib/yard/handlers/ruby/method_handler.rb +1 -1
  30. data/lib/yard/handlers/ruby/mixin_handler.rb +7 -2
  31. data/lib/yard/handlers/ruby/module_function_handler.rb +15 -3
  32. data/lib/yard/parser/ruby/ast_node.rb +2 -2
  33. data/lib/yard/parser/ruby/ruby_parser.rb +7 -5
  34. data/lib/yard/parser/ruby/token_resolver.rb +3 -1
  35. data/lib/yard/parser/source_parser.rb +1 -1
  36. data/lib/yard/registry_resolver.rb +10 -24
  37. data/lib/yard/registry_store.rb +1 -1
  38. data/lib/yard/serializers/yardoc_serializer.rb +1 -1
  39. data/lib/yard/server/commands/base.rb +2 -2
  40. data/lib/yard/server/commands/library_command.rb +1 -1
  41. data/lib/yard/tags/directives.rb +10 -1
  42. data/lib/yard/templates/helpers/html_helper.rb +15 -5
  43. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +5 -4
  44. data/lib/yard/templates/helpers/markup_helper.rb +2 -1
  45. data/lib/yard/templates/section.rb +1 -3
  46. data/lib/yard/version.rb +1 -1
  47. data/lib/yard.rb +3 -0
  48. data/samus.json +15 -46
  49. data/tasks/prepare_tag.rake +45 -0
  50. data/tasks/update_error_map.rake +53 -0
  51. data/templates/default/fulldoc/html/css/style.css +1 -0
  52. data/yard.gemspec +3 -2
  53. metadata +23 -207
  54. data/.travis.yml +0 -52
  55. data/spec/cli/command_parser_spec.rb +0 -43
  56. data/spec/cli/command_spec.rb +0 -36
  57. data/spec/cli/config_spec.rb +0 -148
  58. data/spec/cli/diff_spec.rb +0 -254
  59. data/spec/cli/display_spec.rb +0 -30
  60. data/spec/cli/gems_spec.rb +0 -81
  61. data/spec/cli/graph_spec.rb +0 -18
  62. data/spec/cli/help_spec.rb +0 -22
  63. data/spec/cli/i18n_spec.rb +0 -107
  64. data/spec/cli/list_spec.rb +0 -8
  65. data/spec/cli/markup_types_spec.rb +0 -22
  66. data/spec/cli/server_spec.rb +0 -324
  67. data/spec/cli/stats_spec.rb +0 -96
  68. data/spec/cli/yard_on_yard_spec.rb +0 -38
  69. data/spec/cli/yardoc_spec.rb +0 -896
  70. data/spec/cli/yri_spec.rb +0 -101
  71. data/spec/code_objects/base_spec.rb +0 -485
  72. data/spec/code_objects/class_object_spec.rb +0 -226
  73. data/spec/code_objects/code_object_list_spec.rb +0 -36
  74. data/spec/code_objects/constants_spec.rb +0 -116
  75. data/spec/code_objects/extra_file_object_spec.rb +0 -161
  76. data/spec/code_objects/macro_object_spec.rb +0 -150
  77. data/spec/code_objects/method_object_spec.rb +0 -184
  78. data/spec/code_objects/module_object_spec.rb +0 -142
  79. data/spec/code_objects/namespace_object_spec.rb +0 -171
  80. data/spec/code_objects/proxy_spec.rb +0 -147
  81. data/spec/code_objects/spec_helper.rb +0 -3
  82. data/spec/config_spec.rb +0 -171
  83. data/spec/core_ext/array_spec.rb +0 -13
  84. data/spec/core_ext/file_spec.rb +0 -72
  85. data/spec/core_ext/hash_spec.rb +0 -14
  86. data/spec/core_ext/insertion_spec.rb +0 -37
  87. data/spec/core_ext/module_spec.rb +0 -9
  88. data/spec/core_ext/string_spec.rb +0 -42
  89. data/spec/core_ext/symbol_hash_spec.rb +0 -89
  90. data/spec/docstring_parser_spec.rb +0 -280
  91. data/spec/docstring_spec.rb +0 -373
  92. data/spec/handlers/alias_handler_spec.rb +0 -82
  93. data/spec/handlers/attribute_handler_spec.rb +0 -96
  94. data/spec/handlers/base_spec.rb +0 -216
  95. data/spec/handlers/c/alias_handler_spec.rb +0 -34
  96. data/spec/handlers/c/attribute_handler_spec.rb +0 -41
  97. data/spec/handlers/c/class_handler_spec.rb +0 -78
  98. data/spec/handlers/c/constant_handler_spec.rb +0 -71
  99. data/spec/handlers/c/init_handler_spec.rb +0 -48
  100. data/spec/handlers/c/method_handler_spec.rb +0 -327
  101. data/spec/handlers/c/mixin_handler_spec.rb +0 -44
  102. data/spec/handlers/c/module_handler_spec.rb +0 -71
  103. data/spec/handlers/c/override_comment_handler_spec.rb +0 -47
  104. data/spec/handlers/c/path_handler_spec.rb +0 -36
  105. data/spec/handlers/c/spec_helper.rb +0 -23
  106. data/spec/handlers/c/struct_handler_spec.rb +0 -16
  107. data/spec/handlers/class_condition_handler_spec.rb +0 -87
  108. data/spec/handlers/class_handler_spec.rb +0 -247
  109. data/spec/handlers/class_method_handler_shared_examples.rb +0 -133
  110. data/spec/handlers/class_variable_handler_spec.rb +0 -12
  111. data/spec/handlers/constant_handler_spec.rb +0 -112
  112. data/spec/handlers/decorator_handler_methods_spec.rb +0 -393
  113. data/spec/handlers/dsl_handler_spec.rb +0 -226
  114. data/spec/handlers/examples/alias_handler_001.rb.txt +0 -46
  115. data/spec/handlers/examples/attribute_handler_001.rb.txt +0 -32
  116. data/spec/handlers/examples/class_condition_handler_001.rb.txt +0 -69
  117. data/spec/handlers/examples/class_handler_001.rb.txt +0 -120
  118. data/spec/handlers/examples/class_variable_handler_001.rb.txt +0 -10
  119. data/spec/handlers/examples/constant_handler_001.rb.txt +0 -35
  120. data/spec/handlers/examples/dsl_handler_001.rb.txt +0 -156
  121. data/spec/handlers/examples/exception_handler_001.rb.txt +0 -59
  122. data/spec/handlers/examples/extend_handler_001.rb.txt +0 -19
  123. data/spec/handlers/examples/method_condition_handler_001.rb.txt +0 -10
  124. data/spec/handlers/examples/method_handler_001.rb.txt +0 -128
  125. data/spec/handlers/examples/mixin_handler_001.rb.txt +0 -40
  126. data/spec/handlers/examples/module_handler_001.rb.txt +0 -29
  127. data/spec/handlers/examples/private_constant_handler_001.rb.txt +0 -8
  128. data/spec/handlers/examples/process_handler_001.rb.txt +0 -11
  129. data/spec/handlers/examples/visibility_handler_001.rb.txt +0 -36
  130. data/spec/handlers/examples/yield_handler_001.rb.txt +0 -54
  131. data/spec/handlers/exception_handler_spec.rb +0 -49
  132. data/spec/handlers/extend_handler_spec.rb +0 -28
  133. data/spec/handlers/legacy_base_spec.rb +0 -128
  134. data/spec/handlers/method_condition_handler_spec.rb +0 -15
  135. data/spec/handlers/method_handler_spec.rb +0 -214
  136. data/spec/handlers/mixin_handler_spec.rb +0 -60
  137. data/spec/handlers/module_function_handler_spec.rb +0 -106
  138. data/spec/handlers/module_handler_spec.rb +0 -35
  139. data/spec/handlers/private_class_method_handler_spec.rb +0 -11
  140. data/spec/handlers/private_constant_handler_spec.rb +0 -25
  141. data/spec/handlers/processor_spec.rb +0 -35
  142. data/spec/handlers/public_class_method_handler_spec.rb +0 -11
  143. data/spec/handlers/ruby/base_spec.rb +0 -95
  144. data/spec/handlers/ruby/legacy/base_spec.rb +0 -84
  145. data/spec/handlers/spec_helper.rb +0 -33
  146. data/spec/handlers/visibility_handler_spec.rb +0 -44
  147. data/spec/handlers/yield_handler_spec.rb +0 -52
  148. data/spec/i18n/locale_spec.rb +0 -81
  149. data/spec/i18n/message_spec.rb +0 -52
  150. data/spec/i18n/messages_spec.rb +0 -67
  151. data/spec/i18n/pot_generator_spec.rb +0 -295
  152. data/spec/i18n/text_spec.rb +0 -184
  153. data/spec/logging_spec.rb +0 -44
  154. data/spec/options_spec.rb +0 -171
  155. data/spec/parser/base_spec.rb +0 -24
  156. data/spec/parser/c_parser_spec.rb +0 -236
  157. data/spec/parser/examples/array.c.txt +0 -6267
  158. data/spec/parser/examples/example1.rb.txt +0 -8
  159. data/spec/parser/examples/extrafile.c.txt +0 -8
  160. data/spec/parser/examples/file.c.txt +0 -28
  161. data/spec/parser/examples/multifile.c.txt +0 -22
  162. data/spec/parser/examples/namespace.cpp.txt +0 -68
  163. data/spec/parser/examples/override.c.txt +0 -424
  164. data/spec/parser/examples/parse_in_order_001.rb.txt +0 -2
  165. data/spec/parser/examples/parse_in_order_002.rb.txt +0 -2
  166. data/spec/parser/examples/tag_handler_001.rb.txt +0 -8
  167. data/spec/parser/ruby/ast_node_spec.rb +0 -33
  168. data/spec/parser/ruby/legacy/statement_list_spec.rb +0 -299
  169. data/spec/parser/ruby/legacy/token_list_spec.rb +0 -79
  170. data/spec/parser/ruby/ruby_parser_spec.rb +0 -508
  171. data/spec/parser/ruby/token_resolver_spec.rb +0 -165
  172. data/spec/parser/source_parser_spec.rb +0 -727
  173. data/spec/parser/tag_parsing_spec.rb +0 -17
  174. data/spec/rake/yardoc_task_spec.rb +0 -118
  175. data/spec/registry_spec.rb +0 -463
  176. data/spec/registry_store_spec.rb +0 -327
  177. data/spec/rubygems/doc_manager_spec.rb +0 -112
  178. data/spec/serializers/data/serialized_yardoc/checksums +0 -1
  179. data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
  180. data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
  181. data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
  182. data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
  183. data/spec/serializers/data/serialized_yardoc/proxy_types +0 -2
  184. data/spec/serializers/file_system_serializer_spec.rb +0 -145
  185. data/spec/serializers/spec_helper.rb +0 -2
  186. data/spec/serializers/yardoc_serializer_spec.rb +0 -78
  187. data/spec/server/adapter_spec.rb +0 -39
  188. data/spec/server/commands/base_spec.rb +0 -91
  189. data/spec/server/commands/library_command_spec.rb +0 -39
  190. data/spec/server/doc_server_helper_spec.rb +0 -72
  191. data/spec/server/doc_server_serializer_spec.rb +0 -60
  192. data/spec/server/rack_adapter_spec.rb +0 -21
  193. data/spec/server/router_spec.rb +0 -123
  194. data/spec/server/spec_helper.rb +0 -22
  195. data/spec/server/static_caching_spec.rb +0 -47
  196. data/spec/server/webrick_servlet_spec.rb +0 -20
  197. data/spec/server_spec.rb +0 -19
  198. data/spec/spec_helper.rb +0 -212
  199. data/spec/tags/default_factory_spec.rb +0 -168
  200. data/spec/tags/default_tag_spec.rb +0 -11
  201. data/spec/tags/directives_spec.rb +0 -463
  202. data/spec/tags/library_spec.rb +0 -48
  203. data/spec/tags/overload_tag_spec.rb +0 -53
  204. data/spec/tags/ref_tag_list_spec.rb +0 -53
  205. data/spec/tags/types_explainer_spec.rb +0 -203
  206. data/spec/templates/class_spec.rb +0 -45
  207. data/spec/templates/constant_spec.rb +0 -41
  208. data/spec/templates/engine_spec.rb +0 -131
  209. data/spec/templates/examples/class001.html +0 -308
  210. data/spec/templates/examples/class001.txt +0 -36
  211. data/spec/templates/examples/class002.html +0 -39
  212. data/spec/templates/examples/constant001.txt +0 -25
  213. data/spec/templates/examples/constant002.txt +0 -7
  214. data/spec/templates/examples/constant003.txt +0 -11
  215. data/spec/templates/examples/method001.html +0 -137
  216. data/spec/templates/examples/method001.txt +0 -35
  217. data/spec/templates/examples/method002.html +0 -91
  218. data/spec/templates/examples/method002.txt +0 -20
  219. data/spec/templates/examples/method003.html +0 -165
  220. data/spec/templates/examples/method003.txt +0 -45
  221. data/spec/templates/examples/method004.html +0 -48
  222. data/spec/templates/examples/method004.txt +0 -10
  223. data/spec/templates/examples/method005.html +0 -105
  224. data/spec/templates/examples/method005.txt +0 -33
  225. data/spec/templates/examples/method006.html +0 -108
  226. data/spec/templates/examples/method006.txt +0 -20
  227. data/spec/templates/examples/module001.dot +0 -33
  228. data/spec/templates/examples/module001.html +0 -833
  229. data/spec/templates/examples/module001.txt +0 -33
  230. data/spec/templates/examples/module002.html +0 -341
  231. data/spec/templates/examples/module003.html +0 -202
  232. data/spec/templates/examples/module004.html +0 -394
  233. data/spec/templates/examples/module005.html +0 -82
  234. data/spec/templates/examples/tag001.txt +0 -82
  235. data/spec/templates/helpers/base_helper_spec.rb +0 -171
  236. data/spec/templates/helpers/html_helper_spec.rb +0 -687
  237. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +0 -65
  238. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +0 -84
  239. data/spec/templates/helpers/markup_helper_spec.rb +0 -136
  240. data/spec/templates/helpers/method_helper_spec.rb +0 -107
  241. data/spec/templates/helpers/module_helper_spec.rb +0 -35
  242. data/spec/templates/helpers/shared_signature_examples.rb +0 -126
  243. data/spec/templates/helpers/text_helper_spec.rb +0 -65
  244. data/spec/templates/markup_processor_integrations/asciidoctor_spec.rb +0 -60
  245. data/spec/templates/markup_processor_integrations/integration_spec_helper.rb +0 -46
  246. data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +0 -59
  247. data/spec/templates/markup_processor_integrations/rdoc_spec.rb +0 -39
  248. data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +0 -59
  249. data/spec/templates/markup_processor_integrations/redcloth_spec.rb +0 -48
  250. data/spec/templates/method_spec.rb +0 -118
  251. data/spec/templates/module_spec.rb +0 -203
  252. data/spec/templates/onefile_spec.rb +0 -66
  253. data/spec/templates/section_spec.rb +0 -144
  254. data/spec/templates/spec_helper.rb +0 -76
  255. data/spec/templates/tag_spec.rb +0 -52
  256. data/spec/templates/template_spec.rb +0 -410
  257. data/spec/verifier_spec.rb +0 -106
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ModuleHandler" do
5
- before(:all) { parse_file :module_handler_001, __FILE__ }
6
-
7
- it "parses a module block" do
8
- expect(Registry.at(:ModName)).not_to eq nil
9
- expect(Registry.at("ModName::OtherModName")).not_to eq nil
10
- end
11
-
12
- it "attaches docstring" do
13
- expect(Registry.at("ModName::OtherModName").docstring).to eq "Docstring"
14
- end
15
-
16
- it "handles any formatting" do
17
- expect(Registry.at(:StressTest)).not_to eq nil
18
- end
19
-
20
- it "handles complex module names" do
21
- expect(Registry.at("A::B")).not_to eq nil
22
- end
23
-
24
- it "handles modules in the form ::ModName" do
25
- expect(Registry.at("Kernel")).not_to be nil
26
- end
27
-
28
- it "lists mixins in proper order" do
29
- expect(Registry.at('D').mixins).to eq [P(:C), P(:B), P(:A)]
30
- end
31
-
32
- it "creates proper module when constant is in namespace" do
33
- expect(Registry.at('Q::FOO::A')).not_to be nil
34
- end
35
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
- require File.dirname(__FILE__) + '/class_method_handler_shared_examples'
4
-
5
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}PrivateClassMethodHandler" do
6
- before { Registry.clear }
7
-
8
- let(:visibility) { :private }
9
-
10
- include_examples "class method visibility decorator"
11
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}PrivateConstantHandler" do
5
- before(:all) { parse_file :private_constant_handler_001, __FILE__ }
6
-
7
- it "handles private_constant statement" do
8
- expect(Registry.at('A::Foo').visibility).to eq :private
9
- expect(Registry.at('A::B').visibility).to eq :private
10
- expect(Registry.at('A::C').visibility).to eq :private
11
- end
12
-
13
- it "makes all other constants public" do
14
- expect(Registry.at('A::D').visibility).to eq :public
15
- end
16
-
17
- it "fails if parameter is not String, Symbol or Constant" do
18
- undoc_error 'class Foo; private_constant x; end'
19
- undoc_error 'class Foo; X = 1; private_constant X.new("hi"); end'
20
- end unless LEGACY_PARSER
21
-
22
- it "fails if constant can't be recognized" do
23
- undoc_error 'class Foo2; private_constant :X end'
24
- end
25
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe YARD::Handlers::Processor do
5
- before do
6
- @proc = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby))
7
- end
8
-
9
- it "starts with public visibility" do
10
- expect(@proc.visibility).to eq :public
11
- end
12
-
13
- it "starts in instance scope" do
14
- expect(@proc.scope).to eq :instance
15
- end
16
-
17
- it "starts in root namespace" do
18
- expect(@proc.namespace).to eq Registry.root
19
- end
20
-
21
- it "has a globals structure" do
22
- expect(@proc.globals).to be_a(OpenStruct)
23
- end
24
-
25
- it "ignores HandlerAborted exceptions (but print debug info)" do
26
- class AbortHandlerProcessor < YARD::Handlers::Ruby::Base
27
- process { abort! }
28
- end
29
- stmt = OpenStruct.new(:line => 1, :show => 'SOURCE')
30
- allow(@proc).to receive(:find_handlers).and_return([AbortHandlerProcessor])
31
- expect(log).to receive(:debug).with(/AbortHandlerProcessor cancelled from/)
32
- expect(log).to receive(:debug).with("\tin file '(stdin)':1:\n\nSOURCE\n")
33
- @proc.process([stmt])
34
- end
35
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
- require File.dirname(__FILE__) + '/class_method_handler_shared_examples'
4
-
5
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}PublicClassMethodHandler" do
6
- before { Registry.clear }
7
-
8
- let(:visibility) { :public }
9
-
10
- include_examples "class method visibility decorator"
11
- end
@@ -1,95 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::Handlers::Ruby::Base, '#valid_handler?' do
4
- include YARD::Parser::Ruby
5
- YARD::Parser::Ruby::AstNode # rubocop:disable Lint/Void
6
-
7
- before do
8
- allow(Handlers::Ruby::Base).to receive(:inherited)
9
- @processor = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby))
10
- end
11
-
12
- after(:all) do
13
- Handlers::Base.clear_subclasses
14
- end
15
-
16
- def valid(handler, stmt)
17
- expect(@processor.find_handlers(stmt)).to include(handler)
18
- end
19
-
20
- def invalid(handler, stmt)
21
- expect(@processor.find_handlers(stmt)).not_to include(handler)
22
- end
23
-
24
- it "only handles Handlers inherited from Ruby::Base class" do
25
- class IgnoredHandler < Handlers::Base
26
- handles :list
27
- end
28
- class NotIgnoredHandler < Handlers::Ruby::Base
29
- handles :list
30
- end
31
- allow(Handlers::Base).to receive(:subclasses).and_return [IgnoredHandler, NotIgnoredHandler]
32
- expect(@processor.find_handlers(s)).to eq [NotIgnoredHandler]
33
- end
34
-
35
- it "handles string input (matches AstNode#source)" do
36
- class StringHandler < Handlers::Ruby::Base
37
- handles "x"
38
- end
39
- allow(Handlers::Base).to receive(:subclasses).and_return [StringHandler]
40
- ast = Parser::Ruby::RubyParser.parse("if x == 2 then true end").ast
41
- valid StringHandler, ast[0][0][0]
42
- invalid StringHandler, ast[0][1]
43
- end
44
-
45
- it "handles symbol input (matches AstNode#type)" do
46
- class SymbolHandler < Handlers::Ruby::Base
47
- handles :myNodeType
48
- end
49
- allow(Handlers::Base).to receive(:subclasses).and_return [SymbolHandler]
50
- valid SymbolHandler, s(:myNodeType, s(1, 2, 3))
51
- invalid SymbolHandler, s(:NOTmyNodeType, s(1, 2, 3))
52
- end
53
-
54
- it "handles regex input (matches AstNode#source)" do
55
- class RegexHandler < Handlers::Ruby::Base
56
- handles(/^if x ==/)
57
- end
58
- allow(Handlers::Base).to receive(:subclasses).and_return [RegexHandler]
59
- ast = Parser::Ruby::RubyParser.parse("if x == 2 then true end").ast
60
- valid RegexHandler, ast
61
- invalid RegexHandler, ast[0][1]
62
- end
63
-
64
- it "handles AstNode input (matches AST literally)" do
65
- class ASTHandler < Handlers::Ruby::Base
66
- handles s(:vcall, s(:ident, "hello_world"))
67
- end
68
- allow(Handlers::Base).to receive(:subclasses).and_return [ASTHandler]
69
- valid ASTHandler, s(:vcall, s(:ident, "hello_world"))
70
- invalid ASTHandler, s(:vcall, s(:ident, "NOTHELLOWORLD"))
71
- end
72
-
73
- it "handles #method_call(:methname) on a valid AST" do
74
- class MethCallHandler < Handlers::Ruby::Base
75
- handles method_call(:meth)
76
- end
77
- allow(Handlers::Base).to receive(:subclasses).and_return [MethCallHandler]
78
- ast = Parser::Ruby::RubyParser.parse(<<-"eof").ast
79
- meth # 0
80
- meth() # 1
81
- meth(1,2,3) # 2
82
- meth 1,2,3 # 3
83
- NotMeth.meth # 4
84
- NotMeth.meth { } # 5
85
- NotMeth.meth do end # 6
86
- NotMeth.meth 1, 2, 3 # 7
87
- NotMeth.meth(1, 2, 3) # 8
88
- NotMeth # 9
89
- eof
90
- (0..8).each do |i|
91
- valid MethCallHandler, ast[i]
92
- end
93
- invalid MethCallHandler, ast[9]
94
- end
95
- end if HAVE_RIPPER
@@ -1,84 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- include Parser::Ruby::Legacy
4
-
5
- RSpec.describe YARD::Handlers::Ruby::Legacy::Base, "#handles and inheritance" do
6
- before do
7
- allow(Handlers::Ruby::Legacy::Base).to receive(:inherited)
8
- if RUBY_VERSION > '1.8.7'
9
- allow(Handlers::Ruby::Legacy::MixinHandler).to receive(:inherited) # fixes a Ruby1.9 issue
10
- end
11
- @processor = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby18))
12
- end
13
-
14
- after(:all) do
15
- Handlers::Base.clear_subclasses
16
- end
17
-
18
- def stmt(string)
19
- Statement.new(TokenList.new(string))
20
- end
21
-
22
- it "only handles Handlers inherited from Ruby::Legacy::Base class" do
23
- class IgnoredHandler < Handlers::Base
24
- handles "hello"
25
- end
26
- class NotIgnoredHandlerLegacy < Handlers::Ruby::Legacy::Base
27
- handles "hello"
28
- end
29
- allow(Handlers::Base).to receive(:subclasses).and_return [IgnoredHandler, NotIgnoredHandlerLegacy]
30
- expect(@processor.find_handlers(stmt("hello world"))).to eq [NotIgnoredHandlerLegacy]
31
- end
32
-
33
- it "handles a string input" do
34
- class TestStringHandler < Handlers::Ruby::Legacy::Base
35
- handles "hello"
36
- end
37
-
38
- expect(TestStringHandler.handles?(stmt("hello world"))).to be true
39
- expect(TestStringHandler.handles?(stmt("nothello world"))).to be false
40
- end
41
-
42
- it "handles regex input" do
43
- class TestRegexHandler < Handlers::Ruby::Legacy::Base
44
- handles(/^nothello$/)
45
- end
46
-
47
- expect(TestRegexHandler.handles?(stmt("nothello"))).to be true
48
- expect(TestRegexHandler.handles?(stmt("not hello hello"))).to be false
49
- end
50
-
51
- it "handles token input" do
52
- class TestTokenHandler < Handlers::Ruby::Legacy::Base
53
- handles TkMODULE
54
- end
55
-
56
- expect(TestTokenHandler.handles?(stmt("module"))).to be true
57
- expect(TestTokenHandler.handles?(stmt("if"))).to be false
58
- end
59
-
60
- it "parses a do/end or { } block with #parse_block" do
61
- class MyBlockHandler < Handlers::Ruby::Legacy::Base
62
- handles(/\AmyMethod\b/)
63
- def process
64
- parse_block(:owner => "test")
65
- end
66
- end
67
-
68
- class MyBlockInnerHandler < Handlers::Ruby::Legacy::Base
69
- handles "inner"
70
- def self.reset; @@reached = false end
71
- def self.reached?; @@reached ||= false end
72
- def process; @@reached = true end
73
- end
74
-
75
- allow(Handlers::Base).to receive(:subclasses).and_return [MyBlockHandler, MyBlockInnerHandler]
76
- Parser::SourceParser.parser_type = :ruby18
77
- Parser::SourceParser.parse_string "myMethod do inner end"
78
- expect(MyBlockInnerHandler).to be_reached
79
- MyBlockInnerHandler.reset
80
- Parser::SourceParser.parse_string "myMethod { inner }"
81
- expect(MyBlockInnerHandler).to be_reached
82
- Parser::SourceParser.parser_type = :ruby
83
- end
84
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'stringio'
3
-
4
- include Handlers
5
-
6
- def undoc_error(code)
7
- expect { StubbedSourceParser.parse_string(code) }.to raise_error(Parser::UndocumentableError)
8
- end
9
-
10
- def with_parser(parser_type)
11
- tmp = StubbedSourceParser.parser_type
12
- StubbedSourceParser.parser_type = parser_type
13
- yield
14
- StubbedSourceParser.parser_type = tmp
15
- end
16
-
17
- class StubbedProcessor < Processor
18
- def process(statements)
19
- statements.each_with_index do |stmt, _index|
20
- find_handlers(stmt).each do |handler|
21
- handler.new(self, stmt).process
22
- end
23
- end
24
- end
25
- end
26
-
27
- class StubbedSourceParser < Parser::SourceParser
28
- StubbedSourceParser.parser_type = :ruby
29
- def post_process
30
- post = StubbedProcessor.new(self)
31
- post.process(@parser.enumerator)
32
- end
33
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}VisibilityHandler" do
5
- before(:all) { parse_file :visibility_handler_001, __FILE__ }
6
-
7
- it "is able to set visibility to public" do
8
- expect(Registry.at("Testing#pub").visibility).to eq :public
9
- expect(Registry.at("Testing#pub2").visibility).to eq :public
10
- end
11
-
12
- it "is able to set visibility to private" do
13
- expect(Registry.at("Testing#priv").visibility).to eq :private
14
- end
15
-
16
- it "is able to set visibility to protected" do
17
- expect(Registry.at("Testing#prot").visibility).to eq :protected
18
- end
19
-
20
- it "supports parameters and only set visibility on those methods" do
21
- expect(Registry.at('Testing#notpriv').visibility).to eq :protected
22
- expect(Registry.at('Testing#notpriv2').visibility).to eq :protected
23
- expect(Registry.at('Testing#notpriv?').visibility).to eq :protected
24
- end
25
-
26
- it "only accepts strings and symbols" do
27
- expect(Registry.at('Testing#name')).to be nil
28
- expect(Registry.at('Testing#argument')).to be nil
29
- expect(Registry.at('Testing#method_call')).to be nil
30
- end
31
-
32
- it "handles constants passed in as symbols" do
33
- expect(Registry.at('Testing#Foo').visibility).to eq :private
34
- end
35
-
36
- it "does not register classes with visibility" do
37
- expect(Registry.at('Testing::Bar').visibility).to eq :public
38
- expect(Registry.at('Testing::Baz').visibility).to eq :public
39
- end
40
-
41
- it "can decorate a method definition" do
42
- expect(Registry.at('Testing#decpriv').visibility).to eq :private
43
- end unless LEGACY_PARSER
44
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
- require File.dirname(__FILE__) + '/spec_helper'
3
-
4
- RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}YieldHandler" do
5
- before(:all) { parse_file :yield_handler_001, __FILE__ }
6
-
7
- it "only parses yield blocks in methods" do
8
- expect(P(:Testing).tag(:yield)).to be nil
9
- expect(P(:Testing).tag(:yieldparam)).to be nil
10
- end
11
-
12
- it "handles an empty yield statement" do
13
- expect(P('Testing#mymethod').tag(:yield)).to be nil
14
- expect(P('Testing#mymethod').tag(:yieldparam)).to be nil
15
- end
16
-
17
- it "does not document a yield statement in a method with either @yield or @yieldparam" do
18
- expect(P('Testing#mymethod2').tag(:yield).types).to eq ['a', 'b']
19
- expect(P('Testing#mymethod2').tag(:yield).text).to eq "Blah"
20
- expect(P('Testing#mymethod2').tags(:yieldparam).size).to eq 2
21
-
22
- expect(P('Testing#mymethod3').tag(:yield).types).to eq ['a', 'b']
23
- expect(P('Testing#mymethod3').tags(:yieldparam).size).to eq 0
24
-
25
- expect(P('Testing#mymethod4').tag(:yieldparam).name).to eq '_self'
26
- expect(P('Testing#mymethod4').tag(:yieldparam).text).to eq 'BLAH'
27
- end
28
-
29
- it "handles any arbitrary yield statement" do
30
- expect(P('Testing#mymethod5').tag(:yield).types).to eq [':a', 'b', '_self', 'File.read(\'file\', \'w\')', 'CONSTANT']
31
- end
32
-
33
- it "handles parentheses" do
34
- expect(P('Testing#mymethod6').tag(:yield).types).to eq ['b', 'a']
35
- end
36
-
37
- it "only documents the first yield statement in a method (limitation of yield handler)" do
38
- expect(P('Testing#mymethod7').tag(:yield).types).to eq ['a']
39
- end
40
-
41
- it "handles `self` keyword and list object type as yieldparam for _self" do
42
- expect(P('Testing#mymethod8').tag(:yield).types).to eq ['_self']
43
- expect(P('Testing#mymethod8').tag(:yieldparam).types).to eq ['Testing']
44
- expect(P('Testing#mymethod8').tag(:yieldparam).text).to eq "the object that the method was called on"
45
- end
46
-
47
- it "handles `super` keyword and document it under _super" do
48
- expect(P('Testing#mymethod9').tag(:yield).types).to eq ['_super']
49
- expect(P('Testing#mymethod9').tag(:yieldparam).types).to be nil
50
- expect(P('Testing#mymethod9').tag(:yieldparam).text).to eq "the result of the method from the superclass"
51
- end
52
- end
@@ -1,81 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::I18n::Locale do
4
- def locale(name)
5
- YARD::I18n::Locale.new(name)
6
- end
7
-
8
- before do
9
- @locale = locale("fr")
10
- end
11
-
12
- describe "#name" do
13
- it "returns name" do
14
- expect(locale("fr").name).to eq "fr"
15
- end
16
- end
17
-
18
- describe "#load" do
19
- it "returns false for nonexistent PO" do
20
- expect(File).to receive(:exist?).with('foo/fr.po').and_return(false)
21
- expect(@locale.load('foo')).to be false
22
- end
23
-
24
- have_gettext_gem = true
25
- if RUBY_VERSION < "1.9"
26
- begin
27
- require "gettext/tools/poparser"
28
- rescue LoadError
29
- have_gettext_gem = false
30
- end
31
- else
32
- begin
33
- require "gettext/po_parser"
34
- rescue LoadError
35
- begin
36
- require "gettext/tools/poparser"
37
- rescue LoadError
38
- have_gettext_gem = false
39
- end
40
- end
41
- end
42
-
43
- it "returns true for existent PO", :if => have_gettext_gem do
44
- data = <<-eop
45
- msgid ""
46
- msgstr ""
47
- "Language: fr\n"
48
- "MIME-Version: 1.0\n"
49
- "Content-Type: text/plain; charset=UTF-8\n"
50
- "Content-Transfer-Encoding: 8bit\n"
51
-
52
- msgid "Hello"
53
- msgstr "Bonjour"
54
- eop
55
- parser = GetText::POParser.new
56
- expect(File).to receive(:exist?).with('foo/fr.po').and_return(true)
57
- expect(GetText::POParser).to receive(:new).and_return(parser)
58
- expect(parser).to receive(:parse_file) do |file, hash|
59
- expect(file).to eq 'foo/fr.po'
60
- parser.parse(String.new(data), hash)
61
- end
62
- expect(@locale.load('foo')).to be true
63
- expect(@locale.translate('Hello')).to eq "Bonjour"
64
- end
65
- end
66
-
67
- describe "#translate" do
68
- before do
69
- messages = @locale.instance_variable_get(:@messages)
70
- messages["Hello"] = "Bonjour"
71
- end
72
-
73
- it "returns translated string for existent string" do
74
- expect(@locale.translate("Hello")) == "Bonjour"
75
- end
76
-
77
- it "returns original string for nonexistent string" do
78
- expect(@locale.translate("nonexistent")) == "nonexistent"
79
- end
80
- end
81
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::I18n::Message do
4
- def message(id)
5
- YARD::I18n::Message.new(id)
6
- end
7
-
8
- before do
9
- @message = message("Hello World!")
10
- end
11
-
12
- describe "#id" do
13
- it "returns ID" do
14
- expect(message("Hello World!").id).to eq "Hello World!"
15
- end
16
- end
17
-
18
- describe "#add_location" do
19
- it "adds some locations" do
20
- @message.add_location("hello.rb", 10)
21
- @message.add_location("message.rb", 5)
22
- expect(@message.locations).to eq Set.new([["hello.rb", 10], ["message.rb", 5]])
23
- end
24
- end
25
-
26
- describe "#add_comment" do
27
- it "adds some comments" do
28
- @message.add_comment("YARD.title")
29
- @message.add_comment("Hello#message")
30
- expect(@message.comments).to eq Set.new(["YARD.title", "Hello#message"])
31
- end
32
- end
33
-
34
- describe "#==" do
35
- it "returns true for same value messages" do
36
- locations = [["hello.rb", 10], ["message.rb", 5]]
37
- comments = ["YARD.title", "Hello#message"]
38
-
39
- other_message = message(@message.id)
40
- locations.each do |path, line|
41
- @message.add_location(path, line)
42
- other_message.add_location(path, line)
43
- end
44
- comments.each do |comment|
45
- @message.add_comment(comment)
46
- other_message.add_comment(comment)
47
- end
48
-
49
- expect(@message).to eq other_message
50
- end
51
- end
52
- end
@@ -1,67 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::I18n::Messages do
4
- def message(id)
5
- YARD::I18n::Message.new(id)
6
- end
7
-
8
- def messages
9
- YARD::I18n::Messages.new
10
- end
11
-
12
- before do
13
- @messages = messages
14
- end
15
-
16
- describe "#each" do
17
- it "enumerates messages" do
18
- @messages.register("Hello World!")
19
- @messages.register("Title")
20
- enumerated_messages = []
21
- @messages.each do |message|
22
- enumerated_messages << message
23
- end
24
- enumerated_messages = enumerated_messages.sort_by(&:id)
25
- expect(enumerated_messages).to eq [message("Hello World!"), message("Title")]
26
- end
27
-
28
- it "does not yield any message if there are none" do
29
- enumerated_messages = []
30
- @messages.each do |message|
31
- enumerated_messages << message
32
- end
33
- expect(enumerated_messages).to eq []
34
- end
35
- end
36
-
37
- describe "#[]" do
38
- it "returns registered message" do
39
- @messages.register("Hello World!")
40
- expect(@messages["Hello World!"]).to eq message("Hello World!")
41
- end
42
-
43
- it "returns nil for nonexistent message ID" do
44
- expect(@messages["Hello World!"]).to eq nil
45
- end
46
- end
47
-
48
- describe "#register" do
49
- it "returns registered message" do
50
- expect(@messages.register("Hello World!")).to eq message("Hello World!")
51
- end
52
-
53
- it "returns existent message" do
54
- message = @messages.register("Hello World!")
55
- expect(@messages.register("Hello World!").object_id).to eq message.object_id
56
- end
57
- end
58
-
59
- describe "#==" do
60
- it "returns true for same value messages" do
61
- @messages.register("Hello World!")
62
- other_messages = messages
63
- other_messages.register("Hello World!")
64
- expect(@messages).to eq other_messages
65
- end
66
- end
67
- end