yard 0.9.21 → 0.9.26

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 (250) 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 +42 -0
  8. data/.github/workflows/gem.yml +27 -0
  9. data/.gitignore +0 -0
  10. data/.rspec +0 -0
  11. data/.rubocop.yml +37 -24
  12. data/.travis.yml +0 -3
  13. data/.yardopts +0 -0
  14. data/.yardopts_guide +0 -0
  15. data/.yardopts_i18n +0 -0
  16. data/CHANGELOG.md +47 -4
  17. data/CONTRIBUTING.md +2 -2
  18. data/Gemfile +4 -3
  19. data/README.md +97 -102
  20. data/Rakefile +2 -0
  21. data/lib/yard/cli/diff.rb +4 -1
  22. data/lib/yard/cli/server.rb +22 -13
  23. data/lib/yard/code_objects/method_object.rb +1 -1
  24. data/lib/yard/code_objects/namespace_mapper.rb +30 -3
  25. data/lib/yard/code_objects/proxy.rb +2 -1
  26. data/lib/yard/globals.rb +1 -1
  27. data/lib/yard/handlers/c/base.rb +35 -0
  28. data/lib/yard/handlers/ruby/mixin_handler.rb +4 -1
  29. data/lib/yard/parser/ruby/legacy/irb/slex.rb +1 -1
  30. data/lib/yard/parser/ruby/ruby_parser.rb +6 -4
  31. data/lib/yard/parser/ruby/token_resolver.rb +3 -1
  32. data/lib/yard/parser/source_parser.rb +1 -1
  33. data/lib/yard/registry_resolver.rb +10 -24
  34. data/lib/yard/registry_store.rb +1 -1
  35. data/lib/yard/serializers/yardoc_serializer.rb +1 -1
  36. data/lib/yard/server/commands/base.rb +2 -2
  37. data/lib/yard/templates/helpers/html_helper.rb +10 -3
  38. data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +1 -1
  39. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +5 -4
  40. data/lib/yard/templates/section.rb +1 -3
  41. data/lib/yard/version.rb +1 -1
  42. data/samus.json +15 -46
  43. data/tasks/update_error_map.rake +53 -0
  44. data/templates/default/fulldoc/html/css/style.css +1 -0
  45. data/templates/default/fulldoc/html/js/jquery.js +4 -2
  46. data/yard.gemspec +1 -2
  47. metadata +9 -206
  48. data/spec/cli/command_parser_spec.rb +0 -43
  49. data/spec/cli/command_spec.rb +0 -36
  50. data/spec/cli/config_spec.rb +0 -148
  51. data/spec/cli/diff_spec.rb +0 -254
  52. data/spec/cli/display_spec.rb +0 -30
  53. data/spec/cli/gems_spec.rb +0 -81
  54. data/spec/cli/graph_spec.rb +0 -18
  55. data/spec/cli/help_spec.rb +0 -22
  56. data/spec/cli/i18n_spec.rb +0 -107
  57. data/spec/cli/list_spec.rb +0 -8
  58. data/spec/cli/markup_types_spec.rb +0 -22
  59. data/spec/cli/server_spec.rb +0 -324
  60. data/spec/cli/stats_spec.rb +0 -96
  61. data/spec/cli/yard_on_yard_spec.rb +0 -38
  62. data/spec/cli/yardoc_spec.rb +0 -896
  63. data/spec/cli/yri_spec.rb +0 -101
  64. data/spec/code_objects/base_spec.rb +0 -485
  65. data/spec/code_objects/class_object_spec.rb +0 -226
  66. data/spec/code_objects/code_object_list_spec.rb +0 -36
  67. data/spec/code_objects/constants_spec.rb +0 -116
  68. data/spec/code_objects/extra_file_object_spec.rb +0 -161
  69. data/spec/code_objects/macro_object_spec.rb +0 -150
  70. data/spec/code_objects/method_object_spec.rb +0 -184
  71. data/spec/code_objects/module_object_spec.rb +0 -142
  72. data/spec/code_objects/namespace_object_spec.rb +0 -171
  73. data/spec/code_objects/proxy_spec.rb +0 -147
  74. data/spec/code_objects/spec_helper.rb +0 -3
  75. data/spec/config_spec.rb +0 -171
  76. data/spec/core_ext/array_spec.rb +0 -13
  77. data/spec/core_ext/file_spec.rb +0 -72
  78. data/spec/core_ext/hash_spec.rb +0 -14
  79. data/spec/core_ext/insertion_spec.rb +0 -37
  80. data/spec/core_ext/module_spec.rb +0 -9
  81. data/spec/core_ext/string_spec.rb +0 -42
  82. data/spec/core_ext/symbol_hash_spec.rb +0 -89
  83. data/spec/docstring_parser_spec.rb +0 -280
  84. data/spec/docstring_spec.rb +0 -373
  85. data/spec/handlers/alias_handler_spec.rb +0 -82
  86. data/spec/handlers/attribute_handler_spec.rb +0 -96
  87. data/spec/handlers/base_spec.rb +0 -216
  88. data/spec/handlers/c/alias_handler_spec.rb +0 -34
  89. data/spec/handlers/c/attribute_handler_spec.rb +0 -41
  90. data/spec/handlers/c/class_handler_spec.rb +0 -78
  91. data/spec/handlers/c/constant_handler_spec.rb +0 -71
  92. data/spec/handlers/c/init_handler_spec.rb +0 -48
  93. data/spec/handlers/c/method_handler_spec.rb +0 -327
  94. data/spec/handlers/c/mixin_handler_spec.rb +0 -44
  95. data/spec/handlers/c/module_handler_spec.rb +0 -71
  96. data/spec/handlers/c/override_comment_handler_spec.rb +0 -47
  97. data/spec/handlers/c/path_handler_spec.rb +0 -36
  98. data/spec/handlers/c/spec_helper.rb +0 -23
  99. data/spec/handlers/c/struct_handler_spec.rb +0 -16
  100. data/spec/handlers/class_condition_handler_spec.rb +0 -87
  101. data/spec/handlers/class_handler_spec.rb +0 -247
  102. data/spec/handlers/class_method_handler_shared_examples.rb +0 -133
  103. data/spec/handlers/class_variable_handler_spec.rb +0 -12
  104. data/spec/handlers/constant_handler_spec.rb +0 -112
  105. data/spec/handlers/decorator_handler_methods_spec.rb +0 -393
  106. data/spec/handlers/dsl_handler_spec.rb +0 -226
  107. data/spec/handlers/examples/alias_handler_001.rb.txt +0 -46
  108. data/spec/handlers/examples/attribute_handler_001.rb.txt +0 -32
  109. data/spec/handlers/examples/class_condition_handler_001.rb.txt +0 -69
  110. data/spec/handlers/examples/class_handler_001.rb.txt +0 -120
  111. data/spec/handlers/examples/class_variable_handler_001.rb.txt +0 -10
  112. data/spec/handlers/examples/constant_handler_001.rb.txt +0 -35
  113. data/spec/handlers/examples/dsl_handler_001.rb.txt +0 -156
  114. data/spec/handlers/examples/exception_handler_001.rb.txt +0 -59
  115. data/spec/handlers/examples/extend_handler_001.rb.txt +0 -19
  116. data/spec/handlers/examples/method_condition_handler_001.rb.txt +0 -10
  117. data/spec/handlers/examples/method_handler_001.rb.txt +0 -128
  118. data/spec/handlers/examples/mixin_handler_001.rb.txt +0 -40
  119. data/spec/handlers/examples/module_handler_001.rb.txt +0 -29
  120. data/spec/handlers/examples/private_constant_handler_001.rb.txt +0 -8
  121. data/spec/handlers/examples/process_handler_001.rb.txt +0 -11
  122. data/spec/handlers/examples/visibility_handler_001.rb.txt +0 -36
  123. data/spec/handlers/examples/yield_handler_001.rb.txt +0 -54
  124. data/spec/handlers/exception_handler_spec.rb +0 -49
  125. data/spec/handlers/extend_handler_spec.rb +0 -28
  126. data/spec/handlers/legacy_base_spec.rb +0 -128
  127. data/spec/handlers/method_condition_handler_spec.rb +0 -15
  128. data/spec/handlers/method_handler_spec.rb +0 -214
  129. data/spec/handlers/mixin_handler_spec.rb +0 -60
  130. data/spec/handlers/module_function_handler_spec.rb +0 -106
  131. data/spec/handlers/module_handler_spec.rb +0 -35
  132. data/spec/handlers/private_class_method_handler_spec.rb +0 -11
  133. data/spec/handlers/private_constant_handler_spec.rb +0 -25
  134. data/spec/handlers/processor_spec.rb +0 -35
  135. data/spec/handlers/public_class_method_handler_spec.rb +0 -11
  136. data/spec/handlers/ruby/base_spec.rb +0 -95
  137. data/spec/handlers/ruby/legacy/base_spec.rb +0 -84
  138. data/spec/handlers/spec_helper.rb +0 -33
  139. data/spec/handlers/visibility_handler_spec.rb +0 -44
  140. data/spec/handlers/yield_handler_spec.rb +0 -52
  141. data/spec/i18n/locale_spec.rb +0 -81
  142. data/spec/i18n/message_spec.rb +0 -52
  143. data/spec/i18n/messages_spec.rb +0 -67
  144. data/spec/i18n/pot_generator_spec.rb +0 -295
  145. data/spec/i18n/text_spec.rb +0 -184
  146. data/spec/logging_spec.rb +0 -44
  147. data/spec/options_spec.rb +0 -171
  148. data/spec/parser/base_spec.rb +0 -24
  149. data/spec/parser/c_parser_spec.rb +0 -236
  150. data/spec/parser/examples/array.c.txt +0 -6267
  151. data/spec/parser/examples/example1.rb.txt +0 -8
  152. data/spec/parser/examples/extrafile.c.txt +0 -8
  153. data/spec/parser/examples/file.c.txt +0 -28
  154. data/spec/parser/examples/multifile.c.txt +0 -22
  155. data/spec/parser/examples/namespace.cpp.txt +0 -68
  156. data/spec/parser/examples/override.c.txt +0 -424
  157. data/spec/parser/examples/parse_in_order_001.rb.txt +0 -2
  158. data/spec/parser/examples/parse_in_order_002.rb.txt +0 -2
  159. data/spec/parser/examples/tag_handler_001.rb.txt +0 -8
  160. data/spec/parser/ruby/ast_node_spec.rb +0 -33
  161. data/spec/parser/ruby/legacy/statement_list_spec.rb +0 -299
  162. data/spec/parser/ruby/legacy/token_list_spec.rb +0 -79
  163. data/spec/parser/ruby/ruby_parser_spec.rb +0 -508
  164. data/spec/parser/ruby/token_resolver_spec.rb +0 -165
  165. data/spec/parser/source_parser_spec.rb +0 -727
  166. data/spec/parser/tag_parsing_spec.rb +0 -17
  167. data/spec/rake/yardoc_task_spec.rb +0 -118
  168. data/spec/registry_spec.rb +0 -463
  169. data/spec/registry_store_spec.rb +0 -327
  170. data/spec/rubygems/doc_manager_spec.rb +0 -112
  171. data/spec/serializers/data/serialized_yardoc/checksums +0 -1
  172. data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
  173. data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
  174. data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
  175. data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
  176. data/spec/serializers/data/serialized_yardoc/proxy_types +0 -2
  177. data/spec/serializers/file_system_serializer_spec.rb +0 -145
  178. data/spec/serializers/spec_helper.rb +0 -2
  179. data/spec/serializers/yardoc_serializer_spec.rb +0 -78
  180. data/spec/server/adapter_spec.rb +0 -39
  181. data/spec/server/commands/base_spec.rb +0 -91
  182. data/spec/server/commands/library_command_spec.rb +0 -39
  183. data/spec/server/doc_server_helper_spec.rb +0 -72
  184. data/spec/server/doc_server_serializer_spec.rb +0 -60
  185. data/spec/server/rack_adapter_spec.rb +0 -21
  186. data/spec/server/router_spec.rb +0 -123
  187. data/spec/server/spec_helper.rb +0 -22
  188. data/spec/server/static_caching_spec.rb +0 -47
  189. data/spec/server/webrick_servlet_spec.rb +0 -20
  190. data/spec/server_spec.rb +0 -19
  191. data/spec/spec_helper.rb +0 -212
  192. data/spec/tags/default_factory_spec.rb +0 -168
  193. data/spec/tags/default_tag_spec.rb +0 -11
  194. data/spec/tags/directives_spec.rb +0 -463
  195. data/spec/tags/library_spec.rb +0 -48
  196. data/spec/tags/overload_tag_spec.rb +0 -53
  197. data/spec/tags/ref_tag_list_spec.rb +0 -53
  198. data/spec/tags/types_explainer_spec.rb +0 -203
  199. data/spec/templates/class_spec.rb +0 -45
  200. data/spec/templates/constant_spec.rb +0 -41
  201. data/spec/templates/engine_spec.rb +0 -131
  202. data/spec/templates/examples/class001.html +0 -308
  203. data/spec/templates/examples/class001.txt +0 -36
  204. data/spec/templates/examples/class002.html +0 -39
  205. data/spec/templates/examples/constant001.txt +0 -25
  206. data/spec/templates/examples/constant002.txt +0 -7
  207. data/spec/templates/examples/constant003.txt +0 -11
  208. data/spec/templates/examples/method001.html +0 -137
  209. data/spec/templates/examples/method001.txt +0 -35
  210. data/spec/templates/examples/method002.html +0 -91
  211. data/spec/templates/examples/method002.txt +0 -20
  212. data/spec/templates/examples/method003.html +0 -165
  213. data/spec/templates/examples/method003.txt +0 -45
  214. data/spec/templates/examples/method004.html +0 -48
  215. data/spec/templates/examples/method004.txt +0 -10
  216. data/spec/templates/examples/method005.html +0 -105
  217. data/spec/templates/examples/method005.txt +0 -33
  218. data/spec/templates/examples/method006.html +0 -108
  219. data/spec/templates/examples/method006.txt +0 -20
  220. data/spec/templates/examples/module001.dot +0 -33
  221. data/spec/templates/examples/module001.html +0 -833
  222. data/spec/templates/examples/module001.txt +0 -33
  223. data/spec/templates/examples/module002.html +0 -341
  224. data/spec/templates/examples/module003.html +0 -202
  225. data/spec/templates/examples/module004.html +0 -394
  226. data/spec/templates/examples/module005.html +0 -82
  227. data/spec/templates/examples/tag001.txt +0 -82
  228. data/spec/templates/helpers/base_helper_spec.rb +0 -171
  229. data/spec/templates/helpers/html_helper_spec.rb +0 -687
  230. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +0 -65
  231. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +0 -84
  232. data/spec/templates/helpers/markup_helper_spec.rb +0 -136
  233. data/spec/templates/helpers/method_helper_spec.rb +0 -107
  234. data/spec/templates/helpers/module_helper_spec.rb +0 -35
  235. data/spec/templates/helpers/shared_signature_examples.rb +0 -126
  236. data/spec/templates/helpers/text_helper_spec.rb +0 -65
  237. data/spec/templates/markup_processor_integrations/asciidoctor_spec.rb +0 -60
  238. data/spec/templates/markup_processor_integrations/integration_spec_helper.rb +0 -46
  239. data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +0 -59
  240. data/spec/templates/markup_processor_integrations/rdoc_spec.rb +0 -39
  241. data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +0 -59
  242. data/spec/templates/markup_processor_integrations/redcloth_spec.rb +0 -48
  243. data/spec/templates/method_spec.rb +0 -118
  244. data/spec/templates/module_spec.rb +0 -203
  245. data/spec/templates/onefile_spec.rb +0 -66
  246. data/spec/templates/section_spec.rb +0 -144
  247. data/spec/templates/spec_helper.rb +0 -76
  248. data/spec/templates/tag_spec.rb +0 -52
  249. data/spec/templates/template_spec.rb +0 -410
  250. data/spec/verifier_spec.rb +0 -106
@@ -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
@@ -1,295 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::I18n::PotGenerator do
4
- def create_messages(messages)
5
- yard_messages = YARD::I18n::Messages.new
6
- add_messages(yard_messages, messages)
7
- yard_messages
8
- end
9
-
10
- def add_messages(yard_messages, messages)
11
- messages.each do |id, properties|
12
- yard_message = yard_messages.register(id)
13
- (properties[:locations] || []).each do |path, line|
14
- yard_message.add_location(path, line)
15
- end
16
- (properties[:comments] || []).each do |comment|
17
- yard_message.add_comment(comment)
18
- end
19
- end
20
- end
21
-
22
- before do
23
- @generator = YARD::I18n::PotGenerator.new("..")
24
- end
25
-
26
- describe "Generate" do
27
- it "generates the default header" do
28
- current_time = Time.parse("2011-11-20 22:17+0900")
29
- allow(@generator).to receive(:current_time).and_return(current_time)
30
- pot_creation_date = current_time.strftime("%Y-%m-%d %H:%M%z")
31
- expect(@generator.generate).to eq <<-eoh
32
- # SOME DESCRIPTIVE TITLE.
33
- # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
34
- # This file is distributed under the same license as the PACKAGE package.
35
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
36
- #
37
- #, fuzzy
38
- msgid ""
39
- msgstr ""
40
- "Project-Id-Version: PACKAGE VERSION\\n"
41
- "Report-Msgid-Bugs-To: \\n"
42
- "POT-Creation-Date: #{pot_creation_date}\\n"
43
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n"
44
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"
45
- "Language-Team: LANGUAGE <LL@li.org>\\n"
46
- "Language: \\n"
47
- "MIME-Version: 1.0\\n"
48
- "Content-Type: text/plain; charset=UTF-8\\n"
49
- "Content-Transfer-Encoding: 8bit\\n"
50
-
51
- eoh
52
- end
53
-
54
- it "generates messages in location order" do
55
- allow(@generator).to receive(:header).and_return("HEADER\n\n")
56
- messages = {
57
- "tag|see|Parser::SourceParser.parse" => {
58
- :locations => [["yard.rb", 14]],
59
- :comments => ["@see"]
60
- },
61
- "Parses a path or set of paths" => {
62
- :locations => [["yard.rb", 12], ["yard/parser/source_parser.rb", 83]],
63
- :comments => ["YARD.parse", "YARD::Parser::SourceParser.parse"]
64
- }
65
- }
66
- add_messages(@generator.messages, messages)
67
- expect(@generator.generate).to eq <<-'eoh'
68
- HEADER
69
-
70
- # YARD.parse
71
- # YARD::Parser::SourceParser.parse
72
- #: ../yard.rb:12
73
- #: ../yard/parser/source_parser.rb:83
74
- msgid "Parses a path or set of paths"
75
- msgstr ""
76
-
77
- # @see
78
- #: ../yard.rb:14
79
- msgid "tag|see|Parser::SourceParser.parse"
80
- msgstr ""
81
-
82
- eoh
83
- end
84
- end
85
-
86
- describe "Escape" do
87
- def generate_message_pot(message_id)
88
- pot = String.new("")
89
- message = YARD::I18n::Message.new(message_id)
90
- @generator.send(:generate_message, pot, message)
91
- pot
92
- end
93
-
94
- it "escapes <\\>" do
95
- expect(generate_message_pot("hello \\ world")).to eq <<-'eop'
96
- msgid "hello \\ world"
97
- msgstr ""
98
-
99
- eop
100
- end
101
-
102
- it "escapes <\">" do
103
- expect(generate_message_pot("hello \" world")).to eq <<-'eop'
104
- msgid "hello \" world"
105
- msgstr ""
106
-
107
- eop
108
- end
109
-
110
- it "escapes <\\n>" do
111
- expect(generate_message_pot("hello \n world")).to eq <<-'eop'
112
- msgid "hello \n"
113
- " world"
114
- msgstr ""
115
-
116
- eop
117
- end
118
- end
119
-
120
- describe "Object" do
121
- before do
122
- Registry.clear
123
- @yard = YARD::CodeObjects::ModuleObject.new(:root, :YARD)
124
- end
125
-
126
- it "extracts at docstring" do
127
- object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
128
- o.docstring = "An alias to {Parser::SourceParser}'s parsing method"
129
- end
130
- @generator.parse_objects([object])
131
- expect(@generator.messages).to eq create_messages(
132
- "An alias to {Parser::SourceParser}'s parsing method" => {
133
- :locations => [],
134
- :comments => ["YARD.parse"]
135
- }
136
- )
137
- end
138
-
139
- it "extracts at location" do
140
- object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
141
- o.docstring = "An alias to {Parser::SourceParser}'s parsing method"
142
- o.files = [["yard.rb", 12]]
143
- end
144
- @generator.parse_objects([object])
145
- expect(@generator.messages).to eq create_messages(
146
- "An alias to {Parser::SourceParser}'s parsing method" => {
147
- :locations => [["yard.rb", 13]],
148
- :comments => ["YARD.parse"]
149
- }
150
- )
151
- end
152
-
153
- it "extracts at tag name" do
154
- object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
155
- o.docstring = "@see Parser::SourceParser.parse"
156
- o.files = [["yard.rb", 12]]
157
- end
158
- @generator.parse_objects([object])
159
- expect(@generator.messages).to eq create_messages(
160
- "tag|see|Parser::SourceParser.parse" => {
161
- :locations => [["yard.rb", 12]],
162
- :comments => ["@see"]
163
- }
164
- )
165
- end
166
-
167
- it "extracts at tag text" do
168
- object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
169
- o.docstring = <<-eod
170
- @example Parse a glob of files
171
- YARD.parse('lib/**/*.rb')
172
- eod
173
- o.files = [["yard.rb", 12]]
174
- end
175
- @generator.parse_objects([object])
176
- expect(@generator.messages).to eq create_messages(
177
- "tag|example|Parse a glob of files" => {
178
- :locations => [["yard.rb", 12]],
179
- :comments => ["@example"]
180
- },
181
- "YARD.parse('lib/**/*.rb')" => {
182
- :locations => [["yard.rb", 12]],
183
- :comments => ["@example Parse a glob of files"]
184
- }
185
- )
186
- end
187
-
188
- it "extracts at tag types" do
189
- object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
190
- o.docstring = <<-eod
191
- @param [String, Array<String>] paths a path, glob, or list of paths to
192
- parse
193
- eod
194
- o.files = [["yard.rb", 12]]
195
- end
196
- @generator.parse_objects([object])
197
- expect(@generator.messages).to eq create_messages(
198
- "tag|param|paths" => {
199
- :locations => [["yard.rb", 12]],
200
- :comments => ["@param [String, Array<String>]"]
201
- },
202
- "a path, glob, or list of paths to\nparse" => {
203
- :locations => [["yard.rb", 12]],
204
- :comments => ["@param [String, Array<String>] paths"]
205
- }
206
- )
207
- end
208
-
209
- it "extracts at overload tag recursively" do
210
- object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
211
- o.docstring = <<-eod
212
- @overload foo(i)
213
- docstring foo(i)
214
- @param [Integer] i integer parameter
215
- eod
216
- end
217
-
218
- @generator.parse_objects([object])
219
- expect(@generator.messages).to eq create_messages(
220
- "tag|overload|foo" => {
221
- :locations => [],
222
- :comments => ["@overload"]
223
- },
224
- "docstring foo(i)" => {
225
- :locations => [],
226
- :comments => ["YARD.parse"]
227
- },
228
- "tag|param|i" => {
229
- :locations => [],
230
- :comments => ["@param [Integer]"]
231
- },
232
- "integer parameter" => {
233
- :locations => [],
234
- :comments => ["@param [Integer] i"]
235
- }
236
- )
237
- end
238
- end
239
-
240
- describe "File" do
241
- it "extracts at attribute" do
242
- path = "GettingStarted.md"
243
- text = <<-eor
244
- # @title Getting Started Guide
245
-
246
- # Getting Started with YARD
247
- eor
248
- allow(File).to receive(:open).with(path).and_yield(StringIO.new(text))
249
- allow(File).to receive(:read).with(path).and_return(text)
250
- file = YARD::CodeObjects::ExtraFileObject.new(path)
251
- @generator.parse_files([file])
252
- expect(@generator.messages).to eq create_messages(
253
- "Getting Started Guide" => {
254
- :locations => [[path, 1]],
255
- :comments => ["title"]
256
- },
257
- "# Getting Started with YARD" => {
258
- :locations => [[path, 3]],
259
- :comments => []
260
- }
261
- )
262
- end
263
-
264
- it "extracts at paragraphs" do
265
- path = "README.md"
266
- paragraph1 = <<-eop.strip
267
- Note that class methods must not be referred to with the "::" namespace
268
- separator. Only modules, classes and constants should use "::".
269
- eop
270
- paragraph2 = <<-eop.strip
271
- You can also do lookups on any installed gems. Just make sure to build the
272
- .yardoc databases for installed gems with:
273
- eop
274
- text = <<-eot
275
- #{paragraph1}
276
-
277
- #{paragraph2}
278
- eot
279
- allow(File).to receive(:open).with(path).and_yield(StringIO.new(text))
280
- allow(File).to receive(:read).with(path).and_return(text)
281
- file = YARD::CodeObjects::ExtraFileObject.new(path)
282
- @generator.parse_files([file])
283
- expect(@generator.messages).to eq create_messages(
284
- paragraph1 => {
285
- :locations => [[path, 1]],
286
- :comments => []
287
- },
288
- paragraph2 => {
289
- :locations => [[path, 4]],
290
- :comments => []
291
- }
292
- )
293
- end
294
- end
295
- end