yard 0.9.24 → 0.9.25

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 (223) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +37 -24
  3. data/CHANGELOG.md +18 -3
  4. data/README.md +96 -101
  5. data/Rakefile +2 -0
  6. data/lib/yard/cli/diff.rb +4 -1
  7. data/lib/yard/cli/server.rb +22 -13
  8. data/lib/yard/code_objects/proxy.rb +2 -1
  9. data/lib/yard/globals.rb +1 -1
  10. data/lib/yard/handlers/c/base.rb +164 -129
  11. data/lib/yard/parser/ruby/ruby_parser.rb +6 -4
  12. data/lib/yard/registry_store.rb +1 -1
  13. data/lib/yard/templates/helpers/html_helper.rb +10 -3
  14. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +5 -4
  15. data/lib/yard/version.rb +1 -1
  16. data/tasks/update_error_map.rake +53 -0
  17. data/yard.gemspec +1 -1
  18. metadata +3 -207
  19. data/spec/cli/command_parser_spec.rb +0 -43
  20. data/spec/cli/command_spec.rb +0 -36
  21. data/spec/cli/config_spec.rb +0 -148
  22. data/spec/cli/diff_spec.rb +0 -254
  23. data/spec/cli/display_spec.rb +0 -30
  24. data/spec/cli/gems_spec.rb +0 -81
  25. data/spec/cli/graph_spec.rb +0 -18
  26. data/spec/cli/help_spec.rb +0 -22
  27. data/spec/cli/i18n_spec.rb +0 -107
  28. data/spec/cli/list_spec.rb +0 -8
  29. data/spec/cli/markup_types_spec.rb +0 -22
  30. data/spec/cli/server_spec.rb +0 -324
  31. data/spec/cli/stats_spec.rb +0 -96
  32. data/spec/cli/yard_on_yard_spec.rb +0 -38
  33. data/spec/cli/yardoc_spec.rb +0 -896
  34. data/spec/cli/yri_spec.rb +0 -101
  35. data/spec/code_objects/base_spec.rb +0 -485
  36. data/spec/code_objects/class_object_spec.rb +0 -226
  37. data/spec/code_objects/code_object_list_spec.rb +0 -36
  38. data/spec/code_objects/constants_spec.rb +0 -116
  39. data/spec/code_objects/extra_file_object_spec.rb +0 -161
  40. data/spec/code_objects/macro_object_spec.rb +0 -150
  41. data/spec/code_objects/method_object_spec.rb +0 -184
  42. data/spec/code_objects/module_object_spec.rb +0 -142
  43. data/spec/code_objects/namespace_mapper_spec.rb +0 -32
  44. data/spec/code_objects/namespace_object_spec.rb +0 -171
  45. data/spec/code_objects/proxy_spec.rb +0 -147
  46. data/spec/code_objects/spec_helper.rb +0 -3
  47. data/spec/config_spec.rb +0 -171
  48. data/spec/core_ext/array_spec.rb +0 -13
  49. data/spec/core_ext/file_spec.rb +0 -72
  50. data/spec/core_ext/hash_spec.rb +0 -14
  51. data/spec/core_ext/insertion_spec.rb +0 -37
  52. data/spec/core_ext/module_spec.rb +0 -9
  53. data/spec/core_ext/string_spec.rb +0 -42
  54. data/spec/core_ext/symbol_hash_spec.rb +0 -89
  55. data/spec/docstring_parser_spec.rb +0 -280
  56. data/spec/docstring_spec.rb +0 -373
  57. data/spec/handlers/alias_handler_spec.rb +0 -82
  58. data/spec/handlers/attribute_handler_spec.rb +0 -96
  59. data/spec/handlers/base_spec.rb +0 -216
  60. data/spec/handlers/c/alias_handler_spec.rb +0 -34
  61. data/spec/handlers/c/attribute_handler_spec.rb +0 -41
  62. data/spec/handlers/c/class_handler_spec.rb +0 -78
  63. data/spec/handlers/c/constant_handler_spec.rb +0 -71
  64. data/spec/handlers/c/init_handler_spec.rb +0 -48
  65. data/spec/handlers/c/method_handler_spec.rb +0 -327
  66. data/spec/handlers/c/mixin_handler_spec.rb +0 -44
  67. data/spec/handlers/c/module_handler_spec.rb +0 -71
  68. data/spec/handlers/c/override_comment_handler_spec.rb +0 -47
  69. data/spec/handlers/c/path_handler_spec.rb +0 -36
  70. data/spec/handlers/c/spec_helper.rb +0 -23
  71. data/spec/handlers/c/struct_handler_spec.rb +0 -16
  72. data/spec/handlers/class_condition_handler_spec.rb +0 -87
  73. data/spec/handlers/class_handler_spec.rb +0 -247
  74. data/spec/handlers/class_method_handler_shared_examples.rb +0 -133
  75. data/spec/handlers/class_variable_handler_spec.rb +0 -12
  76. data/spec/handlers/constant_handler_spec.rb +0 -112
  77. data/spec/handlers/decorator_handler_methods_spec.rb +0 -393
  78. data/spec/handlers/dsl_handler_spec.rb +0 -226
  79. data/spec/handlers/examples/alias_handler_001.rb.txt +0 -46
  80. data/spec/handlers/examples/attribute_handler_001.rb.txt +0 -32
  81. data/spec/handlers/examples/class_condition_handler_001.rb.txt +0 -69
  82. data/spec/handlers/examples/class_handler_001.rb.txt +0 -120
  83. data/spec/handlers/examples/class_variable_handler_001.rb.txt +0 -10
  84. data/spec/handlers/examples/constant_handler_001.rb.txt +0 -35
  85. data/spec/handlers/examples/dsl_handler_001.rb.txt +0 -156
  86. data/spec/handlers/examples/exception_handler_001.rb.txt +0 -59
  87. data/spec/handlers/examples/extend_handler_001.rb.txt +0 -19
  88. data/spec/handlers/examples/method_condition_handler_001.rb.txt +0 -10
  89. data/spec/handlers/examples/method_handler_001.rb.txt +0 -128
  90. data/spec/handlers/examples/mixin_handler_001.rb.txt +0 -40
  91. data/spec/handlers/examples/module_handler_001.rb.txt +0 -29
  92. data/spec/handlers/examples/private_constant_handler_001.rb.txt +0 -8
  93. data/spec/handlers/examples/process_handler_001.rb.txt +0 -11
  94. data/spec/handlers/examples/visibility_handler_001.rb.txt +0 -36
  95. data/spec/handlers/examples/yield_handler_001.rb.txt +0 -54
  96. data/spec/handlers/exception_handler_spec.rb +0 -49
  97. data/spec/handlers/extend_handler_spec.rb +0 -28
  98. data/spec/handlers/legacy_base_spec.rb +0 -128
  99. data/spec/handlers/method_condition_handler_spec.rb +0 -15
  100. data/spec/handlers/method_handler_spec.rb +0 -214
  101. data/spec/handlers/mixin_handler_spec.rb +0 -60
  102. data/spec/handlers/module_function_handler_spec.rb +0 -106
  103. data/spec/handlers/module_handler_spec.rb +0 -35
  104. data/spec/handlers/private_class_method_handler_spec.rb +0 -11
  105. data/spec/handlers/private_constant_handler_spec.rb +0 -25
  106. data/spec/handlers/processor_spec.rb +0 -35
  107. data/spec/handlers/public_class_method_handler_spec.rb +0 -11
  108. data/spec/handlers/ruby/base_spec.rb +0 -95
  109. data/spec/handlers/ruby/legacy/base_spec.rb +0 -84
  110. data/spec/handlers/spec_helper.rb +0 -33
  111. data/spec/handlers/visibility_handler_spec.rb +0 -44
  112. data/spec/handlers/yield_handler_spec.rb +0 -52
  113. data/spec/i18n/locale_spec.rb +0 -81
  114. data/spec/i18n/message_spec.rb +0 -52
  115. data/spec/i18n/messages_spec.rb +0 -67
  116. data/spec/i18n/pot_generator_spec.rb +0 -295
  117. data/spec/i18n/text_spec.rb +0 -184
  118. data/spec/logging_spec.rb +0 -44
  119. data/spec/options_spec.rb +0 -171
  120. data/spec/parser/base_spec.rb +0 -24
  121. data/spec/parser/c_parser_spec.rb +0 -236
  122. data/spec/parser/examples/array.c.txt +0 -6267
  123. data/spec/parser/examples/example1.rb.txt +0 -8
  124. data/spec/parser/examples/extrafile.c.txt +0 -8
  125. data/spec/parser/examples/file.c.txt +0 -28
  126. data/spec/parser/examples/multifile.c.txt +0 -22
  127. data/spec/parser/examples/namespace.cpp.txt +0 -68
  128. data/spec/parser/examples/override.c.txt +0 -424
  129. data/spec/parser/examples/parse_in_order_001.rb.txt +0 -2
  130. data/spec/parser/examples/parse_in_order_002.rb.txt +0 -2
  131. data/spec/parser/examples/tag_handler_001.rb.txt +0 -8
  132. data/spec/parser/ruby/ast_node_spec.rb +0 -33
  133. data/spec/parser/ruby/legacy/statement_list_spec.rb +0 -299
  134. data/spec/parser/ruby/legacy/token_list_spec.rb +0 -79
  135. data/spec/parser/ruby/ruby_parser_spec.rb +0 -520
  136. data/spec/parser/ruby/token_resolver_spec.rb +0 -165
  137. data/spec/parser/source_parser_spec.rb +0 -727
  138. data/spec/parser/tag_parsing_spec.rb +0 -17
  139. data/spec/rake/yardoc_task_spec.rb +0 -118
  140. data/spec/registry_resolver_spec.rb +0 -15
  141. data/spec/registry_spec.rb +0 -463
  142. data/spec/registry_store_spec.rb +0 -327
  143. data/spec/rubygems/doc_manager_spec.rb +0 -112
  144. data/spec/serializers/data/serialized_yardoc/checksums +0 -1
  145. data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
  146. data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
  147. data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
  148. data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
  149. data/spec/serializers/data/serialized_yardoc/proxy_types +0 -2
  150. data/spec/serializers/file_system_serializer_spec.rb +0 -145
  151. data/spec/serializers/spec_helper.rb +0 -2
  152. data/spec/serializers/yardoc_serializer_spec.rb +0 -90
  153. data/spec/server/adapter_spec.rb +0 -39
  154. data/spec/server/commands/base_spec.rb +0 -91
  155. data/spec/server/commands/library_command_spec.rb +0 -39
  156. data/spec/server/doc_server_helper_spec.rb +0 -72
  157. data/spec/server/doc_server_serializer_spec.rb +0 -60
  158. data/spec/server/rack_adapter_spec.rb +0 -21
  159. data/spec/server/router_spec.rb +0 -123
  160. data/spec/server/spec_helper.rb +0 -22
  161. data/spec/server/static_caching_spec.rb +0 -47
  162. data/spec/server/webrick_servlet_spec.rb +0 -20
  163. data/spec/server_spec.rb +0 -19
  164. data/spec/spec_helper.rb +0 -212
  165. data/spec/tags/default_factory_spec.rb +0 -168
  166. data/spec/tags/default_tag_spec.rb +0 -11
  167. data/spec/tags/directives_spec.rb +0 -463
  168. data/spec/tags/library_spec.rb +0 -48
  169. data/spec/tags/overload_tag_spec.rb +0 -53
  170. data/spec/tags/ref_tag_list_spec.rb +0 -53
  171. data/spec/tags/types_explainer_spec.rb +0 -203
  172. data/spec/templates/class_spec.rb +0 -45
  173. data/spec/templates/constant_spec.rb +0 -41
  174. data/spec/templates/engine_spec.rb +0 -131
  175. data/spec/templates/examples/class001.html +0 -308
  176. data/spec/templates/examples/class001.txt +0 -36
  177. data/spec/templates/examples/class002.html +0 -39
  178. data/spec/templates/examples/constant001.txt +0 -25
  179. data/spec/templates/examples/constant002.txt +0 -7
  180. data/spec/templates/examples/constant003.txt +0 -11
  181. data/spec/templates/examples/method001.html +0 -137
  182. data/spec/templates/examples/method001.txt +0 -35
  183. data/spec/templates/examples/method002.html +0 -91
  184. data/spec/templates/examples/method002.txt +0 -20
  185. data/spec/templates/examples/method003.html +0 -165
  186. data/spec/templates/examples/method003.txt +0 -45
  187. data/spec/templates/examples/method004.html +0 -48
  188. data/spec/templates/examples/method004.txt +0 -10
  189. data/spec/templates/examples/method005.html +0 -105
  190. data/spec/templates/examples/method005.txt +0 -33
  191. data/spec/templates/examples/method006.html +0 -108
  192. data/spec/templates/examples/method006.txt +0 -20
  193. data/spec/templates/examples/module001.dot +0 -33
  194. data/spec/templates/examples/module001.html +0 -833
  195. data/spec/templates/examples/module001.txt +0 -33
  196. data/spec/templates/examples/module002.html +0 -341
  197. data/spec/templates/examples/module003.html +0 -202
  198. data/spec/templates/examples/module004.html +0 -394
  199. data/spec/templates/examples/module005.html +0 -82
  200. data/spec/templates/examples/tag001.txt +0 -82
  201. data/spec/templates/helpers/base_helper_spec.rb +0 -171
  202. data/spec/templates/helpers/html_helper_spec.rb +0 -666
  203. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +0 -65
  204. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +0 -84
  205. data/spec/templates/helpers/markup_helper_spec.rb +0 -136
  206. data/spec/templates/helpers/method_helper_spec.rb +0 -107
  207. data/spec/templates/helpers/module_helper_spec.rb +0 -35
  208. data/spec/templates/helpers/shared_signature_examples.rb +0 -126
  209. data/spec/templates/helpers/text_helper_spec.rb +0 -65
  210. data/spec/templates/markup_processor_integrations/asciidoctor_spec.rb +0 -60
  211. data/spec/templates/markup_processor_integrations/integration_spec_helper.rb +0 -50
  212. data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +0 -48
  213. data/spec/templates/markup_processor_integrations/rdoc_spec.rb +0 -39
  214. data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +0 -64
  215. data/spec/templates/markup_processor_integrations/redcloth_spec.rb +0 -64
  216. data/spec/templates/method_spec.rb +0 -118
  217. data/spec/templates/module_spec.rb +0 -203
  218. data/spec/templates/onefile_spec.rb +0 -66
  219. data/spec/templates/section_spec.rb +0 -144
  220. data/spec/templates/spec_helper.rb +0 -76
  221. data/spec/templates/tag_spec.rb +0 -52
  222. data/spec/templates/template_spec.rb +0 -410
  223. 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