puppet-strings 2.5.0 → 2.9.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 (87) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +90 -4
  3. data/COMMITTERS.md +17 -17
  4. data/CONTRIBUTING.md +6 -6
  5. data/README.md +10 -10
  6. data/lib/puppet/application/strings.rb +2 -0
  7. data/lib/puppet/face/strings.rb +4 -1
  8. data/lib/puppet/feature/rgen.rb +2 -0
  9. data/lib/puppet/feature/yard.rb +2 -0
  10. data/lib/puppet-strings/describe.rb +2 -0
  11. data/lib/puppet-strings/json.rb +2 -0
  12. data/lib/puppet-strings/markdown/base.rb +11 -3
  13. data/lib/puppet-strings/markdown/data_type.rb +2 -0
  14. data/lib/puppet-strings/markdown/data_types.rb +3 -1
  15. data/lib/puppet-strings/markdown/defined_type.rb +2 -0
  16. data/lib/puppet-strings/markdown/defined_types.rb +3 -1
  17. data/lib/puppet-strings/markdown/function.rb +9 -7
  18. data/lib/puppet-strings/markdown/functions.rb +3 -1
  19. data/lib/puppet-strings/markdown/puppet_class.rb +2 -0
  20. data/lib/puppet-strings/markdown/puppet_classes.rb +3 -1
  21. data/lib/puppet-strings/markdown/puppet_plan.rb +2 -0
  22. data/lib/puppet-strings/markdown/puppet_plans.rb +3 -1
  23. data/lib/puppet-strings/markdown/puppet_task.rb +2 -0
  24. data/lib/puppet-strings/markdown/puppet_tasks.rb +3 -1
  25. data/lib/puppet-strings/markdown/resource_type.rb +2 -0
  26. data/lib/puppet-strings/markdown/resource_types.rb +3 -1
  27. data/lib/puppet-strings/markdown/table_of_contents.rb +3 -1
  28. data/lib/puppet-strings/markdown/templates/classes_and_defines.erb +7 -3
  29. data/lib/puppet-strings/markdown/templates/data_type.erb +12 -4
  30. data/lib/puppet-strings/markdown/templates/data_type_function.erb +1 -1
  31. data/lib/puppet-strings/markdown/templates/function.erb +1 -1
  32. data/lib/puppet-strings/markdown/templates/puppet_task.erb +1 -1
  33. data/lib/puppet-strings/markdown/templates/resource_type.erb +8 -2
  34. data/lib/puppet-strings/markdown.rb +11 -9
  35. data/lib/puppet-strings/monkey_patches/display_object_command.rb +2 -0
  36. data/lib/puppet-strings/tasks/generate.rb +2 -0
  37. data/lib/puppet-strings/tasks/gh_pages.rb +3 -0
  38. data/lib/puppet-strings/tasks/validate.rb +42 -0
  39. data/lib/puppet-strings/tasks.rb +3 -0
  40. data/lib/puppet-strings/version.rb +3 -1
  41. data/lib/puppet-strings/yard/code_objects/base.rb +2 -0
  42. data/lib/puppet-strings/yard/code_objects/class.rb +4 -2
  43. data/lib/puppet-strings/yard/code_objects/data_type.rb +4 -2
  44. data/lib/puppet-strings/yard/code_objects/data_type_alias.rb +2 -0
  45. data/lib/puppet-strings/yard/code_objects/defined_type.rb +4 -2
  46. data/lib/puppet-strings/yard/code_objects/function.rb +6 -3
  47. data/lib/puppet-strings/yard/code_objects/group.rb +3 -0
  48. data/lib/puppet-strings/yard/code_objects/plan.rb +4 -2
  49. data/lib/puppet-strings/yard/code_objects/provider.rb +6 -0
  50. data/lib/puppet-strings/yard/code_objects/task.rb +2 -0
  51. data/lib/puppet-strings/yard/code_objects/type.rb +6 -1
  52. data/lib/puppet-strings/yard/code_objects.rb +2 -0
  53. data/lib/puppet-strings/yard/handlers/helpers.rb +2 -0
  54. data/lib/puppet-strings/yard/handlers/json/base.rb +2 -0
  55. data/lib/puppet-strings/yard/handlers/json/task_handler.rb +2 -0
  56. data/lib/puppet-strings/yard/handlers/puppet/base.rb +3 -0
  57. data/lib/puppet-strings/yard/handlers/puppet/class_handler.rb +2 -0
  58. data/lib/puppet-strings/yard/handlers/puppet/data_type_alias_handler.rb +2 -0
  59. data/lib/puppet-strings/yard/handlers/puppet/defined_type_handler.rb +2 -0
  60. data/lib/puppet-strings/yard/handlers/puppet/function_handler.rb +3 -1
  61. data/lib/puppet-strings/yard/handlers/puppet/plan_handler.rb +2 -0
  62. data/lib/puppet-strings/yard/handlers/ruby/base.rb +5 -0
  63. data/lib/puppet-strings/yard/handlers/ruby/data_type_handler.rb +33 -17
  64. data/lib/puppet-strings/yard/handlers/ruby/function_handler.rb +9 -7
  65. data/lib/puppet-strings/yard/handlers/ruby/provider_handler.rb +13 -0
  66. data/lib/puppet-strings/yard/handlers/ruby/rsapi_handler.rb +4 -1
  67. data/lib/puppet-strings/yard/handlers/ruby/type_base.rb +14 -6
  68. data/lib/puppet-strings/yard/handlers/ruby/type_extras_handler.rb +15 -5
  69. data/lib/puppet-strings/yard/handlers/ruby/type_handler.rb +12 -1
  70. data/lib/puppet-strings/yard/handlers.rb +2 -0
  71. data/lib/puppet-strings/yard/parsers/json/parser.rb +2 -0
  72. data/lib/puppet-strings/yard/parsers/json/task_statement.rb +2 -0
  73. data/lib/puppet-strings/yard/parsers/puppet/parser.rb +18 -14
  74. data/lib/puppet-strings/yard/parsers/puppet/statement.rb +4 -0
  75. data/lib/puppet-strings/yard/parsers.rb +2 -0
  76. data/lib/puppet-strings/yard/tags/enum_tag.rb +2 -0
  77. data/lib/puppet-strings/yard/tags/factory.rb +2 -0
  78. data/lib/puppet-strings/yard/tags/overload_tag.rb +4 -1
  79. data/lib/puppet-strings/yard/tags/parameter_directive.rb +5 -4
  80. data/lib/puppet-strings/yard/tags/property_directive.rb +5 -4
  81. data/lib/puppet-strings/yard/tags/summary_tag.rb +2 -0
  82. data/lib/puppet-strings/yard/tags.rb +2 -0
  83. data/lib/puppet-strings/yard/templates/default/puppet_function/html/setup.rb +1 -1
  84. data/lib/puppet-strings/yard/util.rb +4 -1
  85. data/lib/puppet-strings/yard.rb +3 -0
  86. data/lib/puppet-strings.rb +2 -0
  87. metadata +9 -8
@@ -1,4 +1,4 @@
1
- ### `<%= name %>`
1
+ ### <a name="<%= link %>"></a>`<%= name %>`
2
2
 
3
3
  <% if text -%>
4
4
  <%= text %>
@@ -47,10 +47,14 @@
47
47
  <% if params -%>
48
48
  #### Parameters
49
49
 
50
- The following parameters are available in the `<%= name %>` <%= @type %>.
50
+ The following parameters are available in the `<%= name %>` <%= @type %>:
51
51
 
52
52
  <% params.each do |param| -%>
53
- ##### `<%= param[:name] %>`
53
+ * [`<%= param[:name] %>`](#<%= param[:name] %>)
54
+ <% end -%>
55
+
56
+ <% params.each do |param| -%>
57
+ ##### <a name="<%= param[:name] %>"></a>`<%= param[:name] %>`
54
58
 
55
59
  <% if param[:types] -%>
56
60
  Data type: `<%= param[:types].join(', ') -%>`
@@ -1,4 +1,4 @@
1
- ### `<%= name %>`
1
+ ### <a name="<%= link %>"></a>`<%= name %>`
2
2
 
3
3
  <% if text -%>
4
4
  <%= text %>
@@ -45,16 +45,24 @@
45
45
  <% end -%>
46
46
  <% end -%>
47
47
  <% if alias_of -%>
48
- Alias of `<%= alias_of %>`
48
+ Alias of
49
+
50
+ ```puppet
51
+ <%= alias_of %>
52
+ ```
49
53
 
50
54
  <% end -%>
51
55
  <% if params -%>
52
56
  #### Parameters
53
57
 
54
- The following parameters are available in the `<%= name %>` <%= @type %>.
58
+ The following parameters are available in the `<%= name %>` <%= @type %>:
59
+
60
+ <% params.each do |param| -%>
61
+ * [`<%= param[:name] %>`](#<%= param[:name] %>)
62
+ <% end -%>
55
63
 
56
64
  <% params.each do |param| -%>
57
- ##### `<%= param[:name] %>`
65
+ ##### <a name="<%= param[:name] %>"></a>`<%= param[:name] %>`
58
66
 
59
67
  <% if param[:types] -%>
60
68
  Data type: `<%= param[:types].join(', ') -%>`
@@ -1,4 +1,4 @@
1
- ### `<%= name %>`
1
+ ### <a name="<%= link %>"></a>`<%= name %>`
2
2
 
3
3
  #### `<%= signature %>`
4
4
 
@@ -1,4 +1,4 @@
1
- ### `<%= name %>`
1
+ ### <a name="<%= link %>"></a>`<%= name %>`
2
2
 
3
3
  Type: <%= type %>
4
4
 
@@ -1,4 +1,4 @@
1
- ### `<%= name %>`
1
+ ### <a name="<%= link %>"></a>`<%= name %>`
2
2
 
3
3
  <% if text -%>
4
4
  <%= text %>
@@ -1,4 +1,4 @@
1
- ### `<%= name %>`
1
+ ### <a name="<%= link %>"></a>`<%= name %>`
2
2
 
3
3
  <% if text -%>
4
4
  <%= text %>
@@ -98,7 +98,11 @@ Default value: `<%= prop[:default] %>`
98
98
  The following parameters are available in the `<%= name %>` <%= @type %>.
99
99
 
100
100
  <% parameters.each do |param| -%>
101
- ##### `<%= param[:name] %>`
101
+ * [`<%= param[:name] %>`](#<%= param[:name] %>)
102
+ <% end -%>
103
+
104
+ <% parameters.each do |param| -%>
105
+ ##### <a name="<%= param[:name] %>"></a>`<%= param[:name] %>`
102
106
 
103
107
  <% if param[:values] -%>
104
108
  Valid values: `<%= param[:values].map { |value| value_string(value) }.join('`, `') %>`
@@ -116,7 +120,9 @@ Aliases: `<%= param[:aliases].to_s.delete('{').delete('}') %>`
116
120
  Data type: `<%= param[:data_type] %>`<%= "\n_\*this data type contains a regex that may not be accurately reflected in generated documentation_" if regex_in_data_type?(param[:data_type]) %>
117
121
 
118
122
  <% end -%>
123
+ <% if param[:description] -%>
119
124
  <%= word_wrap(param[:description]) %>
125
+ <% end -%>
120
126
 
121
127
  <% if options_for_param(param[:name]) -%>
122
128
  Options:
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/json'
2
4
 
3
5
  # module for parsing Yard Registries and generating markdown
@@ -15,15 +17,15 @@ module PuppetStrings::Markdown
15
17
  # @return [String] markdown doc
16
18
  def self.generate
17
19
  final = "# Reference\n\n"
18
- final << "<!-- DO NOT EDIT: This document was generated by Puppet Strings -->\n\n"
19
- final << PuppetStrings::Markdown::TableOfContents.render
20
- final << PuppetStrings::Markdown::PuppetClasses.render
21
- final << PuppetStrings::Markdown::DefinedTypes.render
22
- final << PuppetStrings::Markdown::ResourceTypes.render
23
- final << PuppetStrings::Markdown::Functions.render
24
- final << PuppetStrings::Markdown::DataTypes.render
25
- final << PuppetStrings::Markdown::PuppetTasks.render
26
- final << PuppetStrings::Markdown::PuppetPlans.render
20
+ final += "<!-- DO NOT EDIT: This document was generated by Puppet Strings -->\n\n"
21
+ final += PuppetStrings::Markdown::TableOfContents.render
22
+ final += PuppetStrings::Markdown::PuppetClasses.render
23
+ final += PuppetStrings::Markdown::DefinedTypes.render
24
+ final += PuppetStrings::Markdown::ResourceTypes.render
25
+ final += PuppetStrings::Markdown::Functions.render
26
+ final += PuppetStrings::Markdown::DataTypes.render
27
+ final += PuppetStrings::Markdown::PuppetTasks.render
28
+ final += PuppetStrings::Markdown::PuppetPlans.render
27
29
 
28
30
  final
29
31
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Monkey patch URL decoding in object displays. Usually :: is interpreted as a
2
4
  # namespace, but this is disabled in our base object, and so instead gets
3
5
  # URL-encoded.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings'
2
4
 
3
5
  # Implements the strings:generate task.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/tasks'
2
4
 
3
5
  namespace :strings do
@@ -5,6 +7,7 @@ namespace :strings do
5
7
  task :checkout do
6
8
  if Dir.exist?('doc')
7
9
  fail "The 'doc' directory (#{File.expand_path('doc')}) is not a Git repository! Remove it and run the Rake task again." unless Dir.exist?('doc/.git')
10
+
8
11
  Dir.chdir('doc') do
9
12
  system 'git checkout gh-pages'
10
13
  system 'git pull --rebase origin gh-pages'
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'puppet-strings'
4
+ require 'tempfile'
5
+
6
+ namespace :strings do
7
+ namespace :validate do
8
+ desc 'Validate the reference is up to date'
9
+ task :reference, [:patterns, :debug, :backtrace] do |t, args|
10
+ filename = 'REFERENCE.md'
11
+
12
+ unless File.exist?(filename)
13
+ STDERR.puts "#{filename} does not exist"
14
+ exit 1
15
+ end
16
+
17
+ patterns = args[:patterns]
18
+ patterns = patterns.split if patterns
19
+ patterns ||= PuppetStrings::DEFAULT_SEARCH_PATTERNS
20
+
21
+ generated = Tempfile.create do |file|
22
+ options = {
23
+ debug: args[:debug] == 'true',
24
+ backtrace: args[:backtrace] == 'true',
25
+ json: false,
26
+ markdown: true,
27
+ path: file,
28
+ }
29
+ PuppetStrings.generate(patterns, options)
30
+
31
+ file.read
32
+ end
33
+
34
+ existing = File.read(filename)
35
+
36
+ if generated != existing
37
+ STDERR.puts "#{filename} is outdated"
38
+ exit 1
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rake'
2
4
  require 'rake/tasklib'
3
5
 
@@ -6,5 +8,6 @@ module PuppetStrings
6
8
  module Tasks
7
9
  require 'puppet-strings/tasks/generate.rb'
8
10
  require 'puppet-strings/tasks/gh_pages.rb'
11
+ require 'puppet-strings/tasks/validate.rb'
9
12
  end
10
13
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PuppetStrings
2
- VERSION = '2.5.0'.freeze
4
+ VERSION = '2.9.0'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Implements the base code object.
2
4
  class PuppetStrings::Yard::CodeObjects::Base < YARD::CodeObjects::NamespaceObject
3
5
  # Allocates a new code object.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/code_objects/group'
2
4
 
3
5
  # Implements the group for Puppet classes.
@@ -52,8 +54,8 @@ class PuppetStrings::Yard::CodeObjects::Class < PuppetStrings::Yard::CodeObjects
52
54
  hash[:inherits] = statement.parent_class if statement.parent_class
53
55
  hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
54
56
  defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
55
- hash[:defaults] = defaults unless defaults.empty?
56
- hash[:source] = source unless source && source.empty?
57
+ hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
58
+ hash[:source] = source unless source.nil? || source.empty?
57
59
  hash
58
60
  end
59
61
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/code_objects/group'
2
4
  require 'puppet-strings/yard/util'
3
5
 
@@ -86,8 +88,8 @@ class PuppetStrings::Yard::CodeObjects::DataType < PuppetStrings::Yard::CodeObje
86
88
  hash[:file] = file
87
89
  hash[:line] = line
88
90
  hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring, %i[param option enum return example])
89
- hash[:defaults] = defaults unless defaults.empty?
90
- hash[:source] = source unless source && source.empty?
91
+ hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
92
+ hash[:source] = source unless source.nil? || source.empty?
91
93
  hash[:functions] = functions.map do |func|
92
94
  {
93
95
  name: func.name,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/code_objects/group'
2
4
  require 'puppet-strings/yard/util'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/code_objects/group'
2
4
 
3
5
  # Implements the group for Puppet defined types.
@@ -51,8 +53,8 @@ class PuppetStrings::Yard::CodeObjects::DefinedType < PuppetStrings::Yard::CodeO
51
53
  hash[:line] = line
52
54
  hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
53
55
  defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
54
- hash[:defaults] = defaults unless defaults.empty?
55
- hash[:source] = source unless source && source.empty?
56
+ hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
57
+ hash[:source] = source unless source.nil? || source.empty?
56
58
  hash
57
59
  end
58
60
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/code_objects/group'
2
4
 
3
5
  # Implements the group for Puppet functions.
@@ -61,11 +63,12 @@ class PuppetStrings::Yard::CodeObjects::Function < PuppetStrings::Yard::CodeObje
61
63
  # @return [String] Returns the Puppet signature of the function.
62
64
  def signature
63
65
  return '' if self.has_tag? :overload
66
+
64
67
  tags = self.tags(:param)
65
68
  args = @parameters.map do |parameter|
66
69
  name, default = parameter
67
70
  tag = tags.find { |t| t.name == name } if tags
68
- type = tag && tag.types ? "#{tag.type} " : 'Any '
71
+ type = tag&.types ? "#{tag.type} " : 'Any '
69
72
  prefix = "#{name[0]}" if name.start_with?('*', '&')
70
73
  name = name[1..-1] if prefix
71
74
  default = " = #{default}" if default
@@ -96,8 +99,8 @@ class PuppetStrings::Yard::CodeObjects::Function < PuppetStrings::Yard::CodeObje
96
99
 
97
100
  hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
98
101
  defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
99
- hash[:defaults] = defaults unless defaults.empty?
100
- hash[:source] = source unless source && source.empty?
102
+ hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
103
+ hash[:source] = source unless source.nil? || source.empty?
101
104
  hash
102
105
  end
103
106
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/code_objects/base'
2
4
 
3
5
  # Implements the base class for "groups".
@@ -10,6 +12,7 @@ class PuppetStrings::Yard::CodeObjects::Group < PuppetStrings::Yard::CodeObjects
10
12
  def self.instance(key)
11
13
  instance = P(:root, key)
12
14
  return instance unless instance.is_a?(YARD::CodeObjects::Proxy)
15
+
13
16
  instance = self.new(:root, key)
14
17
  instance.visibility = :hidden
15
18
  P(:root).children << instance
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/code_objects/group'
2
4
 
3
5
  class PuppetStrings::Yard::CodeObjects::Plans < PuppetStrings::Yard::CodeObjects::Group
@@ -49,8 +51,8 @@ class PuppetStrings::Yard::CodeObjects::Plan < PuppetStrings::Yard::CodeObjects:
49
51
  hash[:line] = line
50
52
  hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
51
53
  defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
52
- hash[:defaults] = defaults unless defaults.empty?
53
- hash[:source] = source unless source && source.empty?
54
+ hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
55
+ hash[:source] = source unless source.nil? || source.empty?
54
56
  hash
55
57
  end
56
58
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/code_objects/group'
2
4
 
3
5
  # Implements the group for Puppet providers.
@@ -42,6 +44,7 @@ class PuppetStrings::Yard::CodeObjects::Provider < PuppetStrings::Yard::CodeObje
42
44
  # @return [void]
43
45
  def add_confine(key, value)
44
46
  return unless key && value
47
+
45
48
  @confines ||= {}
46
49
  @confines[key] = value
47
50
  end
@@ -51,6 +54,7 @@ class PuppetStrings::Yard::CodeObjects::Provider < PuppetStrings::Yard::CodeObje
51
54
  # @return [void]
52
55
  def add_feature(feature)
53
56
  return unless feature
57
+
54
58
  @features ||= []
55
59
  @features << feature
56
60
  end
@@ -60,6 +64,7 @@ class PuppetStrings::Yard::CodeObjects::Provider < PuppetStrings::Yard::CodeObje
60
64
  # @return [void]
61
65
  def add_default(constraints)
62
66
  return unless constraints
67
+
63
68
  @defaults ||= []
64
69
  @defaults << constraints
65
70
  end
@@ -70,6 +75,7 @@ class PuppetStrings::Yard::CodeObjects::Provider < PuppetStrings::Yard::CodeObje
70
75
  # @return [void]
71
76
  def add_command(key, value)
72
77
  return unless key && value
78
+
73
79
  @commands ||= {}
74
80
  @commands[key] = value
75
81
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/code_objects/group'
2
4
 
3
5
  # Implements the group for Puppet tasks.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/code_objects/group'
2
4
  require 'puppet-strings/yard/util'
3
5
 
@@ -146,11 +148,12 @@ class PuppetStrings::Yard::CodeObjects::Type < PuppetStrings::Yard::CodeObjects:
146
148
  end
147
149
 
148
150
  def parameters
151
+ @parameters ||= [] # guard against not filled parameters
149
152
  # just return params if there are no providers
150
153
  return @parameters if providers.empty?
151
154
 
152
155
  # return existing params if we have already added provider
153
- return @parameters if @parameters.any? { |p| p.name == 'provider' }
156
+ return @parameters if @parameters&.any? { |p| p.name == 'provider' }
154
157
 
155
158
  provider_param = Parameter.new(
156
159
  'provider',
@@ -158,6 +161,7 @@ class PuppetStrings::Yard::CodeObjects::Type < PuppetStrings::Yard::CodeObjects:
158
161
  "to specify this --- Puppet will usually discover the appropriate provider for your platform."
159
162
  )
160
163
 
164
+ @parameters ||= []
161
165
  @parameters << provider_param
162
166
  end
163
167
 
@@ -167,6 +171,7 @@ class PuppetStrings::Yard::CodeObjects::Type < PuppetStrings::Yard::CodeObjects:
167
171
  def providers
168
172
  providers = YARD::Registry.all("puppet_providers_#{name}".intern)
169
173
  return providers if providers.empty?
174
+
170
175
  providers.first.children
171
176
  end
172
177
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # The module for custom YARD code objects.
2
4
  module PuppetStrings::Yard::CodeObjects
3
5
  require 'puppet-strings/yard/code_objects/class'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PuppetStrings::Yard::Handlers::Helpers
2
4
  # Logs a warning if a summary tag has more than 140 characters
3
5
  def self.validate_summary_tag(object)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PuppetStrings::Yard::Handlers::JSON::Base < YARD::Handlers::Base
2
4
  def self.handles?(statement)
3
5
  handlers.any? {|handler| statement.is_a?(handler)}
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/handlers/json/base'
2
4
  require 'puppet-strings/yard/parsers'
3
5
  require 'puppet-strings/yard/parsers/json/parser'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Implements the base handler for Puppet language handlers.
2
4
  class PuppetStrings::Yard::Handlers::Puppet::Base < YARD::Handlers::Base
3
5
  # Determine sif the handler handles the given statement.
@@ -17,6 +19,7 @@ class PuppetStrings::Yard::Handlers::Puppet::Base < YARD::Handlers::Base
17
19
  tags = object.tags(:param)
18
20
  tags.each do |tag|
19
21
  next if statement.parameters.find { |p| tag.name == p.name }
22
+
20
23
  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
24
  end
22
25
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/handlers/helpers'
2
4
  require 'puppet-strings/yard/handlers/puppet/base'
3
5
  require 'puppet-strings/yard/parsers'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/handlers/helpers'
2
4
  require 'puppet-strings/yard/handlers/puppet/base'
3
5
  require 'puppet-strings/yard/parsers'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/handlers/helpers'
2
4
  require 'puppet-strings/yard/handlers/puppet/base'
3
5
  require 'puppet-strings/yard/parsers'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/handlers/helpers'
2
4
  require 'puppet-strings/yard/handlers/puppet/base'
3
5
  require 'puppet-strings/yard/parsers'
@@ -37,7 +39,7 @@ class PuppetStrings::Yard::Handlers::Puppet::FunctionHandler < PuppetStrings::Ya
37
39
  def add_return_tag(object, type=nil)
38
40
  tag = object.tag(:return)
39
41
  if tag
40
- if (type && tag.types.first) && (type != tag.types.first)
42
+ if (type && tag.types && tag.types.first) && (type != tag.types.first)
41
43
  log.warn "Documented return type does not match return type in function definition near #{statement.file}:#{statement.line}."
42
44
  end
43
45
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'puppet-strings/yard/handlers/helpers'
2
4
  require 'puppet-strings/yard/handlers/puppet/base'
3
5
  require 'puppet-strings/yard/parsers'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ripper'
2
4
 
3
5
  # Implements the base handler for Ruby language handlers.
@@ -12,6 +14,7 @@ class PuppetStrings::Yard::Handlers::Ruby::Base < YARD::Handlers::Ruby::Base
12
14
  # @return [String] Returns a string representation of the node or nil if a string representation was not possible.
13
15
  def node_as_string(node)
14
16
  return nil unless node
17
+
15
18
  case node.type
16
19
  when :symbol, :symbol_literal
17
20
  node.source[1..-1]
@@ -42,8 +45,10 @@ class PuppetStrings::Yard::Handlers::Ruby::Base < YARD::Handlers::Ruby::Base
42
45
  def get_name(statementobject, statementtype)
43
46
  parameters = statementobject.parameters(false)
44
47
  raise YARD::Parser::UndocumentableError, "Expected at least one parameter to #{statementtype} at #{statementobject.file}:#{statementobject.line}." if parameters.empty?
48
+
45
49
  name = node_as_string(parameters.first)
46
50
  raise YARD::Parser::UndocumentableError, "Expected a symbol or string literal for first parameter but found '#{parameters.first.type}' at #{statement.file}:#{statement.line}." unless name
51
+
47
52
  name
48
53
  end
49
54
  end