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,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
@@ -1,184 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::I18n::Text do
4
- describe "#extract_messages" do
5
- def extract_messages(input, options = {})
6
- text = YARD::I18n::Text.new(StringIO.new(input), options)
7
- messages = []
8
- text.extract_messages do |*message|
9
- messages << message
10
- end
11
- messages
12
- end
13
-
14
- describe "Header" do
15
- it "extracts at attribute" do
16
- text = <<-eot
17
- # @title Getting Started Guide
18
-
19
- # Getting Started with YARD
20
- eot
21
- expect(extract_messages(text, :have_header => true)).to eq(
22
- [[:attribute, "title", "Getting Started Guide", 1],
23
- [:paragraph, "# Getting Started with YARD", 3]]
24
- )
25
- end
26
-
27
- it "ignores markup line" do
28
- text = <<-eot
29
- #!markdown
30
- # @title Getting Started Guide
31
-
32
- # Getting Started with YARD
33
- eot
34
- expect(extract_messages(text, :have_header => true)).to eq(
35
- [[:attribute, "title", "Getting Started Guide", 2],
36
- [:paragraph, "# Getting Started with YARD", 4]]
37
- )
38
- end
39
-
40
- it "terminates header block by markup line not at the first line" do
41
- text = <<-eot
42
- # @title Getting Started Guide
43
- #!markdown
44
-
45
- # Getting Started with YARD
46
- eot
47
- expect(extract_messages(text, :have_header => true)).to eq(
48
- [[:attribute, "title", "Getting Started Guide", 1],
49
- [:paragraph, "#!markdown", 2],
50
- [:paragraph, "# Getting Started with YARD", 4]]
51
- )
52
- end
53
- end
54
-
55
- describe "Body" do
56
- it "splits to paragraphs" do
57
- paragraph1 = <<-eop.strip
58
- Note that class methods must not be referred to with the "::" namespace
59
- separator. Only modules, classes and constants should use "::".
60
- eop
61
- paragraph2 = <<-eop.strip
62
- You can also do lookups on any installed gems. Just make sure to build the
63
- .yardoc databases for installed gems with:
64
- eop
65
- text = <<-eot
66
- #{paragraph1}
67
-
68
- #{paragraph2}
69
- eot
70
- expect(extract_messages(text)).to eq(
71
- [[:paragraph, paragraph1, 1],
72
- [:paragraph, paragraph2, 4]]
73
- )
74
- end
75
- end
76
- end
77
-
78
- describe "#translate" do
79
- def locale
80
- locale = YARD::I18n::Locale.new("fr")
81
- messages = locale.instance_variable_get(:@messages)
82
- messages["markdown"] = "markdown (markdown in fr)"
83
- messages["Hello"] = "Bonjour (Hello in fr)"
84
- messages["Paragraph 1."] = "Paragraphe 1."
85
- messages["Paragraph 2."] = "Paragraphe 2."
86
- locale
87
- end
88
-
89
- def translate(input, options = {})
90
- text = YARD::I18n::Text.new(StringIO.new(input), options)
91
- text.translate(locale)
92
- end
93
-
94
- describe "Header" do
95
- it "extracts at attribute" do
96
- text = <<-eot
97
- # @title Hello
98
-
99
- # Getting Started with YARD
100
-
101
- Paragraph.
102
- eot
103
- expect(translate(text, :have_header => true)).to eq <<-eot
104
- # @title Bonjour (Hello in fr)
105
-
106
- # Getting Started with YARD
107
-
108
- Paragraph.
109
- eot
110
- end
111
-
112
- it "ignores markup line" do
113
- text = <<-eot
114
- #!markdown
115
- # @title Hello
116
-
117
- # Getting Started with YARD
118
-
119
- Paragraph.
120
- eot
121
- expect(translate(text, :have_header => true)).to eq <<-eot
122
- #!markdown
123
- # @title Bonjour (Hello in fr)
124
-
125
- # Getting Started with YARD
126
-
127
- Paragraph.
128
- eot
129
- end
130
- end
131
-
132
- describe "Body" do
133
- it "splits to paragraphs" do
134
- paragraph1 = <<-eop.strip
135
- Paragraph 1.
136
- eop
137
- paragraph2 = <<-eop.strip
138
- Paragraph 2.
139
- eop
140
- text = <<-eot
141
- #{paragraph1}
142
-
143
- #{paragraph2}
144
- eot
145
- expect(translate(text)).to eq <<-eot
146
- Paragraphe 1.
147
-
148
- Paragraphe 2.
149
- eot
150
- end
151
-
152
- it "does not modify non-translated message" do
153
- nonexistent_paragraph = <<-eop.strip
154
- Nonexsitent paragraph.
155
- eop
156
- text = <<-eot
157
- #{nonexistent_paragraph}
158
- eot
159
- expect(translate(text)).to eq <<-eot
160
- #{nonexistent_paragraph}
161
- eot
162
- end
163
-
164
- it "keeps empty lines" do
165
- text = <<-eot
166
- Paragraph 1.
167
-
168
-
169
-
170
-
171
- Paragraph 2.
172
- eot
173
- expect(translate(text)).to eq <<-eot
174
- Paragraphe 1.
175
-
176
-
177
-
178
-
179
- Paragraphe 2.
180
- eot
181
- end
182
- end
183
- end
184
- end
data/spec/logging_spec.rb DELETED
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::Logger do
4
- describe "#show_backtraces" do
5
- it "is true if debug level is on" do
6
- log.show_backtraces = true
7
- log.enter_level(Logger::DEBUG) do
8
- log.show_backtraces = false
9
- expect(log.show_backtraces).to be true
10
- end
11
- expect(log.show_backtraces).to be false
12
- end
13
- end
14
-
15
- describe "#backtrace" do
16
- before { log.show_backtraces = true }
17
- after { log.show_backtraces = false }
18
-
19
- it "logs backtrace in error by default" do
20
- expect(log).to receive(:error).with("RuntimeError: foo")
21
- expect(log).to receive(:error).with("Stack trace:\n\tline1\n\tline2\n")
22
- exc = RuntimeError.new("foo")
23
- exc.set_backtrace(['line1', 'line2'])
24
- log.enter_level(Logger::INFO) { log.backtrace(exc) }
25
- end
26
-
27
- it "allows backtrace to be entered in other modes" do
28
- expect(log).to receive(:warn).with("RuntimeError: foo")
29
- expect(log).to receive(:warn).with("Stack trace:\n\tline1\n\tline2\n")
30
- exc = RuntimeError.new("foo")
31
- exc.set_backtrace(['line1', 'line2'])
32
- log.enter_level(Logger::INFO) { log.backtrace(exc, :warn) }
33
- end
34
- end
35
-
36
- describe '#warn' do
37
- before { log.warned = false }
38
- after { log.warned = false }
39
-
40
- it 'changes #warned from false to true' do
41
- expect { log.warn('message') }.to change(log, :warned).from(false).to(true)
42
- end
43
- end
44
- end
data/spec/options_spec.rb DELETED
@@ -1,171 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe YARD::Options do
4
- class FooOptions < YARD::Options
5
- attr_accessor :foo
6
- def initialize; self.foo = "abc" end
7
- end
8
-
9
- describe ".default_attr" do
10
- it "allows default attributes to be defined with symbols" do
11
- class DefaultOptions1 < YARD::Options
12
- default_attr :foo, 'HELLO'
13
- end
14
- o = DefaultOptions1.new
15
- o.reset_defaults
16
- expect(o.foo).to eq 'HELLO'
17
- end
18
-
19
- it "calls lambda if value is a Proc" do
20
- class DefaultOptions2 < YARD::Options
21
- default_attr :foo, lambda { 100 }
22
- end
23
- o = DefaultOptions2.new
24
- o.reset_defaults
25
- expect(o.foo).to eq 100
26
- end
27
- end
28
-
29
- describe "#reset_defaults" do
30
- it "does not define defaults until reset is called" do
31
- class ResetDefaultOptions1 < YARD::Options
32
- default_attr :foo, 'FOO'
33
- end
34
- expect(ResetDefaultOptions1.new.foo).to be nil
35
- o = ResetDefaultOptions1.new
36
- o.reset_defaults
37
- expect(o.foo).to eq 'FOO'
38
- end
39
-
40
- it "uses defaults from superclass as well" do
41
- class ResetDefaultOptions2 < YARD::Options
42
- default_attr :foo, 'FOO'
43
- end
44
- class ResetDefaultOptions3 < ResetDefaultOptions2
45
- end
46
- o = ResetDefaultOptions3.new
47
- o.reset_defaults
48
- expect(o.foo).to eq 'FOO'
49
- end
50
- end
51
-
52
- describe "#delete" do
53
- it "deletes an option" do
54
- o = FooOptions.new
55
- o.delete(:foo)
56
- expect(o.to_hash).to eq({})
57
- end
58
-
59
- it "does not error if an option is deleted that does not exist" do
60
- o = FooOptions.new
61
- o.delete(:foo)
62
- o.delete(:foo)
63
- expect(o.to_hash).to eq({})
64
- end
65
- end
66
-
67
- describe "#[]" do
68
- it "handles getting option values using hash syntax" do
69
- expect(FooOptions.new[:foo]).to eq "abc"
70
- end
71
- end
72
-
73
- describe "#[]=" do
74
- it "handles setting options using hash syntax" do
75
- o = FooOptions.new
76
- o[:foo] = "xyz"
77
- expect(o[:foo]).to eq "xyz"
78
- end
79
-
80
- it "allows setting of unregistered keys" do
81
- o = FooOptions.new
82
- o[:bar] = "foo"
83
- expect(o[:bar]).to eq "foo"
84
- end
85
- end
86
-
87
- describe "#method_missing" do
88
- it "allows setting of unregistered keys" do
89
- o = FooOptions.new
90
- o.bar = 'foo'
91
- expect(o.bar).to eq 'foo'
92
- end
93
-
94
- it "allows getting values of unregistered keys (return nil)" do
95
- expect(FooOptions.new.bar).to be nil
96
- end
97
-
98
- it "prints debugging messages about unregistered keys" do
99
- expect(log).to receive(:debug).with("Attempting to access unregistered key bar on FooOptions")
100
- FooOptions.new.bar
101
- expect(log).to receive(:debug).with("Attempting to set unregistered key bar on FooOptions")
102
- FooOptions.new.bar = 1
103
- end
104
- end
105
-
106
- describe "#update" do
107
- it "allows updating of options" do
108
- expect(FooOptions.new.update(:foo => "xyz").foo).to eq "xyz"
109
- end
110
-
111
- it "does not ignore keys with no setter (OpenStruct behaviour)" do
112
- o = FooOptions.new
113
- o.update(:bar => "xyz")
114
- expect(o.to_hash).to eq(:foo => "abc", :bar => "xyz")
115
- end
116
- end
117
-
118
- describe "#merge" do
119
- it "updates a new object" do
120
- o = FooOptions.new
121
- expect(o.merge(:foo => "xyz").object_id).not_to eq o.object_id
122
- expect(o.merge(:foo => "xyz").to_hash).to eq(:foo => "xyz")
123
- end
124
-
125
- it "adds in values from original object" do
126
- o = FooOptions.new
127
- o.update(:bar => "foo")
128
- expect(o.merge(:baz => 1).to_hash).to eq(:foo => "abc", :bar => "foo", :baz => 1)
129
- end
130
- end
131
-
132
- describe "#to_hash" do
133
- it "converts all instance variables and symbolized keys" do
134
- class ToHashOptions1 < YARD::Options
135
- attr_accessor :foo, :bar, :baz
136
- def initialize; @foo = 1; @bar = 2; @baz = "hello" end
137
- end
138
- o = ToHashOptions1.new
139
- hash = o.to_hash
140
- expect(hash.keys).to include(:foo, :bar, :baz)
141
- expect(hash[:foo]).to eq 1
142
- expect(hash[:bar]).to eq 2
143
- expect(hash[:baz]).to eq "hello"
144
- end
145
-
146
- it "uses accessor when converting values to hash" do
147
- class ToHashOptions2 < YARD::Options
148
- def initialize; @foo = 1 end
149
- def foo; "HELLO#{@foo}" end
150
- end
151
- o = ToHashOptions2.new
152
- expect(o.to_hash).to eq(:foo => "HELLO1")
153
- end
154
-
155
- it "ignores ivars with no accessor" do
156
- class ToHashOptions3 < YARD::Options
157
- attr_accessor :foo
158
- def initialize; @foo = 1; @bar = "NOIGNORE" end
159
- end
160
- o = ToHashOptions3.new
161
- expect(o.to_hash).to eq(:foo => 1, :bar => "NOIGNORE")
162
- end
163
- end
164
-
165
- describe "#tap" do
166
- it "supports #tap(&block) (even in 1.8.6)" do
167
- o = FooOptions.new.tap {|obj| obj.foo = :BAR }
168
- expect(o.to_hash).to eq(:foo => :BAR)
169
- end
170
- end
171
- end