puppet-strings 2.9.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +257 -237
  3. data/README.md +52 -65
  4. data/lib/puppet/face/strings.rb +30 -50
  5. data/lib/puppet/feature/rgen.rb +1 -1
  6. data/lib/puppet/feature/yard.rb +1 -1
  7. data/lib/puppet-strings/describe.rb +18 -18
  8. data/lib/puppet-strings/markdown/base.rb +63 -28
  9. data/lib/puppet-strings/markdown/data_type.rb +4 -0
  10. data/lib/puppet-strings/markdown/defined_type.rb +4 -0
  11. data/lib/puppet-strings/markdown/function.rb +13 -8
  12. data/lib/puppet-strings/markdown/helpers.rb +21 -0
  13. data/lib/puppet-strings/markdown/puppet_class.rb +4 -0
  14. data/lib/puppet-strings/markdown/puppet_plan.rb +4 -0
  15. data/lib/puppet-strings/markdown/puppet_task.rb +4 -1
  16. data/lib/puppet-strings/markdown/resource_type.rb +13 -3
  17. data/lib/puppet-strings/markdown/templates/classes_and_defines.erb +4 -4
  18. data/lib/puppet-strings/markdown/templates/data_type.erb +5 -9
  19. data/lib/puppet-strings/markdown/templates/data_type_function.erb +1 -1
  20. data/lib/puppet-strings/markdown/templates/function.erb +1 -1
  21. data/lib/puppet-strings/markdown/templates/puppet_task.erb +1 -1
  22. data/lib/puppet-strings/markdown/templates/resource_type.erb +6 -6
  23. data/lib/puppet-strings/markdown/templates/table_of_contents.erb +8 -8
  24. data/lib/puppet-strings/markdown.rb +62 -20
  25. data/lib/puppet-strings/monkey_patches/display_object_command.rb +4 -1
  26. data/lib/puppet-strings/tasks/generate.rb +8 -10
  27. data/lib/puppet-strings/tasks/gh_pages.rb +6 -5
  28. data/lib/puppet-strings/tasks/validate.rb +1 -1
  29. data/lib/puppet-strings/tasks.rb +5 -7
  30. data/lib/puppet-strings/version.rb +1 -1
  31. data/lib/puppet-strings/yard/code_objects/class.rb +2 -2
  32. data/lib/puppet-strings/yard/code_objects/data_type.rb +4 -4
  33. data/lib/puppet-strings/yard/code_objects/data_type_alias.rb +1 -1
  34. data/lib/puppet-strings/yard/code_objects/defined_type.rb +2 -2
  35. data/lib/puppet-strings/yard/code_objects/function.rb +11 -11
  36. data/lib/puppet-strings/yard/code_objects/group.rb +1 -1
  37. data/lib/puppet-strings/yard/code_objects/plan.rb +4 -2
  38. data/lib/puppet-strings/yard/code_objects/provider.rb +2 -2
  39. data/lib/puppet-strings/yard/code_objects/task.rb +6 -7
  40. data/lib/puppet-strings/yard/code_objects/type.rb +6 -6
  41. data/lib/puppet-strings/yard/handlers/helpers.rb +3 -4
  42. data/lib/puppet-strings/yard/handlers/json/base.rb +2 -1
  43. data/lib/puppet-strings/yard/handlers/json/task_handler.rb +4 -4
  44. data/lib/puppet-strings/yard/handlers/puppet/base.rb +7 -2
  45. data/lib/puppet-strings/yard/handlers/puppet/function_handler.rb +3 -2
  46. data/lib/puppet-strings/yard/handlers/ruby/base.rb +3 -2
  47. data/lib/puppet-strings/yard/handlers/ruby/data_type_handler.rb +19 -16
  48. data/lib/puppet-strings/yard/handlers/ruby/function_handler.rb +70 -50
  49. data/lib/puppet-strings/yard/handlers/ruby/provider_handler.rb +2 -1
  50. data/lib/puppet-strings/yard/handlers/ruby/rsapi_handler.rb +12 -9
  51. data/lib/puppet-strings/yard/handlers/ruby/type_base.rb +27 -27
  52. data/lib/puppet-strings/yard/handlers/ruby/type_extras_handler.rb +2 -3
  53. data/lib/puppet-strings/yard/handlers/ruby/type_handler.rb +2 -1
  54. data/lib/puppet-strings/yard/parsers/json/parser.rb +3 -2
  55. data/lib/puppet-strings/yard/parsers/json/task_statement.rb +3 -3
  56. data/lib/puppet-strings/yard/parsers/puppet/parser.rb +7 -7
  57. data/lib/puppet-strings/yard/parsers/puppet/statement.rb +16 -23
  58. data/lib/puppet-strings/yard/parsers.rb +1 -0
  59. data/lib/puppet-strings/yard/tags/enum_tag.rb +1 -2
  60. data/lib/puppet-strings/yard/tags/factory.rb +1 -1
  61. data/lib/puppet-strings/yard/tags/overload_tag.rb +7 -7
  62. data/lib/puppet-strings/yard/tags/parameter_directive.rb +2 -2
  63. data/lib/puppet-strings/yard/tags/property_directive.rb +2 -2
  64. data/lib/puppet-strings/yard/tags/summary_tag.rb +1 -2
  65. data/lib/puppet-strings/yard/util.rb +11 -4
  66. data/lib/puppet-strings/yard.rb +6 -6
  67. data/lib/puppet-strings.rb +7 -13
  68. metadata +13 -20
  69. data/lib/puppet-strings/markdown/data_types.rb +0 -43
  70. data/lib/puppet-strings/markdown/defined_types.rb +0 -39
  71. data/lib/puppet-strings/markdown/functions.rb +0 -40
  72. data/lib/puppet-strings/markdown/puppet_classes.rb +0 -39
  73. data/lib/puppet-strings/markdown/puppet_plans.rb +0 -39
  74. data/lib/puppet-strings/markdown/puppet_tasks.rb +0 -36
  75. data/lib/puppet-strings/markdown/resource_types.rb +0 -39
  76. data/lib/puppet-strings/markdown/table_of_contents.rb +0 -26
@@ -13,7 +13,7 @@ class PuppetStrings::Yard::CodeObjects::DefinedTypes < PuppetStrings::Yard::Code
13
13
  # Gets the display name of the group.
14
14
  # @param [Boolean] prefix whether to show a prefix. Ignored for Puppet group namespaces.
15
15
  # @return [String] Returns the display name of the group.
16
- def name(prefix = false)
16
+ def name(_prefix = false)
17
17
  'Defined Types'
18
18
  end
19
19
  end
@@ -52,7 +52,7 @@ class PuppetStrings::Yard::CodeObjects::DefinedType < PuppetStrings::Yard::CodeO
52
52
  hash[:file] = file
53
53
  hash[:line] = line
54
54
  hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
55
- defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
55
+ defaults = Hash[*parameters.reject { |p| p[1].nil? }.flatten]
56
56
  hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
57
57
  hash[:source] = source unless source.nil? || source.empty?
58
58
  hash
@@ -8,13 +8,13 @@ class PuppetStrings::Yard::CodeObjects::Functions < PuppetStrings::Yard::CodeObj
8
8
  # @param [Symbol] type The function type to get the group for.
9
9
  # @return Returns the singleton instance of the group.
10
10
  def self.instance(type)
11
- super("puppet_functions_#{type}".intern)
11
+ super("puppet_functions_#{type}".to_sym)
12
12
  end
13
13
 
14
14
  # Gets the display name of the group.
15
15
  # @param [Boolean] prefix whether to show a prefix. Ignored for Puppet group namespaces.
16
16
  # @return [String] Returns the display name of the group.
17
- def name(prefix = false)
17
+ def name(_prefix = false)
18
18
  'Puppet Functions'
19
19
  end
20
20
  end
@@ -62,18 +62,18 @@ class PuppetStrings::Yard::CodeObjects::Function < PuppetStrings::Yard::CodeObje
62
62
  # Gets the Puppet signature of the function (single overload only).
63
63
  # @return [String] Returns the Puppet signature of the function.
64
64
  def signature
65
- return '' if self.has_tag? :overload
65
+ return '' if has_tag? :overload
66
66
 
67
67
  tags = self.tags(:param)
68
- args = @parameters.map do |parameter|
68
+ args = @parameters.map { |parameter|
69
69
  name, default = parameter
70
70
  tag = tags.find { |t| t.name == name } if tags
71
71
  type = tag&.types ? "#{tag.type} " : 'Any '
72
- prefix = "#{name[0]}" if name.start_with?('*', '&')
72
+ prefix = (name[0]).to_s if name.start_with?('*', '&')
73
73
  name = name[1..-1] if prefix
74
74
  default = " = #{default}" if default
75
75
  "#{type}#{prefix}$#{name}#{default}"
76
- end.join(', ')
76
+ }.join(', ')
77
77
  @name.to_s + '(' + args + ')'
78
78
  end
79
79
 
@@ -88,17 +88,17 @@ class PuppetStrings::Yard::CodeObjects::Function < PuppetStrings::Yard::CodeObje
88
88
  hash[:type] = @function_type.to_s
89
89
  hash[:signatures] = []
90
90
 
91
- if self.has_tag? :overload
91
+ if has_tag? :overload
92
92
  # loop over overloads and append onto the signatures array
93
- self.tags(:overload).each do |o|
94
- hash[:signatures] << { :signature => o.signature, :docstring => PuppetStrings::Yard::Util.docstring_to_hash(o.docstring, %i[param option enum return example]) }
93
+ tags(:overload).each do |o|
94
+ hash[:signatures] << { signature: o.signature, docstring: PuppetStrings::Yard::Util.docstring_to_hash(o.docstring, [:param, :option, :enum, :return, :example]) }
95
95
  end
96
96
  else
97
- hash[:signatures] << { :signature => self.signature, :docstring => PuppetStrings::Yard::Util.docstring_to_hash(docstring, %i[param option enum return example]) }
97
+ hash[:signatures] << { signature: signature, docstring: PuppetStrings::Yard::Util.docstring_to_hash(docstring, [:param, :option, :enum, :return, :example]) }
98
98
  end
99
99
 
100
100
  hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
101
- defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
101
+ defaults = Hash[*parameters.reject { |p| p[1].nil? }.flatten]
102
102
  hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
103
103
  hash[:source] = source unless source.nil? || source.empty?
104
104
  hash
@@ -13,7 +13,7 @@ class PuppetStrings::Yard::CodeObjects::Group < PuppetStrings::Yard::CodeObjects
13
13
  instance = P(:root, key)
14
14
  return instance unless instance.is_a?(YARD::CodeObjects::Proxy)
15
15
 
16
- instance = self.new(:root, key)
16
+ instance = new(:root, key)
17
17
  instance.visibility = :hidden
18
18
  P(:root).children << instance
19
19
  instance
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'puppet-strings/yard/code_objects/group'
4
4
 
5
+ # Implements the group for Puppet plans.
5
6
  class PuppetStrings::Yard::CodeObjects::Plans < PuppetStrings::Yard::CodeObjects::Group
6
7
  # Gets the singleton instance of the group.
7
8
  # @return Returns the singleton instance of the group.
@@ -12,11 +13,12 @@ class PuppetStrings::Yard::CodeObjects::Plans < PuppetStrings::Yard::CodeObjects
12
13
  # Gets the display name of the group.
13
14
  # @param [Boolean] prefix whether to show a prefix. Ignored for Puppet group namespaces.
14
15
  # @return [String] Returns the display name of the group.
15
- def name(prefix = false)
16
+ def name(_prefix = false)
16
17
  'Puppet Plans'
17
18
  end
18
19
  end
19
20
 
21
+ # Implements the Puppet plan code object.
20
22
  class PuppetStrings::Yard::CodeObjects::Plan < PuppetStrings::Yard::CodeObjects::Base
21
23
  attr_reader :statement
22
24
  attr_reader :parameters
@@ -50,7 +52,7 @@ class PuppetStrings::Yard::CodeObjects::Plan < PuppetStrings::Yard::CodeObjects:
50
52
  hash[:file] = file
51
53
  hash[:line] = line
52
54
  hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
53
- defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
55
+ defaults = Hash[*parameters.reject { |p| p[1].nil? }.flatten]
54
56
  hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
55
57
  hash[:source] = source unless source.nil? || source.empty?
56
58
  hash
@@ -8,13 +8,13 @@ class PuppetStrings::Yard::CodeObjects::Providers < PuppetStrings::Yard::CodeObj
8
8
  # @param [String] type The resource type name for the provider.
9
9
  # @return Returns the singleton instance of the group.
10
10
  def self.instance(type)
11
- super("puppet_providers_#{type}".intern)
11
+ super("puppet_providers_#{type}".to_sym)
12
12
  end
13
13
 
14
14
  # Gets the display name of the group.
15
15
  # @param [Boolean] prefix whether to show a prefix. Ignored for Puppet group namespaces.
16
16
  # @return [String] Returns the display name of the group.
17
- def name(prefix = false)
17
+ def name(_prefix = false)
18
18
  'Providers'
19
19
  end
20
20
  end
@@ -11,9 +11,9 @@ class PuppetStrings::Yard::CodeObjects::Tasks < PuppetStrings::Yard::CodeObjects
11
11
  end
12
12
 
13
13
  # Gets the display name of the group.
14
- # @param [Boolean] prefix whether to show a prefix.
14
+ # @param [Boolean] prefix whether to show a prefix. Ignored for Puppet group namespaces.
15
15
  # @return [String] Returns the display name of the group.
16
- def name(prefix = false)
16
+ def name(_prefix = false)
17
17
  'Puppet Tasks'
18
18
  end
19
19
  end
@@ -45,11 +45,11 @@ class PuppetStrings::Yard::CodeObjects::Task < PuppetStrings::Yard::CodeObjects:
45
45
 
46
46
  def parameters
47
47
  parameters = []
48
- statement.parameters.each do |name,props|
48
+ statement.parameters.each do |name, props|
49
49
  parameters.push({ name: name.to_s,
50
50
  tag_name: 'param',
51
- text: props['description'] || "",
52
- types: [props['type']] || "" })
51
+ text: props['description'] || '',
52
+ types: [props['type']] || '' })
53
53
  end
54
54
  parameters
55
55
  end
@@ -66,7 +66,6 @@ class PuppetStrings::Yard::CodeObjects::Task < PuppetStrings::Yard::CodeObjects:
66
66
  },
67
67
  source: statement.source,
68
68
  supports_noop: statement.json['supports_noop'] || false,
69
- input_method: statement.json['input_method']
70
- }
69
+ input_method: statement.json['input_method'] }
71
70
  end
72
71
  end
@@ -14,7 +14,7 @@ class PuppetStrings::Yard::CodeObjects::Types < PuppetStrings::Yard::CodeObjects
14
14
  # Gets the display name of the group.
15
15
  # @param [Boolean] prefix whether to show a prefix. Ignored for Puppet group namespaces.
16
16
  # @return [String] Returns the display name of the group.
17
- def name(prefix = false)
17
+ def name(_prefix = false)
18
18
  'Resource Types'
19
19
  end
20
20
  end
@@ -87,7 +87,7 @@ class PuppetStrings::Yard::CodeObjects::Type < PuppetStrings::Yard::CodeObjects:
87
87
  # @param [String] docstring The docstring of the feature.
88
88
  def initialize(name, docstring)
89
89
  @name = name
90
- @docstring = PuppetStrings::Yard::Util.scrub_string(docstring).gsub("\n", ' ')
90
+ @docstring = PuppetStrings::Yard::Util.scrub_string(docstring).tr("\n", ' ')
91
91
  end
92
92
 
93
93
  # Converts the feature to a hash representation.
@@ -148,7 +148,7 @@ class PuppetStrings::Yard::CodeObjects::Type < PuppetStrings::Yard::CodeObjects:
148
148
  end
149
149
 
150
150
  def parameters
151
- @parameters ||= [] # guard against not filled parameters
151
+ @parameters ||= [] # guard against not filled parameters
152
152
  # just return params if there are no providers
153
153
  return @parameters if providers.empty?
154
154
 
@@ -157,8 +157,8 @@ class PuppetStrings::Yard::CodeObjects::Type < PuppetStrings::Yard::CodeObjects:
157
157
 
158
158
  provider_param = Parameter.new(
159
159
  'provider',
160
- "The specific backend to use for this `#{self.name.to_s}` resource. You will seldom need " + \
161
- "to specify this --- Puppet will usually discover the appropriate provider for your platform."
160
+ "The specific backend to use for this `#{name}` resource. You will seldom need " \
161
+ 'to specify this --- Puppet will usually discover the appropriate provider for your platform.',
162
162
  )
163
163
 
164
164
  @parameters ||= []
@@ -169,7 +169,7 @@ class PuppetStrings::Yard::CodeObjects::Type < PuppetStrings::Yard::CodeObjects:
169
169
  # render-time. For now, this should re-resolve on every call.
170
170
  # may be able to memoize this
171
171
  def providers
172
- providers = YARD::Registry.all("puppet_providers_#{name}".intern)
172
+ providers = YARD::Registry.all("puppet_providers_#{name}".to_sym)
173
173
  return providers if providers.empty?
174
174
 
175
175
  providers.first.children
@@ -1,10 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Implements a helper that logs a warning if a summary tag has more than 140 characters
3
4
  module PuppetStrings::Yard::Handlers::Helpers
4
- # Logs a warning if a summary tag has more than 140 characters
5
5
  def self.validate_summary_tag(object)
6
- if object.has_tag?(:summary) && object.tag(:summary).text.length > 140
7
- log.warn "The length of the summary for #{object.type} '#{object.name}' exceeds the recommended limit of 140 characters."
8
- end
6
+ return unless object.has_tag?(:summary) && object.tag(:summary).text.length > 140
7
+ log.warn "The length of the summary for #{object.type} '#{object.name}' exceeds the recommended limit of 140 characters."
9
8
  end
10
9
  end
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Implements the base class for all JSON handlers.
3
4
  class PuppetStrings::Yard::Handlers::JSON::Base < YARD::Handlers::Base
4
5
  def self.handles?(statement)
5
- handlers.any? {|handler| statement.is_a?(handler)}
6
+ handlers.any? { |handler| statement.is_a?(handler) }
6
7
  end
7
8
  end
@@ -4,6 +4,7 @@ require 'puppet-strings/yard/handlers/json/base'
4
4
  require 'puppet-strings/yard/parsers'
5
5
  require 'puppet-strings/yard/parsers/json/parser'
6
6
 
7
+ # Implements the handler for JSON task metadata.
7
8
  class PuppetStrings::Yard::Handlers::JSON::TaskHandler < PuppetStrings::Yard::Handlers::JSON::Base
8
9
  handles PuppetStrings::Yard::Parsers::JSON::TaskStatement
9
10
  namespace_only
@@ -24,10 +25,9 @@ class PuppetStrings::Yard::Handlers::JSON::TaskHandler < PuppetStrings::Yard::Ha
24
25
  end
25
26
 
26
27
  def validate_params
27
- unless @statement.parameters.empty?
28
- @statement.parameters.each do |param, val|
29
- log.warn "Missing description for param '#{param}' in #{@kind}" if val['description'].nil?
30
- end
28
+ return if @statement.parameters.empty?
29
+ @statement.parameters.each do |param, val|
30
+ log.warn "Missing description for param '#{param}' in #{@kind}" if val['description'].nil?
31
31
  end
32
32
  end
33
33
  end
@@ -6,10 +6,11 @@ class PuppetStrings::Yard::Handlers::Puppet::Base < YARD::Handlers::Base
6
6
  # @param statement The statement that was parsed.
7
7
  # @return [Boolean] Returns true if the statement is handled by this handler or false if not.
8
8
  def self.handles?(statement)
9
- handlers.any? {|handler| statement.is_a?(handler)}
9
+ handlers.any? { |handler| statement.is_a?(handler) }
10
10
  end
11
11
 
12
12
  protected
13
+
13
14
  # Sets the parameter tag types for the given code object.
14
15
  # This also performs some validation on the parameter tags.
15
16
  # @param object The code object to set the parameter tag types for.
@@ -35,7 +36,11 @@ class PuppetStrings::Yard::Handlers::Puppet::Base < YARD::Handlers::Base
35
36
  end
36
37
 
37
38
  # Warn if the parameter type and tag types don't match
38
- log.warn "The type of the @param tag for parameter '#{parameter.name}' does not match the parameter type specification near #{statement.file}:#{statement.line}: ignoring in favor of parameter type information." if parameter.type && tag.types && !tag.types.empty? && parameter.type != tag.types[0]
39
+ if parameter.type && tag.types && !tag.types.empty? && parameter.type != tag.types[0]
40
+ log.warn "The type of the @param tag for parameter '#{parameter.name}' "\
41
+ "does not match the parameter type specification near #{statement.file}:#{statement.line}: "\
42
+ 'ignoring in favor of parameter type information.'
43
+ end
39
44
 
40
45
  if parameter.type
41
46
  tag.types = [parameter.type]
@@ -36,7 +36,8 @@ class PuppetStrings::Yard::Handlers::Puppet::FunctionHandler < PuppetStrings::Ya
36
36
  end
37
37
 
38
38
  private
39
- def add_return_tag(object, type=nil)
39
+
40
+ def add_return_tag(object, type = nil)
40
41
  tag = object.tag(:return)
41
42
  if tag
42
43
  if (type && tag.types && tag.types.first) && (type != tag.types.first)
@@ -47,7 +48,7 @@ class PuppetStrings::Yard::Handlers::Puppet::FunctionHandler < PuppetStrings::Ya
47
48
  return
48
49
  end
49
50
  log.warn "Missing @return tag near #{statement.file}:#{statement.line}."
50
- type = type || 'Any'
51
+ type ||= 'Any'
51
52
  object.add_tag YARD::Tags::Tag.new(:return, '', type)
52
53
  end
53
54
  end
@@ -6,9 +6,10 @@ require 'ripper'
6
6
  class PuppetStrings::Yard::Handlers::Ruby::Base < YARD::Handlers::Ruby::Base
7
7
  # A regular expression for detecting the start of a Ruby heredoc.
8
8
  # Note: the first character of the heredoc start may have been cut off by YARD.
9
- HEREDOC_START = /^<?<[\-~]?['"]?(\w+)['"]?[^\n]*[\n]?/
9
+ HEREDOC_START = %r{^<?<[\-~]?['"]?(\w+)['"]?[^\n]*[\n]?}.freeze
10
10
 
11
11
  protected
12
+
12
13
  # Converts the given Ruby AST node to a string representation.
13
14
  # @param node The Ruby AST node to convert.
14
15
  # @return [String] Returns a string representation of the node or nil if a string representation was not possible.
@@ -33,7 +34,7 @@ class PuppetStrings::Yard::Handlers::Ruby::Base < YARD::Handlers::Ruby::Base
33
34
  source = node.source
34
35
  if source =~ HEREDOC_START
35
36
  lines = source.split("\n")
36
- source = lines[1..(lines.last.include?($1[0..-2]) ? -2 : -1)].join("\n") if lines.size > 1
37
+ source = lines[1..(lines.last.include?(Regexp.last_match(1)[0..-2]) ? -2 : -1)].join("\n") if lines.size > 1
37
38
  end
38
39
 
39
40
  source
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable Naming/MethodName
4
+
3
5
  require 'puppet-strings/yard/handlers/helpers'
4
6
  require 'puppet-strings/yard/handlers/ruby/base'
5
7
  require 'puppet-strings/yard/code_objects'
@@ -65,7 +67,7 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
65
67
  parsed_interface = nil
66
68
 
67
69
  # Recursively traverse the block looking for the first valid 'interface' call
68
- interface_node = find_ruby_ast_node(block, true) do |node|
70
+ find_ruby_ast_node(block, true) do |node|
69
71
  next false unless node.is_a?(YARD::Parser::Ruby::MethodCallNode) &&
70
72
  node.method_name &&
71
73
  node.method_name.source == 'interface'
@@ -102,7 +104,7 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
102
104
  # @yieldreturn [Boolean] Whether the node was what was searched for
103
105
  # @return [YARD::Parser::Ruby::AstNode, nil]
104
106
  def find_ruby_ast_node(ast_node, recurse = false, &block)
105
- raise ArgumentError, 'find_ruby_ast_node requires a block' unless block_given?
107
+ raise ArgumentError, 'find_ruby_ast_node requires a block' unless block
106
108
 
107
109
  is_found = yield ast_node
108
110
  return ast_node if is_found
@@ -136,7 +138,7 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
136
138
  # Anything else is ignored
137
139
  class LazyLiteralEvaluator
138
140
  def initialize
139
- @literal_visitor = ::Puppet::Pops::Visitor.new(self, "literal", 0, 0)
141
+ @literal_visitor = ::Puppet::Pops::Visitor.new(self, 'literal', 0, 0)
140
142
  end
141
143
 
142
144
  def literal(ast)
@@ -150,12 +152,12 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
150
152
 
151
153
  def literal_AccessExpression(o)
152
154
  # Extract the raw text of the Access Expression
153
- ::Puppet::Pops::Adapters::SourcePosAdapter.adapt(o).extract_text
155
+ PuppetStrings::Yard::Util.ast_to_text(o)
154
156
  end
155
157
 
156
158
  def literal_QualifiedReference(o)
157
159
  # Extract the raw text of the Qualified Reference
158
- ::Puppet::Pops::Adapters::SourcePosAdapter.adapt(o).extract_text
160
+ PuppetStrings::Yard::Util.ast_to_text(o)
159
161
  end
160
162
 
161
163
  # ----- The following methods are the same as the original Literal_evaluator
@@ -187,11 +189,11 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
187
189
  o.value
188
190
  end
189
191
 
190
- def literal_LiteralUndef(o)
192
+ def literal_LiteralUndef(_o)
191
193
  nil
192
194
  end
193
195
 
194
- def literal_LiteralDefault(o)
196
+ def literal_LiteralDefault(_o)
195
197
  :default
196
198
  end
197
199
 
@@ -210,9 +212,8 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
210
212
  end
211
213
 
212
214
  def literal_LiteralHash(o)
213
- o.entries.reduce({}) do |result, entry|
215
+ o.entries.each_with_object({}) do |entry, result|
214
216
  result[literal(entry.key)] = literal(entry.value)
215
- result
216
217
  end
217
218
  end
218
219
  end
@@ -235,7 +236,7 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
235
236
  default = value['value'] unless value['value'].nil?
236
237
  end
237
238
  data_type = [data_type] unless data_type.nil? || data_type.is_a?(Array)
238
- params_hash[key] = { :types => data_type, :default => default }
239
+ params_hash[key] = { types: data_type, default: default }
239
240
  end
240
241
 
241
242
  params_hash
@@ -250,7 +251,7 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
250
251
  return funcs_hash if hash.nil? || hash['functions'].nil? || hash['functions'].empty?
251
252
 
252
253
  hash['functions'].each do |key, func_type|
253
- func_hash = { :param_types => [], :return_type => nil }
254
+ func_hash = { param_types: [], return_type: nil }
254
255
  begin
255
256
  callable_type = Puppet::Pops::Types::TypeParser.singleton.parse(func_type)
256
257
  if callable_type.is_a?(Puppet::Pops::Types::PCallableType)
@@ -378,7 +379,9 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
378
379
  if tag.tag_name == 'param'
379
380
  index += 1
380
381
  if index > actual_function[:param_types].count
381
- log.warn "The @param tag for '#{tag.name}' should not exist for function '#{meth.name}' that is defined near #{object.file}:#{object.line}. Expected only #{actual_function[:param_types].count} parameter/s"
382
+ log.warn "The @param tag for '#{tag.name}' should not exist for function "\
383
+ "'#{meth.name}' that is defined near #{object.file}:#{object.line}. "\
384
+ "Expected only #{actual_function[:param_types].count} parameter/s"
382
385
  true
383
386
  else
384
387
  false
@@ -392,14 +395,14 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
392
395
  # Add missing params
393
396
  if meth.docstring.tags(:param).count < actual_function[:param_types].count
394
397
  start = meth.docstring.tags(:param).count + 1
395
- (start..actual_function[:param_types].count).each do |index| # Using 1-based index here instead of usual zero
396
- meth.add_tag(YARD::Tags::Tag.new(:param, '', actual_function[:param_types][index - 1], "param#{index}"))
398
+ (start..actual_function[:param_types].count).each do |param_type_index| # Using 1-based index here instead of usual zero
399
+ meth.add_tag(YARD::Tags::Tag.new(:param, '', actual_function[:param_types][param_type_index - 1], "param#{param_type_index}"))
397
400
  end
398
401
  end
399
402
 
400
403
  # Ensure the parameter types are correct
401
- meth.docstring.tags(:param).each_with_index do |tag, index|
402
- actual_types = [actual_function[:param_types][index]]
404
+ meth.docstring.tags(:param).each_with_index do |tag, actual_type_index|
405
+ actual_types = [actual_function[:param_types][actual_type_index]]
403
406
  if tag.types != actual_types
404
407
  log.warn "The @param tag for '#{tag.name}' for function '#{meth.name}' has a different type definition than the actual function near #{object.file}:#{object.line}. Expected #{actual_types}"
405
408
  tag.types = actual_types