openvox-strings 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +407 -0
  3. data/LICENSE +177 -0
  4. data/README.md +116 -0
  5. data/lib/openvox-strings/describe.rb +75 -0
  6. data/lib/openvox-strings/json.rb +33 -0
  7. data/lib/openvox-strings/markdown/base.rb +236 -0
  8. data/lib/openvox-strings/markdown/data_type.rb +39 -0
  9. data/lib/openvox-strings/markdown/defined_type.rb +20 -0
  10. data/lib/openvox-strings/markdown/function.rb +59 -0
  11. data/lib/openvox-strings/markdown/helpers.rb +21 -0
  12. data/lib/openvox-strings/markdown/puppet_class.rb +20 -0
  13. data/lib/openvox-strings/markdown/puppet_plan.rb +20 -0
  14. data/lib/openvox-strings/markdown/puppet_task.rb +29 -0
  15. data/lib/openvox-strings/markdown/resource_type.rb +56 -0
  16. data/lib/openvox-strings/markdown/templates/classes_and_defines.erb +94 -0
  17. data/lib/openvox-strings/markdown/templates/data_type.erb +101 -0
  18. data/lib/openvox-strings/markdown/templates/data_type_function.erb +67 -0
  19. data/lib/openvox-strings/markdown/templates/function.erb +106 -0
  20. data/lib/openvox-strings/markdown/templates/puppet_task.erb +28 -0
  21. data/lib/openvox-strings/markdown/templates/resource_type.erb +156 -0
  22. data/lib/openvox-strings/markdown/templates/table_of_contents.erb +26 -0
  23. data/lib/openvox-strings/markdown.rb +81 -0
  24. data/lib/openvox-strings/monkey_patches/display_object_command.rb +16 -0
  25. data/lib/openvox-strings/tasks/generate.rb +54 -0
  26. data/lib/openvox-strings/tasks/gh_pages.rb +72 -0
  27. data/lib/openvox-strings/tasks/validate.rb +42 -0
  28. data/lib/openvox-strings/tasks.rb +14 -0
  29. data/lib/openvox-strings/version.rb +5 -0
  30. data/lib/openvox-strings/yard/code_objects/base.rb +16 -0
  31. data/lib/openvox-strings/yard/code_objects/class.rb +60 -0
  32. data/lib/openvox-strings/yard/code_objects/data_type.rb +102 -0
  33. data/lib/openvox-strings/yard/code_objects/data_type_alias.rb +60 -0
  34. data/lib/openvox-strings/yard/code_objects/defined_type.rb +59 -0
  35. data/lib/openvox-strings/yard/code_objects/function.rb +106 -0
  36. data/lib/openvox-strings/yard/code_objects/group.rb +33 -0
  37. data/lib/openvox-strings/yard/code_objects/plan.rb +59 -0
  38. data/lib/openvox-strings/yard/code_objects/provider.rb +98 -0
  39. data/lib/openvox-strings/yard/code_objects/task.rb +69 -0
  40. data/lib/openvox-strings/yard/code_objects/type.rb +196 -0
  41. data/lib/openvox-strings/yard/code_objects.rb +14 -0
  42. data/lib/openvox-strings/yard/handlers/helpers.rb +10 -0
  43. data/lib/openvox-strings/yard/handlers/json/base.rb +8 -0
  44. data/lib/openvox-strings/yard/handlers/json/task_handler.rb +34 -0
  45. data/lib/openvox-strings/yard/handlers/puppet/base.rb +52 -0
  46. data/lib/openvox-strings/yard/handlers/puppet/class_handler.rb +29 -0
  47. data/lib/openvox-strings/yard/handlers/puppet/data_type_alias_handler.rb +26 -0
  48. data/lib/openvox-strings/yard/handlers/puppet/defined_type_handler.rb +29 -0
  49. data/lib/openvox-strings/yard/handlers/puppet/function_handler.rb +54 -0
  50. data/lib/openvox-strings/yard/handlers/puppet/plan_handler.rb +29 -0
  51. data/lib/openvox-strings/yard/handlers/ruby/base.rb +55 -0
  52. data/lib/openvox-strings/yard/handlers/ruby/data_type_handler.rb +411 -0
  53. data/lib/openvox-strings/yard/handlers/ruby/function_handler.rb +386 -0
  54. data/lib/openvox-strings/yard/handlers/ruby/provider_handler.rb +127 -0
  55. data/lib/openvox-strings/yard/handlers/ruby/rsapi_handler.rb +157 -0
  56. data/lib/openvox-strings/yard/handlers/ruby/type_base.rb +146 -0
  57. data/lib/openvox-strings/yard/handlers/ruby/type_extras_handler.rb +65 -0
  58. data/lib/openvox-strings/yard/handlers/ruby/type_handler.rb +105 -0
  59. data/lib/openvox-strings/yard/handlers.rb +28 -0
  60. data/lib/openvox-strings/yard/parsers/json/parser.rb +38 -0
  61. data/lib/openvox-strings/yard/parsers/json/task_statement.rb +37 -0
  62. data/lib/openvox-strings/yard/parsers/puppet/parser.rb +89 -0
  63. data/lib/openvox-strings/yard/parsers/puppet/statement.rb +182 -0
  64. data/lib/openvox-strings/yard/parsers.rb +14 -0
  65. data/lib/openvox-strings/yard/tags/enum_tag.rb +13 -0
  66. data/lib/openvox-strings/yard/tags/factory.rb +18 -0
  67. data/lib/openvox-strings/yard/tags/overload_tag.rb +112 -0
  68. data/lib/openvox-strings/yard/tags/parameter_directive.rb +25 -0
  69. data/lib/openvox-strings/yard/tags/property_directive.rb +25 -0
  70. data/lib/openvox-strings/yard/tags/summary_tag.rb +10 -0
  71. data/lib/openvox-strings/yard/tags.rb +11 -0
  72. data/lib/openvox-strings/yard/templates/default/fulldoc/html/css/common.css +8 -0
  73. data/lib/openvox-strings/yard/templates/default/fulldoc/html/full_list_puppet_class.erb +9 -0
  74. data/lib/openvox-strings/yard/templates/default/fulldoc/html/full_list_puppet_data_type.erb +10 -0
  75. data/lib/openvox-strings/yard/templates/default/fulldoc/html/full_list_puppet_defined_type.erb +9 -0
  76. data/lib/openvox-strings/yard/templates/default/fulldoc/html/full_list_puppet_function.erb +10 -0
  77. data/lib/openvox-strings/yard/templates/default/fulldoc/html/full_list_puppet_plan.erb +9 -0
  78. data/lib/openvox-strings/yard/templates/default/fulldoc/html/full_list_puppet_provider.erb +10 -0
  79. data/lib/openvox-strings/yard/templates/default/fulldoc/html/full_list_puppet_task.erb +9 -0
  80. data/lib/openvox-strings/yard/templates/default/fulldoc/html/full_list_puppet_type.erb +9 -0
  81. data/lib/openvox-strings/yard/templates/default/fulldoc/html/setup.rb +93 -0
  82. data/lib/openvox-strings/yard/templates/default/layout/html/footer.erb +3 -0
  83. data/lib/openvox-strings/yard/templates/default/layout/html/objects.erb +37 -0
  84. data/lib/openvox-strings/yard/templates/default/layout/html/setup.rb +231 -0
  85. data/lib/openvox-strings/yard/templates/default/puppet_class/html/box_info.erb +26 -0
  86. data/lib/openvox-strings/yard/templates/default/puppet_class/html/deprecated.erb +6 -0
  87. data/lib/openvox-strings/yard/templates/default/puppet_class/html/header.erb +1 -0
  88. data/lib/openvox-strings/yard/templates/default/puppet_class/html/note.erb +6 -0
  89. data/lib/openvox-strings/yard/templates/default/puppet_class/html/overview.erb +6 -0
  90. data/lib/openvox-strings/yard/templates/default/puppet_class/html/setup.rb +16 -0
  91. data/lib/openvox-strings/yard/templates/default/puppet_class/html/source.erb +12 -0
  92. data/lib/openvox-strings/yard/templates/default/puppet_class/html/summary.erb +4 -0
  93. data/lib/openvox-strings/yard/templates/default/puppet_class/html/todo.erb +6 -0
  94. data/lib/openvox-strings/yard/templates/default/puppet_data_type/html/box_info.erb +10 -0
  95. data/lib/openvox-strings/yard/templates/default/puppet_data_type/html/deprecated.erb +6 -0
  96. data/lib/openvox-strings/yard/templates/default/puppet_data_type/html/header.erb +1 -0
  97. data/lib/openvox-strings/yard/templates/default/puppet_data_type/html/method_details_list.erb +6 -0
  98. data/lib/openvox-strings/yard/templates/default/puppet_data_type/html/note.erb +6 -0
  99. data/lib/openvox-strings/yard/templates/default/puppet_data_type/html/overview.erb +6 -0
  100. data/lib/openvox-strings/yard/templates/default/puppet_data_type/html/setup.rb +15 -0
  101. data/lib/openvox-strings/yard/templates/default/puppet_data_type/html/source.erb +12 -0
  102. data/lib/openvox-strings/yard/templates/default/puppet_data_type/html/summary.erb +4 -0
  103. data/lib/openvox-strings/yard/templates/default/puppet_data_type/html/todo.erb +6 -0
  104. data/lib/openvox-strings/yard/templates/default/puppet_data_type_alias/html/alias_of.erb +10 -0
  105. data/lib/openvox-strings/yard/templates/default/puppet_data_type_alias/html/box_info.erb +10 -0
  106. data/lib/openvox-strings/yard/templates/default/puppet_data_type_alias/html/deprecated.erb +6 -0
  107. data/lib/openvox-strings/yard/templates/default/puppet_data_type_alias/html/header.erb +1 -0
  108. data/lib/openvox-strings/yard/templates/default/puppet_data_type_alias/html/note.erb +6 -0
  109. data/lib/openvox-strings/yard/templates/default/puppet_data_type_alias/html/overview.erb +6 -0
  110. data/lib/openvox-strings/yard/templates/default/puppet_data_type_alias/html/setup.rb +19 -0
  111. data/lib/openvox-strings/yard/templates/default/puppet_data_type_alias/html/source.erb +12 -0
  112. data/lib/openvox-strings/yard/templates/default/puppet_data_type_alias/html/summary.erb +4 -0
  113. data/lib/openvox-strings/yard/templates/default/puppet_data_type_alias/html/todo.erb +6 -0
  114. data/lib/openvox-strings/yard/templates/default/puppet_defined_type/html/box_info.erb +10 -0
  115. data/lib/openvox-strings/yard/templates/default/puppet_defined_type/html/deprecated.erb +6 -0
  116. data/lib/openvox-strings/yard/templates/default/puppet_defined_type/html/header.erb +1 -0
  117. data/lib/openvox-strings/yard/templates/default/puppet_defined_type/html/note.erb +6 -0
  118. data/lib/openvox-strings/yard/templates/default/puppet_defined_type/html/overview.erb +6 -0
  119. data/lib/openvox-strings/yard/templates/default/puppet_defined_type/html/setup.rb +7 -0
  120. data/lib/openvox-strings/yard/templates/default/puppet_defined_type/html/source.erb +12 -0
  121. data/lib/openvox-strings/yard/templates/default/puppet_defined_type/html/summary.erb +4 -0
  122. data/lib/openvox-strings/yard/templates/default/puppet_defined_type/html/todo.erb +6 -0
  123. data/lib/openvox-strings/yard/templates/default/puppet_function/html/box_info.erb +14 -0
  124. data/lib/openvox-strings/yard/templates/default/puppet_function/html/deprecated.erb +6 -0
  125. data/lib/openvox-strings/yard/templates/default/puppet_function/html/header.erb +1 -0
  126. data/lib/openvox-strings/yard/templates/default/puppet_function/html/note.erb +6 -0
  127. data/lib/openvox-strings/yard/templates/default/puppet_function/html/overview.erb +18 -0
  128. data/lib/openvox-strings/yard/templates/default/puppet_function/html/setup.rb +7 -0
  129. data/lib/openvox-strings/yard/templates/default/puppet_function/html/source.erb +12 -0
  130. data/lib/openvox-strings/yard/templates/default/puppet_function/html/summary.erb +4 -0
  131. data/lib/openvox-strings/yard/templates/default/puppet_function/html/todo.erb +6 -0
  132. data/lib/openvox-strings/yard/templates/default/puppet_plan/html/box_info.erb +10 -0
  133. data/lib/openvox-strings/yard/templates/default/puppet_plan/html/deprecated.erb +6 -0
  134. data/lib/openvox-strings/yard/templates/default/puppet_plan/html/header.erb +1 -0
  135. data/lib/openvox-strings/yard/templates/default/puppet_plan/html/note.erb +6 -0
  136. data/lib/openvox-strings/yard/templates/default/puppet_plan/html/overview.erb +6 -0
  137. data/lib/openvox-strings/yard/templates/default/puppet_plan/html/setup.rb +13 -0
  138. data/lib/openvox-strings/yard/templates/default/puppet_plan/html/source.erb +12 -0
  139. data/lib/openvox-strings/yard/templates/default/puppet_plan/html/summary.erb +4 -0
  140. data/lib/openvox-strings/yard/templates/default/puppet_plan/html/todo.erb +6 -0
  141. data/lib/openvox-strings/yard/templates/default/puppet_provider/html/box_info.erb +14 -0
  142. data/lib/openvox-strings/yard/templates/default/puppet_provider/html/collection.erb +17 -0
  143. data/lib/openvox-strings/yard/templates/default/puppet_provider/html/features.erb +12 -0
  144. data/lib/openvox-strings/yard/templates/default/puppet_provider/html/header.erb +1 -0
  145. data/lib/openvox-strings/yard/templates/default/puppet_provider/html/overview.erb +6 -0
  146. data/lib/openvox-strings/yard/templates/default/puppet_provider/html/setup.rb +31 -0
  147. data/lib/openvox-strings/yard/templates/default/puppet_provider/html/summary.erb +4 -0
  148. data/lib/openvox-strings/yard/templates/default/puppet_task/html/box_info.erb +9 -0
  149. data/lib/openvox-strings/yard/templates/default/puppet_task/html/header.erb +1 -0
  150. data/lib/openvox-strings/yard/templates/default/puppet_task/html/input.erb +5 -0
  151. data/lib/openvox-strings/yard/templates/default/puppet_task/html/overview.erb +6 -0
  152. data/lib/openvox-strings/yard/templates/default/puppet_task/html/parameters.erb +16 -0
  153. data/lib/openvox-strings/yard/templates/default/puppet_task/html/setup.rb +24 -0
  154. data/lib/openvox-strings/yard/templates/default/puppet_task/html/supports_noop.erb +3 -0
  155. data/lib/openvox-strings/yard/templates/default/puppet_type/html/box_info.erb +20 -0
  156. data/lib/openvox-strings/yard/templates/default/puppet_type/html/deprecated.erb +6 -0
  157. data/lib/openvox-strings/yard/templates/default/puppet_type/html/features.erb +13 -0
  158. data/lib/openvox-strings/yard/templates/default/puppet_type/html/header.erb +1 -0
  159. data/lib/openvox-strings/yard/templates/default/puppet_type/html/note.erb +6 -0
  160. data/lib/openvox-strings/yard/templates/default/puppet_type/html/overview.erb +6 -0
  161. data/lib/openvox-strings/yard/templates/default/puppet_type/html/parameters.erb +35 -0
  162. data/lib/openvox-strings/yard/templates/default/puppet_type/html/setup.rb +36 -0
  163. data/lib/openvox-strings/yard/templates/default/puppet_type/html/summary.erb +4 -0
  164. data/lib/openvox-strings/yard/templates/default/puppet_type/html/todo.erb +6 -0
  165. data/lib/openvox-strings/yard/templates/default/tags/html/enum.erb +17 -0
  166. data/lib/openvox-strings/yard/templates/default/tags/html/puppet_overload.erb +12 -0
  167. data/lib/openvox-strings/yard/templates/default/tags/setup.rb +20 -0
  168. data/lib/openvox-strings/yard/util.rb +87 -0
  169. data/lib/openvox-strings/yard.rb +132 -0
  170. data/lib/openvox-strings.rb +88 -0
  171. data/lib/puppet/application/strings.rb +7 -0
  172. data/lib/puppet/face/strings.rb +185 -0
  173. data/lib/puppet/feature/rgen.rb +5 -0
  174. data/lib/puppet/feature/yard.rb +5 -0
  175. metadata +263 -0
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Initializes the template.
4
+ # @return [void]
5
+ def init
6
+ sections :header, :box_info, :summary, :overview, [:note, :todo, :deprecated, T('tags'), :source]
7
+ end
@@ -0,0 +1,12 @@
1
+ <div class="method_details_list">
2
+ <table class="source_code">
3
+ <tr>
4
+ <td>
5
+ <pre class="lines"><%= "\n\n\n" %><%= h format_lines(object) %></pre>
6
+ </td>
7
+ <td>
8
+ <pre class="code"><span class="info file"># File '<%= h object.file %>'<% if object.line %>, line <%= object.line %><% end %></span><%= "\n\n" %><%= html_syntax_highlight object.source %></pre>
9
+ </td>
10
+ </tr>
11
+ </table>
12
+ </div>
@@ -0,0 +1,4 @@
1
+ <% if object.docstring.has_tag?(:summary) %>
2
+ <h2>Summary</h2>
3
+ <%= object.docstring.tag(:summary).text %>
4
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <% object.tags(:todo).each do |tag| %>
2
+ <div class="note todo">
3
+ <strong>TODO:</strong>
4
+ <%= htmlify_line tag.text %>
5
+ </div>
6
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <div class="box_info">
2
+ <dl>
3
+ <dt>Defined in:</dt>
4
+ <dd>
5
+ <%= object.file %><% if object.files.size > 1 %><span class="defines">,<br />
6
+ <%= object.files[1..-1].map {|f| f.first }.join(",<br /> ") %></div>
7
+ <% end %>
8
+ </dd>
9
+ </dl>
10
+ </div>
@@ -0,0 +1,6 @@
1
+ <% object.tags(:deprecated).each do |tag| %>
2
+ <div class="note deprecated">
3
+ <strong>DEPRECATED:</strong>
4
+ <%= htmlify_line deprecated.text %>
5
+ </div>
6
+ <% end %>
@@ -0,0 +1 @@
1
+ <h1>Puppet Plan: <%= object.name %></h1>
@@ -0,0 +1,6 @@
1
+ <% object.tags(:note).each do |tag| %>
2
+ <div class="note notetag">
3
+ <strong>Note:</strong>
4
+ <%= htmlify_line tag.text %>
5
+ </div>
6
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h2>Overview</h2>
2
+ <div class="docstring">
3
+ <div class="discussion">
4
+ <%= htmlify(object.docstring) %>
5
+ </div>
6
+ </div>
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Initializes the template.
4
+ # @return [void]
5
+ def init
6
+ sections :header, :box_info, :summary, :overview, :note, :todo, :deprecated, T('tags'), :source
7
+ end
8
+
9
+ # Renders the box_info section.
10
+ # @return [String] Returns the rendered section.
11
+ def box_info
12
+ erb(:box_info)
13
+ end
@@ -0,0 +1,12 @@
1
+ <div class="method_details_list">
2
+ <table class="source_code">
3
+ <tr>
4
+ <td>
5
+ <pre class="lines"><%= "\n\n\n" %><%= h format_lines(object) %></pre>
6
+ </td>
7
+ <td>
8
+ <pre class="code"><span class="info file"># File '<%= h object.file %>'<% if object.line %>, line <%= object.line %><% end %></span><%= "\n\n" %><%= html_syntax_highlight object.source %></pre>
9
+ </td>
10
+ </tr>
11
+ </table>
12
+ </div>
@@ -0,0 +1,4 @@
1
+ <% if object.docstring.has_tag?(:summary) %>
2
+ <h2>Summary</h2>
3
+ <%= object.docstring.tag(:summary).text %>
4
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <% object.tags(:todo).each do |tag| %>
2
+ <div class="note todo">
3
+ <strong>TODO:</strong>
4
+ <%= htmlify_line tag.text %>
5
+ </div>
6
+ <% end %>
@@ -0,0 +1,14 @@
1
+ <div class="box_info">
2
+ <dl>
3
+ <dt>Defined in:</dt>
4
+ <dd>
5
+ <%= object.file %><% if object.files.size > 1 %><span class="defines">,<br />
6
+ <%= object.files[1..-1].map {|f| f.first }.join(",<br /> ") %></div>
7
+ <% end %>
8
+ </dd>
9
+ </dl>
10
+ <dl>
11
+ <dt>Resource type:</dt>
12
+ <dd><%= linkify(Registry["puppet_types::#{object.type_name}"], object.type_name) %></dd>
13
+ </dl>
14
+ </div>
@@ -0,0 +1,17 @@
1
+ <% if @collection && !@collection.empty? %>
2
+ <div class="tags">
3
+ <p class="tag_title"><%= @title %></p>
4
+ <ul>
5
+
6
+ <% if @collection.is_a?(Hash) %>
7
+ <% @collection.each do |key, value| %>
8
+ <li><tt><%= key %> &mdash; <%= value %></tt></li>
9
+ <% end %>
10
+ <% elsif @collection.is_a?(Array) %>
11
+ <% @collection.each do |kvps| %>
12
+ <li><tt><%= kvps.map{|k,v| "#{k} &mdash; #{v}"}.join(', ') %></tt></li>
13
+ <% end %>
14
+ <% end %>
15
+ </ul>
16
+ </div>
17
+ <% end %>
@@ -0,0 +1,12 @@
1
+ <% if object.features && !object.features.empty? %>
2
+ <div class="tags">
3
+ <p class="tag_title">Features</p>
4
+ <ul>
5
+ <% object.features.each do |feature| %>
6
+ <li>
7
+ <span class="name"><%= feature %></span>
8
+ </li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
@@ -0,0 +1 @@
1
+ <h1>Provider: <%= object.name %></h1>
@@ -0,0 +1,6 @@
1
+ <h2>Overview</h2>
2
+ <div class="docstring">
3
+ <div class="discussion">
4
+ <%= htmlify(object.docstring) %>
5
+ </div>
6
+ </div>
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Initializes the template.
4
+ # @return [void]
5
+ def init
6
+ sections :header, :box_info, :summary, :overview, T('tags'), :features, :confines, :defaults, :commands
7
+ end
8
+
9
+ # Renders the confines section.
10
+ # @return [String] Returns the rendered section.
11
+ def confines
12
+ @title = 'Confines'
13
+ @collection = object.confines
14
+ erb(:collection)
15
+ end
16
+
17
+ # Renders the defaults section.
18
+ # @return [String] Returns the rendered section.
19
+ def defaults
20
+ @title = 'Default Provider For'
21
+ @collection = object.defaults
22
+ erb(:collection)
23
+ end
24
+
25
+ # Renders the commands section.
26
+ # @return [String] Returns the rendered section.
27
+ def commands
28
+ @title = 'Commands'
29
+ @collection = object.commands
30
+ erb(:collection)
31
+ end
@@ -0,0 +1,4 @@
1
+ <% if object.docstring.has_tag?(:summary) %>
2
+ <h2>Summary</h2>
3
+ <%= object.docstring.tag(:summary).text %>
4
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <div class="box_info">
2
+ <dl>
3
+ <dt>Defined in:</dt>
4
+ <dd>
5
+ <%= object.file %>,<br />
6
+ <%= object.file.gsub('json','rb') %><br/></div>
7
+ </dd>
8
+ </dl>
9
+ </div>
@@ -0,0 +1 @@
1
+ <h1>Puppet Task: <%= object.name %></h1>
@@ -0,0 +1,5 @@
1
+ <% if json['input_method'] || json['supports_noop'] %>
2
+ <div class="tags">
3
+ <p><strong>Supports noop?</strong> <%= json['supports_noop'] ? "true" : "false" %></p>
4
+ </div>
5
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h2>Overview</h2>
2
+ <div class="docstring">
3
+ <div class="discussion">
4
+ <%= description %>
5
+ </div>
6
+ </div>
@@ -0,0 +1,16 @@
1
+ <% if @parameters && !@parameters.empty? %>
2
+ <div class="tags">
3
+ <p class="tag_title"><%= @tag_title %></p>
4
+ <ul>
5
+ <% @parameters.each do |parameter, values| %>
6
+ <li>
7
+ <span class="name"><%= parameter %></span>
8
+ <span class="type">
9
+ <tt>(<%= values['type'] %>)</tt>
10
+ </span>
11
+ <% if values['description'] %> &mdash; <%= values['description'] %><% end %>
12
+ </li>
13
+ <% end %>
14
+ </ul>
15
+ </div>
16
+ <% end %>
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Initializes the template.
4
+ # @return [void]
5
+ def init
6
+ sections :header, :box_info, T('tags'), :overview, :input, :parameters
7
+ end
8
+
9
+ def json
10
+ object.statement.json
11
+ end
12
+
13
+ def description
14
+ json['description']
15
+ end
16
+
17
+ # Renders the parameters section.
18
+ # @return [String] Returns the rendered section.
19
+ def parameters
20
+ @parameters = json['parameters'] || []
21
+ @parameters.to_a.sort!
22
+ @tag_title = 'Parameters'
23
+ erb(:parameters)
24
+ end
@@ -0,0 +1,3 @@
1
+ <% if json['supports_noop'] %>
2
+ <strong>Supports noop?</strong> <%= json['supports_noop'] %>
3
+ <% end %>
@@ -0,0 +1,20 @@
1
+ <div class="box_info">
2
+ <dl>
3
+ <dt>Defined in:</dt>
4
+ <dd>
5
+ <%= object.file %><% if object.files.size > 1 %><span class="defines">,<br />
6
+ <%= object.files[1..-1].map {|f| f.first }.join(",<br /> ") %></div>
7
+ <% end %>
8
+ </dd>
9
+ </dl>
10
+ <% if @providers && !@providers.empty? %>
11
+ <dl>
12
+ <dt>Providers:</dt>
13
+ <dd>
14
+ <% @providers.each do |provider| %>
15
+ <%= linkify(provider, provider.name.to_s) %><br/>
16
+ <% end %>
17
+ </dd>
18
+ </dl>
19
+ <% end %>
20
+ </div>
@@ -0,0 +1,6 @@
1
+ <% object.tags(:deprecated).each do |tag| %>
2
+ <div class="note deprecated">
3
+ <strong>DEPRECATED:</strong>
4
+ <%= htmlify_line deprecated.text %>
5
+ </div>
6
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <% if object.features && !object.features.empty? %>
2
+ <div class="tags">
3
+ <p class="tag_title">Features</p>
4
+ <ul>
5
+ <% object.features.each do |feature| %>
6
+ <li>
7
+ <span class="name"><%= feature.name %></span>
8
+ <% unless feature.docstring.empty? %> &mdash; <%= htmlify_line(feature.docstring) %><% end %>
9
+ </li>
10
+ <% end %>
11
+ </ul>
12
+ </div>
13
+ <% end %>
@@ -0,0 +1 @@
1
+ <h1>Resource Type: <%= object.name %></h1>
@@ -0,0 +1,6 @@
1
+ <% object.tags(:note).each do |tag| %>
2
+ <div class="note notetag">
3
+ <strong>Note:</strong>
4
+ <%= htmlify_line tag.text %>
5
+ </div>
6
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h2>Overview</h2>
2
+ <div class="docstring">
3
+ <div class="discussion">
4
+ <%= htmlify(object.docstring) %>
5
+ </div>
6
+ </div>
@@ -0,0 +1,35 @@
1
+ <% if @parameters && !@parameters.empty? %>
2
+ <div class="tags">
3
+ <p class="tag_title"><%= @tag_title %></p>
4
+ <ul>
5
+ <% @parameters.each do |parameter| %>
6
+ <li>
7
+ <span class="name"><%= parameter.name + (parameter.isnamevar ? ' (namevar)' : '') %></span>
8
+ <% if parameter.default %>
9
+ <span class="default"> (defaults to: <em><%= parameter.default %></em>)</span>
10
+ <% end %>
11
+ <% unless parameter.docstring.empty? %>
12
+ <div class="docstring">
13
+ <div class="discussion">
14
+ <%= htmlify(parameter.docstring) %>
15
+ </div>
16
+ </div>
17
+ <% end %>
18
+ <% unless parameter.values.empty? %>
19
+ <div>
20
+ Supported values:
21
+ <ul>
22
+ <% parameter.values.each do |value| %>
23
+ <li>
24
+ <% other = parameter.aliases[value] %>
25
+ <%= value %><% if other %> (alias for: <em><%= other %></em>)<% end %>
26
+ </li>
27
+ <% end %>
28
+ </ul>
29
+ </div>
30
+ <% end %>
31
+ </li>
32
+ <% end %>
33
+ </ul>
34
+ </div>
35
+ <% end %>
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Initializes the template.
4
+ # @return [void]
5
+ def init
6
+ sections :header, :box_info, :summary, :overview, :note, :todo, :deprecated, T('tags'), :properties, :parameters, :features
7
+ end
8
+
9
+ # Renders the box_info section.
10
+ # @return [String] Returns the rendered section.
11
+ def box_info
12
+ @providers = OpenvoxStrings::Yard::CodeObjects::Providers.instance(object.name).children
13
+ erb(:box_info)
14
+ end
15
+
16
+ # Renders the properties section.
17
+ # @return [String] Returns the rendered section.
18
+ def properties
19
+ # Properties are the same thing as parameters (from the documentation standpoint),
20
+ # so reuse the same template but with a different title and data source.
21
+ #
22
+ # "checks" such as "creates" and "onlyif" are another type of property
23
+ @parameters = (object.properties || []) + (object.checks || [])
24
+ @parameters.sort_by!(&:name)
25
+ @tag_title = 'Properties'
26
+ erb(:parameters)
27
+ end
28
+
29
+ # Renders the parameters section.
30
+ # @return [String] Returns the rendered section.
31
+ def parameters
32
+ @parameters = object.parameters || []
33
+ @parameters.sort_by!(&:name)
34
+ @tag_title = 'Parameters'
35
+ erb(:parameters)
36
+ end
@@ -0,0 +1,4 @@
1
+ <% if object.docstring.has_tag?(:summary) %>
2
+ <h2>Summary</h2>
3
+ <%= object.docstring.tag(:summary).text %>
4
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <% object.tags(:todo).each do |tag| %>
2
+ <div class="note todo">
3
+ <strong>TODO:</strong>
4
+ <%= htmlify_line tag.text %>
5
+ </div>
6
+ <% end %>
@@ -0,0 +1,17 @@
1
+ <% if object.has_tag?(:enum) %>
2
+ <% object.parameters.each do |param, default| %>
3
+ <% tags = object.tags(:enum).select {|x| x.name.to_s == param.to_s.sub(/^\*+|:$/, '') } %>
4
+ <% next if tags.empty? %>
5
+ <p class="tag_title">Enum Options (<tt><%= param %></tt>):</p>
6
+ <ul class="option">
7
+ <% for tag in tags %>
8
+ <li>
9
+ <span class="name"><%= tag.pair.name %></span>
10
+ <% if tag.pair.text && tag.pair.text =~ /\S/ %>
11
+ &mdash; <%= htmlify_line(tag.pair.text) %>
12
+ <% end %>
13
+ </li>
14
+ <% end %>
15
+ </ul>
16
+ <% end %>
17
+ <% end %>
@@ -0,0 +1,12 @@
1
+ <% if object.has_tag?(:overload) && object.tags(:overload).any? {|o| !o.docstring.blank? } %>
2
+ <p class="tag_title">Signatures:</p>
3
+ <ul class="overload">
4
+ <% object.tags(:overload).each_with_index do |overload, index| %>
5
+ <% next if overload.docstring.blank? %>
6
+ <li class="overload_item">
7
+ <span class="signature"><%= "<strong>#{h(overload.signature)}</strong> &#x21d2; #{signature_types(overload, false)}" %></span>
8
+ <%= yieldall :object => overload %>
9
+ </li>
10
+ <% end %>
11
+ </ul>
12
+ <% end %>
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Called to return parameter tags.
4
+ # @return [Array<YARD::Tag>] Returns the parameter tags if the object should have parameters.
5
+ def param
6
+ tag(:param) if
7
+ %i[method puppet_class puppet_data_type puppet_defined_type puppet_function puppet_task puppet_plan].include?(object.type)
8
+ end
9
+
10
+ # Renders the overload section.
11
+ # @return [String] Returns the rendered section.
12
+ def overload
13
+ erb(object.type == :puppet_function ? :puppet_overload : :overload)
14
+ end
15
+
16
+ # Renders the enum section.
17
+ # @return [String] Returns the rendered section.
18
+ def enum
19
+ erb(:enum)
20
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'puppet/util'
4
+
5
+ # The module for various openvox-strings utility helpers.
6
+ module OpenvoxStrings::Yard::Util
7
+ # Trims indentation from trailing whitespace and removes ruby literal quotation
8
+ # syntax `%Q{}` and `%{q}` from parsed strings.
9
+ # @param [String] str The string to scrub.
10
+ # @return [String] A scrubbed string.
11
+ def self.scrub_string(str)
12
+ match = str.match(/^%[Qq]{(.*)}$/m)
13
+ return Puppet::Util::Docs.scrub(match[1]) if match
14
+
15
+ Puppet::Util::Docs.scrub(str)
16
+ end
17
+
18
+ # hacksville, usa
19
+ # YARD creates ids in the html with with the style of "label-Module+description", where the markdown
20
+ # we use in the README involves the GitHub-style, which is #module-description. This takes our GitHub-style
21
+ # links and converts them to reference the YARD-style ids.
22
+ # @see https://github.com/octokit/octokit.rb/blob/0f13944e8dbb0210d1e266addd3335c6dc9fe36a/yard/default/layout/html/setup.rb#L5-L14
23
+ # @param [String] data HTML document to convert
24
+ # @return [String] HTML document with links converted
25
+ def self.github_to_yard_links(data)
26
+ data.scan(/href="\#(.+)"/).each do |bad_link|
27
+ data = data.gsub("=\"##{bad_link.first}\"", "=\"#label-#{bad_link.first.capitalize.tr('-', '+')}\"")
28
+ end
29
+
30
+ data
31
+ end
32
+
33
+ # Converts a list of tags into an array of hashes.
34
+ # @param [Array] tags List of tags to be converted into an array of hashes.
35
+ # @return [Array] Returns an array of tag hashes.
36
+ def self.tags_to_hashes(tags)
37
+ # Skip over the API tags that are public
38
+ tags.select { |t| t.tag_name != 'api' || t.text != 'public' }.map do |t|
39
+ next t.to_hash if t.respond_to?(:to_hash)
40
+
41
+ tag = { tag_name: t.tag_name }
42
+ # grab nested information for @option and @enum tags
43
+ if %w[option enum].include?(tag[:tag_name])
44
+ tag[:opt_name] = t.pair.name
45
+ tag[:opt_text] = t.pair.text
46
+ tag[:opt_types] = t.pair.types if t.pair.types
47
+ tag[:parent] = t.name
48
+ end
49
+ tag[:text] = t.text if t.text
50
+ tag[:types] = t.types if t.types
51
+ tag[:name] = t.name if t.name
52
+ tag
53
+ end
54
+ end
55
+
56
+ # Converts a YARD::Docstring (or String) to a docstring hash for JSON output.
57
+ # @param [YARD::Docstring, String] docstring The docstring to convert to a hash.
58
+ # @param [Array] select_tags List of tags to select. Other tags will be filtered out.
59
+ # @return [Hash] Returns a hash representation of the given docstring.
60
+ def self.docstring_to_hash(docstring, select_tags = nil)
61
+ hash = {}
62
+ hash[:text] = docstring
63
+
64
+ if docstring.is_a? YARD::Docstring
65
+ tags = tags_to_hashes(docstring.tags.select { |t| select_tags.nil? || select_tags.include?(t.tag_name.to_sym) })
66
+
67
+ unless tags.empty?
68
+ hash[:tags] = tags
69
+ # .sort_by do |tag|
70
+ # sort_key = tag[:tag_name].dup
71
+ # sort_key << "-#{tag[:name]}" if tag[:name]
72
+ # sort_key << "-#{tag[:opt_name]}" if tag[:opt_name]
73
+ # sort_key
74
+ # end
75
+ end
76
+ end
77
+
78
+ hash
79
+ end
80
+
81
+ # Convert Puppet AST to text.
82
+ # @param [Puppet::Pops::Model::PopsObject] ast The Puppet AST to convert to text.
83
+ # @return [String] Returns a string of Puppet code.
84
+ def self.ast_to_text(ast)
85
+ ast.locator.extract_tree_text(ast)
86
+ end
87
+ end