puppet-strings 1.2.1 → 2.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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/CONTRIBUTING.md +3 -7
  4. data/JSON.md +126 -8
  5. data/README.md +16 -498
  6. data/lib/puppet-strings.rb +6 -0
  7. data/lib/puppet-strings/json.rb +2 -0
  8. data/lib/puppet-strings/markdown.rb +6 -1
  9. data/lib/puppet-strings/markdown/puppet_plan.rb +14 -0
  10. data/lib/puppet-strings/markdown/puppet_plans.rb +37 -0
  11. data/lib/puppet-strings/markdown/puppet_task.rb +24 -0
  12. data/lib/puppet-strings/markdown/puppet_tasks.rb +34 -0
  13. data/lib/puppet-strings/markdown/table_of_contents.rb +3 -1
  14. data/lib/puppet-strings/markdown/templates/classes_and_defines.erb +8 -5
  15. data/lib/puppet-strings/markdown/templates/function.erb +2 -3
  16. data/lib/puppet-strings/markdown/templates/puppet_task.erb +28 -0
  17. data/lib/puppet-strings/markdown/templates/resource_type.erb +9 -5
  18. data/lib/puppet-strings/markdown/templates/table_of_contents.erb +5 -0
  19. data/lib/puppet-strings/monkey_patches/display_object_command.rb +11 -0
  20. data/lib/puppet-strings/yard.rb +15 -1
  21. data/lib/puppet-strings/yard/code_objects.rb +2 -0
  22. data/lib/puppet-strings/yard/code_objects/plan.rb +56 -0
  23. data/lib/puppet-strings/yard/code_objects/task.rb +70 -0
  24. data/lib/puppet-strings/yard/handlers.rb +6 -0
  25. data/lib/puppet-strings/yard/handlers/json/base.rb +5 -0
  26. data/lib/puppet-strings/yard/handlers/json/task_handler.rb +31 -0
  27. data/lib/puppet-strings/yard/handlers/puppet/base.rb +1 -1
  28. data/lib/puppet-strings/yard/handlers/puppet/class_handler.rb +1 -1
  29. data/lib/puppet-strings/yard/handlers/puppet/defined_type_handler.rb +1 -1
  30. data/lib/puppet-strings/yard/handlers/puppet/function_handler.rb +1 -1
  31. data/lib/puppet-strings/yard/handlers/puppet/plan_handler.rb +27 -0
  32. data/lib/puppet-strings/yard/handlers/ruby/function_handler.rb +4 -1
  33. data/lib/puppet-strings/yard/handlers/ruby/rsapi_handler.rb +12 -2
  34. data/lib/puppet-strings/yard/parsers.rb +4 -0
  35. data/lib/puppet-strings/yard/parsers/json/parser.rb +33 -0
  36. data/lib/puppet-strings/yard/parsers/json/task_statement.rb +35 -0
  37. data/lib/puppet-strings/yard/parsers/puppet/parser.rb +11 -0
  38. data/lib/puppet-strings/yard/parsers/puppet/statement.rb +14 -0
  39. data/lib/puppet-strings/yard/templates/default/fulldoc/html/full_list_puppet_plan.erb +9 -0
  40. data/lib/puppet-strings/yard/templates/default/fulldoc/html/full_list_puppet_task.erb +9 -0
  41. data/lib/puppet-strings/yard/templates/default/fulldoc/html/setup.rb +18 -0
  42. data/lib/puppet-strings/yard/templates/default/layout/html/setup.rb +42 -2
  43. data/lib/puppet-strings/yard/templates/default/puppet_plan/html/box_info.erb +10 -0
  44. data/lib/puppet-strings/yard/templates/default/puppet_plan/html/header.erb +1 -0
  45. data/lib/puppet-strings/yard/templates/default/puppet_plan/html/overview.erb +6 -0
  46. data/lib/puppet-strings/yard/templates/default/puppet_plan/html/setup.rb +11 -0
  47. data/lib/puppet-strings/yard/templates/default/puppet_plan/html/source.erb +12 -0
  48. data/lib/puppet-strings/yard/templates/default/puppet_plan/html/summary.erb +4 -0
  49. data/lib/puppet-strings/yard/templates/default/puppet_task/html/box_info.erb +9 -0
  50. data/lib/puppet-strings/yard/templates/default/puppet_task/html/header.erb +1 -0
  51. data/lib/puppet-strings/yard/templates/default/puppet_task/html/input.erb +5 -0
  52. data/lib/puppet-strings/yard/templates/default/puppet_task/html/overview.erb +6 -0
  53. data/lib/puppet-strings/yard/templates/default/puppet_task/html/parameters.erb +16 -0
  54. data/lib/puppet-strings/yard/templates/default/puppet_task/html/setup.rb +22 -0
  55. data/lib/puppet-strings/yard/templates/default/puppet_task/html/supports_noop.erb +3 -0
  56. data/lib/puppet-strings/yard/templates/default/tags/setup.rb +3 -1
  57. data/lib/puppet-strings/yard/util.rb +14 -0
  58. data/spec/fixtures/unit/json/output.json +50 -0
  59. data/spec/fixtures/unit/json/output_with_plan.json +689 -0
  60. data/spec/fixtures/unit/markdown/output.md +63 -8
  61. data/spec/fixtures/unit/markdown/output_with_plan.md +472 -0
  62. data/spec/spec_helper.rb +5 -2
  63. data/spec/unit/puppet-strings/json_spec.rb +42 -2
  64. data/spec/unit/puppet-strings/markdown_spec.rb +41 -8
  65. data/spec/unit/puppet-strings/yard/code_objects/task_spec.rb +92 -0
  66. data/spec/unit/puppet-strings/yard/handlers/json/task_handler_spec.rb +124 -0
  67. data/spec/unit/puppet-strings/yard/handlers/puppet/class_handler_spec.rb +1 -1
  68. data/spec/unit/puppet-strings/yard/handlers/puppet/defined_type_handler_spec.rb +19 -12
  69. data/spec/unit/puppet-strings/yard/handlers/ruby/function_handler_spec.rb +33 -0
  70. data/spec/unit/puppet-strings/yard/handlers/ruby/rsapi_handler_spec.rb +8 -7
  71. data/spec/unit/puppet-strings/yard/parsers/json/parser_spec.rb +70 -0
  72. data/spec/unit/puppet-strings/yard/parsers/json/task_statement_spec.rb +56 -0
  73. data/spec/unit/puppet-strings/yard/parsers/puppet/parser_spec.rb +1 -1
  74. data/spec/unit/puppet-strings/yard/util_spec.rb +17 -0
  75. metadata +38 -5
  76. data/MAINTAINERS +0 -17
@@ -0,0 +1,70 @@
1
+ require 'puppet-strings/yard/code_objects/group'
2
+
3
+ # Implements the group for Puppet tasks.
4
+ class PuppetStrings::Yard::CodeObjects::Tasks < PuppetStrings::Yard::CodeObjects::Group
5
+ # Gets the singleton instance of the group.
6
+ # @return Returns the singleton instance of the group.
7
+ def self.instance
8
+ super(:puppet_tasks)
9
+ end
10
+
11
+ # Gets the display name of the group.
12
+ # @param [Boolean] prefix whether to show a prefix.
13
+ # @return [String] Returns the display name of the group.
14
+ def name(prefix = false)
15
+ 'Puppet Tasks'
16
+ end
17
+ end
18
+
19
+ # Implements the Puppet task code object.
20
+ class PuppetStrings::Yard::CodeObjects::Task < PuppetStrings::Yard::CodeObjects::Base
21
+ attr_reader :statement
22
+
23
+ # Initializes a JSON task code object.
24
+ # @param statement TaskStatement object
25
+ # @return [void]
26
+ def initialize(statement)
27
+ @name = statement.name
28
+ @statement = statement
29
+ super(PuppetStrings::Yard::CodeObjects::Tasks.instance, name)
30
+ end
31
+
32
+ # Gets the type of the code object.
33
+ # @return Returns the type of the code object.
34
+ def type
35
+ :puppet_task
36
+ end
37
+
38
+ # Gets the source of the code object.
39
+ # @return Returns the source of the code object.
40
+ def source
41
+ @statement.source
42
+ end
43
+
44
+ def parameters
45
+ parameters = []
46
+ statement.json['parameters'].each do |name,props|
47
+ parameters.push({ name: name.to_s,
48
+ tag_name: 'param',
49
+ text: props['description'] || "",
50
+ types: [props['type']] || "" })
51
+ end
52
+ parameters
53
+ end
54
+
55
+ # Converts the code object to a hash representation.
56
+ # @return [Hash] Returns a hash representation of the code object.
57
+ def to_hash
58
+ { name: name.to_s,
59
+ file: statement.file,
60
+ line: statement.line,
61
+ docstring: {
62
+ text: statement.docstring,
63
+ tags: parameters
64
+ },
65
+ source: statement.source,
66
+ supports_noop: statement.json['supports_noop'] || false,
67
+ input_method: statement.json['input_method']
68
+ }
69
+ end
70
+ end
@@ -8,10 +8,16 @@ module PuppetStrings::Yard::Handlers
8
8
  require 'puppet-strings/yard/handlers/ruby/function_handler'
9
9
  end
10
10
 
11
+ # The module for custom JSON YARD handlers.
12
+ module JSON
13
+ require 'puppet-strings/yard/handlers/json/task_handler'
14
+ end
15
+
11
16
  # The module for custom Puppet YARD handlers.
12
17
  module Puppet
13
18
  require 'puppet-strings/yard/handlers/puppet/class_handler'
14
19
  require 'puppet-strings/yard/handlers/puppet/defined_type_handler'
15
20
  require 'puppet-strings/yard/handlers/puppet/function_handler'
21
+ require 'puppet-strings/yard/handlers/puppet/plan_handler'
16
22
  end
17
23
  end
@@ -0,0 +1,5 @@
1
+ class PuppetStrings::Yard::Handlers::JSON::Base < YARD::Handlers::Base
2
+ def self.handles?(statement)
3
+ handlers.any? {|handler| statement.is_a?(handler)}
4
+ end
5
+ end
@@ -0,0 +1,31 @@
1
+ require 'puppet-strings/yard/handlers/json/base'
2
+ require 'puppet-strings/yard/parsers'
3
+ require 'puppet-strings/yard/parsers/json/parser'
4
+
5
+ class PuppetStrings::Yard::Handlers::JSON::TaskHandler < PuppetStrings::Yard::Handlers::JSON::Base
6
+ handles PuppetStrings::Yard::Parsers::JSON::TaskStatement
7
+ namespace_only
8
+
9
+ process do
10
+ object = PuppetStrings::Yard::CodeObjects::Task.new(statement)
11
+ register object
12
+
13
+ @kind = "Puppet Task #{object.name}."
14
+ @statement = statement
15
+
16
+ validate_description
17
+ validate_params
18
+ end
19
+
20
+ def validate_description
21
+ log.warn "Missing a description for #{@kind}." if @statement.docstring.empty?
22
+ end
23
+
24
+ def validate_params
25
+ unless @statement.parameters.empty?
26
+ @statement.parameters.each do |param, val|
27
+ log.warn "Missing description for param '#{param}' in #{@kind}" if val['description'].nil?
28
+ end
29
+ end
30
+ end
31
+ end
@@ -17,7 +17,7 @@ class PuppetStrings::Yard::Handlers::Puppet::Base < YARD::Handlers::Base
17
17
  tags = object.tags(:param)
18
18
  tags.each do |tag|
19
19
  next if statement.parameters.find { |p| tag.name == p.name }
20
- log.warn "The @param tag for parameter '#{tag.name}' has no matching parameter at #{statement.file}:#{statement.line}."
20
+ log.warn "The @param tag for parameter '#{tag.name}' has no matching parameter at #{statement.file}:#{statement.line}." unless tag.name == 'name' || tag.name == 'title'
21
21
  end
22
22
 
23
23
  # Assign the types for the parameter
@@ -13,7 +13,7 @@ class PuppetStrings::Yard::Handlers::Puppet::ClassHandler < PuppetStrings::Yard:
13
13
  register object
14
14
 
15
15
  # Log a warning if missing documentation
16
- log.warn "Missing documentation for Puppet class '#{object.name}' at #{statement.file}:#{statement.line}." if object.docstring.empty?
16
+ log.warn "Missing documentation for Puppet class '#{object.name}' at #{statement.file}:#{statement.line}." if object.docstring.empty? && object.tags.empty?
17
17
 
18
18
  # Set the parameter types
19
19
  set_parameter_types(object)
@@ -13,7 +13,7 @@ class PuppetStrings::Yard::Handlers::Puppet::DefinedTypeHandler < PuppetStrings:
13
13
  register object
14
14
 
15
15
  # Log a warning if missing documentation
16
- log.warn "Missing documentation for Puppet defined type '#{object.name}' at #{statement.file}:#{statement.line}." if object.docstring.empty?
16
+ log.warn "Missing documentation for Puppet defined type '#{object.name}' at #{statement.file}:#{statement.line}." if object.docstring.empty? && object.tags.empty?
17
17
 
18
18
  # Set the parameter types
19
19
  set_parameter_types(object)
@@ -15,7 +15,7 @@ class PuppetStrings::Yard::Handlers::Puppet::FunctionHandler < PuppetStrings::Ya
15
15
  register object
16
16
 
17
17
  # Log a warning if missing documentation
18
- log.warn "Missing documentation for Puppet function '#{object.name}' at #{statement.file}:#{statement.line}." if object.docstring.empty?
18
+ log.warn "Missing documentation for Puppet function '#{object.name}' at #{statement.file}:#{statement.line}." if object.docstring.empty? && object.tags.empty?
19
19
 
20
20
  # Set the parameter tag types
21
21
  set_parameter_types(object)
@@ -0,0 +1,27 @@
1
+ require 'puppet-strings/yard/handlers/helpers'
2
+ require 'puppet-strings/yard/handlers/puppet/base'
3
+ require 'puppet-strings/yard/parsers'
4
+ require 'puppet-strings/yard/code_objects'
5
+
6
+ # Implements the handler for Puppet classes.
7
+ class PuppetStrings::Yard::Handlers::Puppet::PlanHandler < PuppetStrings::Yard::Handlers::Puppet::Base
8
+ handles PuppetStrings::Yard::Parsers::Puppet::PlanStatement
9
+
10
+ process do
11
+ # Register the object
12
+ object = PuppetStrings::Yard::CodeObjects::Plan.new(statement)
13
+ register object
14
+
15
+ # Log a warning if missing documentation
16
+ log.warn "Missing documentation for Puppet plan '#{object.name}' at #{statement.file}:#{statement.line}." if object.docstring.empty? && object.tags.empty?
17
+
18
+ # Set the parameter types
19
+ set_parameter_types(object)
20
+
21
+ # Mark the class as public if it doesn't already have an api tag
22
+ object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
23
+
24
+ # Warn if a summary longer than 140 characters was provided
25
+ PuppetStrings::Yard::Handlers::Helpers.validate_summary_tag(object) if object.has_tag? :summary
26
+ end
27
+ end
@@ -77,7 +77,7 @@ class PuppetStrings::Yard::Handlers::Ruby::FunctionHandler < PuppetStrings::Yard
77
77
  end
78
78
 
79
79
  def add_tags(object)
80
- log.warn "Missing documentation for Puppet function '#{object.name}' at #{statement.file}:#{statement.line}." if object.docstring.empty?
80
+ log.warn "Missing documentation for Puppet function '#{object.name}' at #{statement.file}:#{statement.line}." if object.docstring.empty? && object.tags.empty?
81
81
  log.warn "The docstring for Puppet 4.x function '#{object.name}' contains @param tags near #{object.file}:#{object.line}: parameter documentation should be made on the dispatch call." unless object.tags(:param).empty?
82
82
  log.warn "The docstring for Puppet 4.x function '#{object.name}' contains @return tags near #{object.file}:#{object.line}: return value documentation should be made on the dispatch call." unless object.tags(:return).empty?
83
83
  log.warn "The docstring for Puppet 4.x function '#{object.name}' contains @overload tags near #{object.file}:#{object.line}: overload tags are automatically generated from the dispatch calls." unless object.tags(:overload).empty?
@@ -139,6 +139,9 @@ class PuppetStrings::Yard::Handlers::Ruby::FunctionHandler < PuppetStrings::Yard
139
139
  next unless DISPATCH_METHOD_NAMES.include?(method_name)
140
140
 
141
141
  if method_name == 'return_type'
142
+ # Add a return tag if missing
143
+ overload_tag.add_tag YARD::Tags::Tag.new(:return, '', 'Any') if overload_tag.tag(:return).nil?
144
+
142
145
  overload_tag.tag(:return).types = [node_as_string(child.parameters[0])]
143
146
  next
144
147
  end
@@ -24,7 +24,7 @@ class PuppetStrings::Yard::Handlers::Ruby::RsapiHandler < PuppetStrings::Yard::H
24
24
  object = PuppetStrings::Yard::CodeObjects::Type.new(schema['name'])
25
25
  register object
26
26
 
27
- docstring = schema['desc'] || ""
27
+ docstring = schema['docs']
28
28
  if docstring
29
29
  register_docstring(object, PuppetStrings::Yard::Util.scrub_string(docstring.to_s), nil)
30
30
  else
@@ -44,7 +44,7 @@ class PuppetStrings::Yard::Handlers::Ruby::RsapiHandler < PuppetStrings::Yard::H
44
44
  private
45
45
 
46
46
  def raise_parse_error(msg, location = statement)
47
- raise YARD::Parser::UndocumentableError, "#{msg} at #{location.file}:#{location.line}." if parameters.empty?
47
+ raise YARD::Parser::UndocumentableError, "#{msg} at #{location.file}:#{location.line}."
48
48
  end
49
49
 
50
50
  # check that the params of the register_type call are key/value pairs.
@@ -67,6 +67,8 @@ class PuppetStrings::Yard::Handlers::Ruby::RsapiHandler < PuppetStrings::Yard::H
67
67
  node.source.to_i
68
68
  when :hash
69
69
  hash_from_node(node)
70
+ when :array
71
+ array_from_node(node)
70
72
  when :var_ref
71
73
  var_ref_from_node(node)
72
74
  when :symbol, :symbol_literal, :label, :dyna_symbol, :string_literal
@@ -76,6 +78,14 @@ class PuppetStrings::Yard::Handlers::Ruby::RsapiHandler < PuppetStrings::Yard::H
76
78
  end
77
79
  end
78
80
 
81
+ def array_from_node(node)
82
+ return nil unless node
83
+
84
+ arr = node.children.collect do |assoc|
85
+ value_from_node(assoc.children[0])
86
+ end
87
+ end
88
+
79
89
  def hash_from_node(node)
80
90
  return nil unless node
81
91
 
@@ -1,5 +1,9 @@
1
1
  # The module for custom YARD parsers.
2
2
  module PuppetStrings::Yard::Parsers
3
+ # The module for custom YARD parsers for JSON.
4
+ module JSON
5
+ require 'puppet-strings/yard/parsers/json/parser'
6
+ end
3
7
  # The module for custom YARD parsers for the Puppet language.
4
8
  module Puppet
5
9
  require 'puppet-strings/yard/parsers/puppet/parser'
@@ -0,0 +1,33 @@
1
+ require 'puppet-strings/yard/parsers/json/task_statement'
2
+
3
+ class PuppetStrings::Yard::Parsers::JSON::Parser < YARD::Parser::Base
4
+ attr_reader :file, :source
5
+
6
+ # Initializes the parser.
7
+ # @param [String] source The source being parsed.
8
+ # @param [String] filename The file name of the file being parsed.
9
+ # @return [void]
10
+ def initialize(source, filename)
11
+ @file = filename
12
+ @source = source
13
+ @statements = []
14
+ end
15
+
16
+ def enumerator
17
+ @statements
18
+ end
19
+
20
+ # Parses the source
21
+ # @return [void]
22
+ def parse
23
+ begin
24
+ json = JSON.parse(source)
25
+ @statements.push(PuppetStrings::Yard::Parsers::JSON::TaskStatement.new(json, @source, @file))
26
+ rescue
27
+ log.error "Failed to parse #{@file}: "
28
+ @statements = []
29
+ end
30
+ @statements.freeze
31
+ self
32
+ end
33
+ end
@@ -0,0 +1,35 @@
1
+ module PuppetStrings::Yard::Parsers::JSON
2
+ # Represents the Puppet Task statement.
3
+ class TaskStatement
4
+ attr_reader :line, :comments, :comments_range, :json, :file, :source, :docstring
5
+
6
+ def initialize(json, source, file)
7
+ @file = file
8
+ @source = source
9
+ @json = json
10
+ @line = 0
11
+ @comments_range = nil
12
+ @docstring = YARD::Docstring.new(@json['description'])
13
+ end
14
+
15
+ def parameters
16
+ json['parameters'] || {}
17
+ end
18
+
19
+ def comments_hash_flag
20
+ false
21
+ end
22
+
23
+ def show
24
+ ""
25
+ end
26
+
27
+ def comments
28
+ docstring.all
29
+ end
30
+
31
+ def name
32
+ File.basename(@file).gsub('.json','') || ""
33
+ end
34
+ end
35
+ end
@@ -20,6 +20,11 @@ class PuppetStrings::Yard::Parsers::Puppet::Parser < YARD::Parser::Base
20
20
  # @return [void]
21
21
  def parse
22
22
  begin
23
+ Puppet[:tasks] = true if Puppet.settings.include?(:tasks)
24
+ if Puppet::Util::Package.versioncmp(Puppet.version, "5.0.0") < 0 && @file.to_s.match(/^plans\//)
25
+ log.warn "Skipping #{@file}: Puppet Plans require Puppet 5 or greater."
26
+ return
27
+ end
23
28
  @statements ||= (@visitor.visit(::Puppet::Pops::Parser::Parser.new.parse_string(source)) || []).compact
24
29
  rescue ::Puppet::ParseError => ex
25
30
  log.error "Failed to parse #{@file}: #{ex.message}"
@@ -64,6 +69,12 @@ class PuppetStrings::Yard::Parsers::Puppet::Parser < YARD::Parser::Base
64
69
  statement
65
70
  end
66
71
 
72
+ def transform_PlanDefinition(o)
73
+ statement = PuppetStrings::Yard::Parsers::Puppet::PlanStatement.new(o, @file)
74
+ statement.extract_docstring(@lines)
75
+ statement
76
+ end
77
+
67
78
  def transform_Object(o)
68
79
  # Ignore anything else (will be compacted out of the resulting array)
69
80
  end
@@ -151,4 +151,18 @@ module PuppetStrings::Yard::Parsers::Puppet
151
151
  end
152
152
  end
153
153
  end
154
+
155
+ # Implements the Puppet plan statement.
156
+ class PlanStatement < ParameterizedStatement
157
+ attr_reader :name
158
+
159
+ # Initializes the Puppet plan statement.
160
+ # @param [Puppet::Pops::Model::PlanDefinition] object The model object for the plan statement.
161
+ # @param [String] file The file containing the statement.
162
+ def initialize(object, file)
163
+ super(object, file)
164
+ @name = object.name
165
+ end
166
+ end
167
+
154
168
  end
@@ -0,0 +1,9 @@
1
+ <% even = false %>
2
+ <% @items.each do |item| %>
3
+ <li id="object_<%=item.path%>" class="<%= even ? 'even' : 'odd' %>">
4
+ <div class="item">
5
+ <%= linkify item, h(item.name(true)) %>
6
+ </div>
7
+ </li>
8
+ <% even = !even %>
9
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <% even = false %>
2
+ <% @items.each do |item| %>
3
+ <li id="object_<%=item.path%>" class="<%= even ? 'even' : 'odd' %>">
4
+ <div class="item">
5
+ <%= linkify item, h(item.name(true)) %>
6
+ </div>
7
+ </li>
8
+ <% even = !even %>
9
+ <% end %>
@@ -62,3 +62,21 @@ def generate_class_list
62
62
  @list_type = 'class'
63
63
  generate_list_contents
64
64
  end
65
+
66
+ # Generates the searchable Puppet Task list.
67
+ # @return [void]
68
+ def generate_puppet_task_list
69
+ @items = Registry.all(:puppet_task).sort_by {|t| t.name.to_s }
70
+ @list_title = 'Puppet Task List'
71
+ @list_type = 'puppet_task'
72
+ generate_list_contents
73
+ end
74
+
75
+ # Generates the searchable Puppet Plan list.
76
+ # @return [void]
77
+ def generate_puppet_plan_list
78
+ @items = Registry.all(:puppet_plan).sort_by {|t| t.name.to_s }
79
+ @list_title = 'Puppet Plan List'
80
+ @list_type = 'puppet_plan'
81
+ generate_list_contents
82
+ end
@@ -4,7 +4,7 @@ def init
4
4
  case object
5
5
  when '_index.html'
6
6
  @page_title = options.title
7
- sections :layout, [:index, [:listing, [:classes, :defined_types, :types, :providers, :functions, :files, :objects]]]
7
+ sections :layout, [:index, [:listing, [:classes, :defined_types, :types, :providers, :functions, :tasks, :plans, :files, :objects]]]
8
8
  else
9
9
  super
10
10
  end
@@ -46,11 +46,25 @@ def layout
46
46
  @nav_url = url_for_list('puppet_function')
47
47
  @page_title = "Puppet Function: #{object.name} (#{object.function_type})"
48
48
  @path = object.path
49
+ when PuppetStrings::Yard::CodeObjects::Task
50
+ @nav_url = url_for_list('puppet_task')
51
+ @page_title = "Puppet Task: #{object.name}"
52
+ @path = object.path
53
+ when PuppetStrings::Yard::CodeObjects::Plan
54
+ @nav_url = url_for_list('puppet_plan')
55
+ @page_title = "Puppet Plan: #{object.name}"
56
+ @path = object.path
49
57
  else
50
58
  @path = object.path
51
59
  end
52
60
 
53
- erb(:layout)
61
+ final_layout = erb(:layout)
62
+
63
+ if @file && @file.name == 'README'
64
+ PuppetStrings::Yard::Util.github_to_yard_links(final_layout)
65
+ end
66
+
67
+ final_layout
54
68
  end
55
69
 
56
70
  # Creates the dynamic menu lists.
@@ -82,6 +96,16 @@ def create_menu_lists
82
96
  title: 'Puppet Functions',
83
97
  search_title: 'Puppet Functions'
84
98
  },
99
+ {
100
+ type: 'puppet_task',
101
+ title: 'Puppet Tasks',
102
+ search_totle: 'Puppet Tasks'
103
+ },
104
+ {
105
+ type: 'puppet_plan',
106
+ title: 'Puppet Plans',
107
+ search_totle: 'Puppet Plans'
108
+ },
85
109
  {
86
110
  type: 'class',
87
111
  title: 'Ruby Classes',
@@ -163,6 +187,22 @@ def functions
163
187
  erb(:objects)
164
188
  end
165
189
 
190
+ # Renders the tasks section.
191
+ # @return [String] Returns the rendered section.
192
+ def tasks
193
+ @title = 'Puppet Task Listing A-Z'
194
+ @objects_by_letter = objects_by_letter(:puppet_task)
195
+ erb(:objects)
196
+ end
197
+
198
+ # Renders the plans section.
199
+ # @return [String] Returns the rendered section.
200
+ def plans
201
+ @title = 'Puppet Plan Listing A-Z'
202
+ @objects_by_letter = objects_by_letter(:puppet_plan)
203
+ erb(:objects)
204
+ end
205
+
166
206
  # Renders the objects section.
167
207
  # @return [String] Returns the rendered section.
168
208
  def objects