puppet-strings 2.5.0 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +33 -6
- data/lib/puppet-strings.rb +2 -0
- data/lib/puppet-strings/describe.rb +2 -0
- data/lib/puppet-strings/json.rb +2 -0
- data/lib/puppet-strings/markdown.rb +11 -9
- data/lib/puppet-strings/markdown/base.rb +11 -3
- data/lib/puppet-strings/markdown/data_type.rb +2 -0
- data/lib/puppet-strings/markdown/data_types.rb +3 -1
- data/lib/puppet-strings/markdown/defined_type.rb +2 -0
- data/lib/puppet-strings/markdown/defined_types.rb +3 -1
- data/lib/puppet-strings/markdown/function.rb +9 -7
- data/lib/puppet-strings/markdown/functions.rb +3 -1
- data/lib/puppet-strings/markdown/puppet_class.rb +2 -0
- data/lib/puppet-strings/markdown/puppet_classes.rb +3 -1
- data/lib/puppet-strings/markdown/puppet_plan.rb +2 -0
- data/lib/puppet-strings/markdown/puppet_plans.rb +3 -1
- data/lib/puppet-strings/markdown/puppet_task.rb +2 -0
- data/lib/puppet-strings/markdown/puppet_tasks.rb +3 -1
- data/lib/puppet-strings/markdown/resource_type.rb +2 -0
- data/lib/puppet-strings/markdown/resource_types.rb +3 -1
- data/lib/puppet-strings/markdown/table_of_contents.rb +3 -1
- data/lib/puppet-strings/markdown/templates/classes_and_defines.erb +7 -3
- data/lib/puppet-strings/markdown/templates/data_type.erb +12 -4
- data/lib/puppet-strings/markdown/templates/data_type_function.erb +1 -1
- data/lib/puppet-strings/markdown/templates/function.erb +1 -1
- data/lib/puppet-strings/markdown/templates/puppet_task.erb +1 -1
- data/lib/puppet-strings/markdown/templates/resource_type.erb +8 -2
- data/lib/puppet-strings/monkey_patches/display_object_command.rb +2 -0
- data/lib/puppet-strings/tasks.rb +2 -0
- data/lib/puppet-strings/tasks/generate.rb +2 -0
- data/lib/puppet-strings/tasks/gh_pages.rb +3 -0
- data/lib/puppet-strings/version.rb +3 -1
- data/lib/puppet-strings/yard.rb +3 -0
- data/lib/puppet-strings/yard/code_objects.rb +2 -0
- data/lib/puppet-strings/yard/code_objects/base.rb +2 -0
- data/lib/puppet-strings/yard/code_objects/class.rb +4 -2
- data/lib/puppet-strings/yard/code_objects/data_type.rb +4 -2
- data/lib/puppet-strings/yard/code_objects/data_type_alias.rb +2 -0
- data/lib/puppet-strings/yard/code_objects/defined_type.rb +4 -2
- data/lib/puppet-strings/yard/code_objects/function.rb +6 -3
- data/lib/puppet-strings/yard/code_objects/group.rb +3 -0
- data/lib/puppet-strings/yard/code_objects/plan.rb +4 -2
- data/lib/puppet-strings/yard/code_objects/provider.rb +6 -0
- data/lib/puppet-strings/yard/code_objects/task.rb +2 -0
- data/lib/puppet-strings/yard/code_objects/type.rb +3 -0
- data/lib/puppet-strings/yard/handlers.rb +2 -0
- data/lib/puppet-strings/yard/handlers/helpers.rb +2 -0
- data/lib/puppet-strings/yard/handlers/json/base.rb +2 -0
- data/lib/puppet-strings/yard/handlers/json/task_handler.rb +2 -0
- data/lib/puppet-strings/yard/handlers/puppet/base.rb +3 -0
- data/lib/puppet-strings/yard/handlers/puppet/class_handler.rb +2 -0
- data/lib/puppet-strings/yard/handlers/puppet/data_type_alias_handler.rb +2 -0
- data/lib/puppet-strings/yard/handlers/puppet/defined_type_handler.rb +2 -0
- data/lib/puppet-strings/yard/handlers/puppet/function_handler.rb +3 -1
- data/lib/puppet-strings/yard/handlers/puppet/plan_handler.rb +2 -0
- data/lib/puppet-strings/yard/handlers/ruby/base.rb +5 -0
- data/lib/puppet-strings/yard/handlers/ruby/data_type_handler.rb +33 -17
- data/lib/puppet-strings/yard/handlers/ruby/function_handler.rb +9 -7
- data/lib/puppet-strings/yard/handlers/ruby/provider_handler.rb +13 -0
- data/lib/puppet-strings/yard/handlers/ruby/rsapi_handler.rb +4 -1
- data/lib/puppet-strings/yard/handlers/ruby/type_base.rb +14 -6
- data/lib/puppet-strings/yard/handlers/ruby/type_extras_handler.rb +5 -2
- data/lib/puppet-strings/yard/handlers/ruby/type_handler.rb +12 -1
- data/lib/puppet-strings/yard/parsers.rb +2 -0
- data/lib/puppet-strings/yard/parsers/json/parser.rb +2 -0
- data/lib/puppet-strings/yard/parsers/json/task_statement.rb +2 -0
- data/lib/puppet-strings/yard/parsers/puppet/parser.rb +12 -10
- data/lib/puppet-strings/yard/parsers/puppet/statement.rb +4 -0
- data/lib/puppet-strings/yard/tags.rb +2 -0
- data/lib/puppet-strings/yard/tags/enum_tag.rb +2 -0
- data/lib/puppet-strings/yard/tags/factory.rb +2 -0
- data/lib/puppet-strings/yard/tags/overload_tag.rb +4 -1
- data/lib/puppet-strings/yard/tags/parameter_directive.rb +5 -4
- data/lib/puppet-strings/yard/tags/property_directive.rb +5 -4
- data/lib/puppet-strings/yard/tags/summary_tag.rb +2 -0
- data/lib/puppet-strings/yard/templates/default/puppet_function/html/setup.rb +1 -1
- data/lib/puppet-strings/yard/util.rb +4 -1
- data/lib/puppet/application/strings.rb +2 -0
- data/lib/puppet/face/strings.rb +4 -1
- data/lib/puppet/feature/rgen.rb +2 -0
- data/lib/puppet/feature/yard.rb +2 -0
- metadata +5 -5
@@ -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/ruby/base'
|
3
5
|
require 'puppet-strings/yard/code_objects'
|
@@ -29,6 +31,7 @@ class PuppetStrings::Yard::Handlers::Ruby::FunctionHandler < PuppetStrings::Yard
|
|
29
31
|
# newline, YARD ignores the namespace and uses `newfunction` as the source of the
|
30
32
|
# first statement.
|
31
33
|
return unless statement.count > 1
|
34
|
+
|
32
35
|
module_name = statement[0].source
|
33
36
|
return unless module_name == 'Puppet::Functions' || module_name == 'Puppet::Parser::Functions' || module_name == 'newfunction'
|
34
37
|
|
@@ -219,8 +222,7 @@ class PuppetStrings::Yard::Handlers::Ruby::FunctionHandler < PuppetStrings::Yard
|
|
219
222
|
|
220
223
|
# Populate the required parameters
|
221
224
|
params = parameters.unnamed_required_params
|
222
|
-
|
223
|
-
params.each do |parameter|
|
225
|
+
params&.each do |parameter|
|
224
226
|
add_param_tag(
|
225
227
|
overload_tag,
|
226
228
|
param_tags,
|
@@ -229,12 +231,10 @@ class PuppetStrings::Yard::Handlers::Ruby::FunctionHandler < PuppetStrings::Yard
|
|
229
231
|
parameter.line
|
230
232
|
)
|
231
233
|
end
|
232
|
-
end
|
233
234
|
|
234
235
|
# Populate the optional parameters
|
235
236
|
params = parameters.unnamed_optional_params
|
236
|
-
|
237
|
-
params.each do |parameter|
|
237
|
+
params&.each do |parameter|
|
238
238
|
add_param_tag(
|
239
239
|
overload_tag,
|
240
240
|
param_tags,
|
@@ -246,7 +246,6 @@ class PuppetStrings::Yard::Handlers::Ruby::FunctionHandler < PuppetStrings::Yard
|
|
246
246
|
true
|
247
247
|
)
|
248
248
|
end
|
249
|
-
end
|
250
249
|
|
251
250
|
# Populate the splat parameter
|
252
251
|
param = parameters.splat_param
|
@@ -301,7 +300,7 @@ class PuppetStrings::Yard::Handlers::Ruby::FunctionHandler < PuppetStrings::Yard
|
|
301
300
|
name = '&' + name
|
302
301
|
end
|
303
302
|
|
304
|
-
type ||= tag
|
303
|
+
type ||= tag&.types ? tag.type : 'Any'
|
305
304
|
type = optional ? "Optional[#{type}]" : type
|
306
305
|
|
307
306
|
object.parameters << [name, to_puppet_literal(default)]
|
@@ -328,6 +327,7 @@ class PuppetStrings::Yard::Handlers::Ruby::FunctionHandler < PuppetStrings::Yard
|
|
328
327
|
# Validate that tags have matching parameters
|
329
328
|
overload.tags(:param).each do |tag|
|
330
329
|
next if overload.parameters.find { |p| tag.name == p[0] }
|
330
|
+
|
331
331
|
log.warn "The @param tag for parameter '#{tag.name}' has no matching parameter at #{file}:#{line}."
|
332
332
|
end
|
333
333
|
end
|
@@ -338,9 +338,11 @@ class PuppetStrings::Yard::Handlers::Ruby::FunctionHandler < PuppetStrings::Yard
|
|
338
338
|
parameters[1].each do |kvp|
|
339
339
|
next unless kvp.count == 2
|
340
340
|
next unless node_as_string(kvp[0]) == 'doc'
|
341
|
+
|
341
342
|
docstring = node_as_string(kvp[1])
|
342
343
|
|
343
344
|
log.error "Failed to parse docstring for 3.x Puppet function '#{name}' near #{statement.file}:#{statement.line}." and return nil unless docstring
|
345
|
+
|
344
346
|
return PuppetStrings::Yard::Util.scrub_string(docstring)
|
345
347
|
end
|
346
348
|
end
|
@@ -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/ruby/base'
|
3
5
|
require 'puppet-strings/yard/code_objects'
|
@@ -20,6 +22,7 @@ class PuppetStrings::Yard::Handlers::Ruby::ProviderHandler < PuppetStrings::Yard
|
|
20
22
|
# Extract the type name
|
21
23
|
type_call_parameters = type_call.parameters(false)
|
22
24
|
return unless type_call_parameters.count >= 1
|
25
|
+
|
23
26
|
type_name = node_as_string(type_call_parameters.first)
|
24
27
|
raise YARD::Parser::UndocumentableError, "Could not determine the resource type name for the provider defined at #{statement.file}:#{statement.line}." unless type_name
|
25
28
|
|
@@ -47,8 +50,10 @@ class PuppetStrings::Yard::Handlers::Ruby::ProviderHandler < PuppetStrings::Yard
|
|
47
50
|
if child.type == :assign
|
48
51
|
ivar = child.jump(:ivar)
|
49
52
|
next unless ivar != child && ivar.source == '@doc'
|
53
|
+
|
50
54
|
docstring = node_as_string(child[1])
|
51
55
|
log.error "Failed to parse docstring for Puppet provider '#{object.name}' (resource type '#{object.type_name}') near #{child.file}:#{child.line}." and return nil unless docstring
|
56
|
+
|
52
57
|
register_docstring(object, PuppetStrings::Yard::Util.scrub_string(docstring), nil)
|
53
58
|
return nil
|
54
59
|
elsif child.is_a?(YARD::Parser::Ruby::MethodCallNode)
|
@@ -60,6 +65,7 @@ class PuppetStrings::Yard::Handlers::Ruby::ProviderHandler < PuppetStrings::Yard
|
|
60
65
|
|
61
66
|
docstring = node_as_string(child.parameters[0])
|
62
67
|
log.error "Failed to parse docstring for Puppet provider '#{object.name}' (resource type '#{object.type_name}') near #{child.file}:#{child.line}." and return nil unless docstring
|
68
|
+
|
63
69
|
register_docstring(object, PuppetStrings::Yard::Util.scrub_string(docstring), nil)
|
64
70
|
return nil
|
65
71
|
end
|
@@ -71,6 +77,7 @@ class PuppetStrings::Yard::Handlers::Ruby::ProviderHandler < PuppetStrings::Yard
|
|
71
77
|
# Traverse the block looking for confines/defaults/commands
|
72
78
|
block = statement.block
|
73
79
|
return unless block && block.count >= 2
|
80
|
+
|
74
81
|
block[1].children.each do |node|
|
75
82
|
next unless node.is_a?(YARD::Parser::Ruby::MethodCallNode) && node.method_name
|
76
83
|
|
@@ -80,8 +87,10 @@ class PuppetStrings::Yard::Handlers::Ruby::ProviderHandler < PuppetStrings::Yard
|
|
80
87
|
if method_name == 'confine'
|
81
88
|
# Add a confine to the object
|
82
89
|
next unless parameters.count >= 1
|
90
|
+
|
83
91
|
parameters[0].each do |kvp|
|
84
92
|
next unless kvp.count == 2
|
93
|
+
|
85
94
|
object.add_confine(node_as_string(kvp[0]) || kvp[0].source, node_as_string(kvp[1]) || kvp[1].source)
|
86
95
|
end
|
87
96
|
elsif method_name == 'has_feature' || method_name == 'has_features'
|
@@ -92,9 +101,11 @@ class PuppetStrings::Yard::Handlers::Ruby::ProviderHandler < PuppetStrings::Yard
|
|
92
101
|
elsif method_name == 'defaultfor'
|
93
102
|
# Add a default to the object
|
94
103
|
next unless parameters.count >= 1
|
104
|
+
|
95
105
|
# Some defaultfor statements contain multiple constraints.
|
96
106
|
parameters.each do |kvps|
|
97
107
|
next unless kvps.count >= 1
|
108
|
+
|
98
109
|
defaultfor = []
|
99
110
|
kvps.each do |kvp|
|
100
111
|
defaultfor << [node_as_string(kvp[0]) || kvp[0].source, node_as_string(kvp[1]) || kvp[1].source]
|
@@ -104,8 +115,10 @@ class PuppetStrings::Yard::Handlers::Ruby::ProviderHandler < PuppetStrings::Yard
|
|
104
115
|
elsif method_name == 'commands'
|
105
116
|
# Add the commands to the object
|
106
117
|
next unless parameters.count >= 1
|
118
|
+
|
107
119
|
parameters[0].each do |kvp|
|
108
120
|
next unless kvp.count == 2
|
121
|
+
|
109
122
|
object.add_command(node_as_string(kvp[0]) || kvp[0].source, node_as_string(kvp[1]) || kvp[1].source)
|
110
123
|
end
|
111
124
|
end
|
@@ -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/ruby/base'
|
3
5
|
require 'puppet-strings/yard/code_objects'
|
@@ -6,7 +8,7 @@ require 'puppet-strings/yard/util'
|
|
6
8
|
# Implements the handler for Puppet resource types written in Ruby.
|
7
9
|
class PuppetStrings::Yard::Handlers::Ruby::RsapiHandler < PuppetStrings::Yard::Handlers::Ruby::Base
|
8
10
|
# The default docstring when ensurable is used without given a docstring.
|
9
|
-
DEFAULT_ENSURABLE_DOCSTRING = 'The basic property that the resource should be in.'
|
11
|
+
DEFAULT_ENSURABLE_DOCSTRING = 'The basic property that the resource should be in.'
|
10
12
|
|
11
13
|
namespace_only
|
12
14
|
handles method_call(:register_type)
|
@@ -14,6 +16,7 @@ class PuppetStrings::Yard::Handlers::Ruby::RsapiHandler < PuppetStrings::Yard::H
|
|
14
16
|
process do
|
15
17
|
# Only accept calls to Puppet::ResourceApi
|
16
18
|
return unless statement.count > 1
|
19
|
+
|
17
20
|
module_name = statement[0].source
|
18
21
|
return unless ['Puppet::ResourceApi'].include? module_name
|
19
22
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/yard/handlers/ruby/base'
|
2
4
|
|
3
5
|
class PuppetStrings::Yard::Handlers::Ruby::TypeBase < PuppetStrings::Yard::Handlers::Ruby::Base
|
@@ -22,8 +24,10 @@ class PuppetStrings::Yard::Handlers::Ruby::TypeBase < PuppetStrings::Yard::Handl
|
|
22
24
|
if child.type == :assign
|
23
25
|
ivar = child.jump(:ivar)
|
24
26
|
next unless ivar != child && ivar.source == '@doc'
|
27
|
+
|
25
28
|
docstring = node_as_string(child[1])
|
26
29
|
log.error "Failed to parse docstring for #{kind} near #{child.file}:#{child.line}." and return nil unless docstring
|
30
|
+
|
27
31
|
return PuppetStrings::Yard::Util.scrub_string(docstring)
|
28
32
|
elsif child.is_a?(YARD::Parser::Ruby::MethodCallNode)
|
29
33
|
# Look for a call to a dispatch method with a block
|
@@ -33,6 +37,7 @@ class PuppetStrings::Yard::Handlers::Ruby::TypeBase < PuppetStrings::Yard::Handl
|
|
33
37
|
|
34
38
|
docstring = node_as_string(child.parameters[0])
|
35
39
|
log.error "Failed to parse docstring for #{kind} near #{child.file}:#{child.line}." and return nil unless docstring
|
40
|
+
|
36
41
|
return PuppetStrings::Yard::Util.scrub_string(docstring)
|
37
42
|
end
|
38
43
|
end
|
@@ -69,6 +74,7 @@ class PuppetStrings::Yard::Handlers::Ruby::TypeBase < PuppetStrings::Yard::Handl
|
|
69
74
|
|
70
75
|
if method_name == 'newvalue'
|
71
76
|
next unless parameters.count >= 1
|
77
|
+
|
72
78
|
object.add(node_as_string(parameters[0]) || parameters[0].source)
|
73
79
|
elsif method_name == 'newvalues'
|
74
80
|
parameters.each do |p|
|
@@ -76,9 +82,11 @@ class PuppetStrings::Yard::Handlers::Ruby::TypeBase < PuppetStrings::Yard::Handl
|
|
76
82
|
end
|
77
83
|
elsif method_name == 'aliasvalue'
|
78
84
|
next unless parameters.count >= 2
|
85
|
+
|
79
86
|
object.alias(node_as_string(parameters[0]) || parameters[0].source, node_as_string(parameters[1]) || parameters[1].source)
|
80
87
|
elsif method_name == 'defaultto'
|
81
88
|
next unless parameters.count >= 1
|
89
|
+
|
82
90
|
object.default = node_as_string(parameters[0]) || parameters[0].source
|
83
91
|
elsif method_name == 'isnamevar'
|
84
92
|
object.isnamevar = true
|
@@ -103,6 +111,7 @@ class PuppetStrings::Yard::Handlers::Ruby::TypeBase < PuppetStrings::Yard::Handl
|
|
103
111
|
parameters[1].each do |kvp|
|
104
112
|
next unless kvp.count == 2
|
105
113
|
next unless node_as_string(kvp[0]) == 'parent'
|
114
|
+
|
106
115
|
if kvp[1].source == 'Puppet::Parameter::Boolean'
|
107
116
|
object.add('true') unless object.values.include? 'true' # rubocop:disable Performance/InefficientHashSearch Not supported on Ruby 2.1
|
108
117
|
object.add('false') unless object.values.include? 'false' # rubocop:disable Performance/InefficientHashSearch Not supported on Ruby 2.1
|
@@ -117,19 +126,18 @@ class PuppetStrings::Yard::Handlers::Ruby::TypeBase < PuppetStrings::Yard::Handl
|
|
117
126
|
|
118
127
|
def set_default_namevar(object)
|
119
128
|
return unless object.properties || object.parameters
|
129
|
+
|
120
130
|
default = nil
|
121
|
-
|
122
|
-
object.properties.each do |property|
|
131
|
+
object.properties&.each do |property|
|
123
132
|
return nil if property.isnamevar
|
133
|
+
|
124
134
|
default = property if property.name == 'name'
|
125
135
|
end
|
126
|
-
|
127
|
-
if object.parameters
|
128
|
-
object.parameters.each do |parameter|
|
136
|
+
object.parameters&.each do |parameter|
|
129
137
|
return nil if parameter.isnamevar
|
138
|
+
|
130
139
|
default ||= parameter if parameter.name == 'name'
|
131
140
|
end
|
132
|
-
end
|
133
141
|
default.isnamevar = true if default
|
134
142
|
end
|
135
143
|
end
|
@@ -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/ruby/type_base'
|
3
5
|
require 'puppet-strings/yard/code_objects'
|
@@ -6,7 +8,7 @@ require 'puppet-strings/yard/util'
|
|
6
8
|
# Implements the handler for Puppet resource type newparam/newproperty calls written in Ruby.
|
7
9
|
class PuppetStrings::Yard::Handlers::Ruby::TypeExtrasHandler < PuppetStrings::Yard::Handlers::Ruby::TypeBase
|
8
10
|
# The default docstring when ensurable is used without given a docstring.
|
9
|
-
DEFAULT_ENSURABLE_DOCSTRING = 'The basic property that the resource should be in.'
|
11
|
+
DEFAULT_ENSURABLE_DOCSTRING = 'The basic property that the resource should be in.'
|
10
12
|
|
11
13
|
namespace_only
|
12
14
|
handles method_call(:newparam)
|
@@ -31,9 +33,10 @@ class PuppetStrings::Yard::Handlers::Ruby::TypeExtrasHandler < PuppetStrings::Ya
|
|
31
33
|
# propertyname: "content"
|
32
34
|
|
33
35
|
return unless (statement.count > 1) && (statement[0].children.count > 2)
|
36
|
+
|
34
37
|
module_name = statement[0].children[0].source
|
35
38
|
method1_name = statement[0].children.drop(1).find{ |c| c.type == :ident }.source
|
36
|
-
return unless
|
39
|
+
return unless ['Type', 'Puppet::Type'].include?(module_name) && method1_name == 'type'
|
37
40
|
|
38
41
|
typename = get_name(statement[0], 'Puppet::Type.type')
|
39
42
|
method2_name = caller_method
|
@@ -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/ruby/type_base'
|
3
5
|
require 'puppet-strings/yard/code_objects'
|
@@ -6,7 +8,7 @@ require 'puppet-strings/yard/util'
|
|
6
8
|
# Implements the handler for Puppet resource types written in Ruby.
|
7
9
|
class PuppetStrings::Yard::Handlers::Ruby::TypeHandler < PuppetStrings::Yard::Handlers::Ruby::TypeBase
|
8
10
|
# The default docstring when ensurable is used without given a docstring.
|
9
|
-
DEFAULT_ENSURABLE_DOCSTRING = 'The basic property that the resource should be in.'
|
11
|
+
DEFAULT_ENSURABLE_DOCSTRING = 'The basic property that the resource should be in.'
|
10
12
|
|
11
13
|
namespace_only
|
12
14
|
handles method_call(:newtype)
|
@@ -14,6 +16,7 @@ class PuppetStrings::Yard::Handlers::Ruby::TypeHandler < PuppetStrings::Yard::Ha
|
|
14
16
|
process do
|
15
17
|
# Only accept calls to Puppet::Type
|
16
18
|
return unless statement.count > 1
|
19
|
+
|
17
20
|
module_name = statement[0].source
|
18
21
|
return unless module_name == 'Puppet::Type' || module_name == 'Type'
|
19
22
|
|
@@ -40,6 +43,7 @@ class PuppetStrings::Yard::Handlers::Ruby::TypeHandler < PuppetStrings::Yard::Ha
|
|
40
43
|
# Traverse the block looking for properties/parameters/features
|
41
44
|
block = statement.block
|
42
45
|
return unless block && block.count >= 2
|
46
|
+
|
43
47
|
block[1].children.each do |node|
|
44
48
|
next unless node.is_a?(YARD::Parser::Ruby::MethodCallNode) &&
|
45
49
|
node.method_name
|
@@ -50,24 +54,31 @@ class PuppetStrings::Yard::Handlers::Ruby::TypeHandler < PuppetStrings::Yard::Ha
|
|
50
54
|
if method_name == 'newproperty'
|
51
55
|
# Add a property to the object
|
52
56
|
next unless parameters.count >= 1
|
57
|
+
|
53
58
|
name = node_as_string(parameters[0])
|
54
59
|
next unless name
|
60
|
+
|
55
61
|
object.add_property(create_property(name, node))
|
56
62
|
elsif method_name == 'newparam'
|
57
63
|
# Add a parameter to the object
|
58
64
|
next unless parameters.count >= 1
|
65
|
+
|
59
66
|
name = node_as_string(parameters[0])
|
60
67
|
next unless name
|
68
|
+
|
61
69
|
object.add_parameter(create_parameter(name, node))
|
62
70
|
elsif method_name == 'newcheck'
|
63
71
|
# Add a check to the object
|
64
72
|
next unless parameters.count >= 1
|
73
|
+
|
65
74
|
name = node_as_string(parameters[0])
|
66
75
|
next unless name
|
76
|
+
|
67
77
|
object.add_check(create_check(name, node))
|
68
78
|
elsif method_name == 'feature'
|
69
79
|
# Add a feature to the object
|
70
80
|
next unless parameters.count >= 2
|
81
|
+
|
71
82
|
name = node_as_string(parameters[0])
|
72
83
|
next unless name
|
73
84
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet'
|
2
4
|
require 'puppet/pops'
|
3
5
|
require 'puppet-strings/yard/parsers/puppet/statement'
|
@@ -26,8 +28,8 @@ class PuppetStrings::Yard::Parsers::Puppet::Parser < YARD::Parser::Base
|
|
26
28
|
return
|
27
29
|
end
|
28
30
|
@statements ||= (@visitor.visit(::Puppet::Pops::Parser::Parser.new.parse_string(source)) || []).compact
|
29
|
-
rescue ::Puppet::ParseError =>
|
30
|
-
log.error "Failed to parse #{@file}: #{
|
31
|
+
rescue ::Puppet::ParseError => e
|
32
|
+
log.error "Failed to parse #{@file}: #{e.message}"
|
31
33
|
@statements = []
|
32
34
|
end
|
33
35
|
@statements.freeze
|
@@ -42,47 +44,47 @@ class PuppetStrings::Yard::Parsers::Puppet::Parser < YARD::Parser::Base
|
|
42
44
|
|
43
45
|
private
|
44
46
|
|
45
|
-
def transform_Program(o)
|
47
|
+
def transform_Program(o)
|
46
48
|
# Cache the lines of the source text; we'll use this to locate comments
|
47
49
|
@lines = o.source_text.lines.to_a
|
48
50
|
o.definitions.map { |d| @visitor.visit(d) }
|
49
51
|
end
|
50
52
|
|
51
|
-
def transform_Factory(o)
|
53
|
+
def transform_Factory(o)
|
52
54
|
@visitor.visit(o.current)
|
53
55
|
end
|
54
56
|
|
55
|
-
def transform_HostClassDefinition(o)
|
57
|
+
def transform_HostClassDefinition(o)
|
56
58
|
statement = PuppetStrings::Yard::Parsers::Puppet::ClassStatement.new(o, @file)
|
57
59
|
statement.extract_docstring(@lines)
|
58
60
|
statement
|
59
61
|
end
|
60
62
|
|
61
|
-
def transform_ResourceTypeDefinition(o)
|
63
|
+
def transform_ResourceTypeDefinition(o)
|
62
64
|
statement = PuppetStrings::Yard::Parsers::Puppet::DefinedTypeStatement.new(o, @file)
|
63
65
|
statement.extract_docstring(@lines)
|
64
66
|
statement
|
65
67
|
end
|
66
68
|
|
67
|
-
def transform_FunctionDefinition(o)
|
69
|
+
def transform_FunctionDefinition(o)
|
68
70
|
statement = PuppetStrings::Yard::Parsers::Puppet::FunctionStatement.new(o, @file)
|
69
71
|
statement.extract_docstring(@lines)
|
70
72
|
statement
|
71
73
|
end
|
72
74
|
|
73
|
-
def transform_PlanDefinition(o)
|
75
|
+
def transform_PlanDefinition(o)
|
74
76
|
statement = PuppetStrings::Yard::Parsers::Puppet::PlanStatement.new(o, @file)
|
75
77
|
statement.extract_docstring(@lines)
|
76
78
|
statement
|
77
79
|
end
|
78
80
|
|
79
|
-
def transform_TypeAlias(o)
|
81
|
+
def transform_TypeAlias(o)
|
80
82
|
statement = PuppetStrings::Yard::Parsers::Puppet::DataTypeAliasStatement.new(o, @file)
|
81
83
|
statement.extract_docstring(@lines)
|
82
84
|
statement
|
83
85
|
end
|
84
86
|
|
85
|
-
def transform_Object(o)
|
87
|
+
def transform_Object(o)
|
86
88
|
# Ignore anything else (will be compacted out of the resulting array)
|
87
89
|
end
|
88
90
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet'
|
2
4
|
require 'puppet/pops'
|
3
5
|
|
@@ -32,11 +34,13 @@ module PuppetStrings::Yard::Parsers::Puppet
|
|
32
34
|
comment = []
|
33
35
|
(0..@line-2).reverse_each do |index|
|
34
36
|
break unless index <= lines.count
|
37
|
+
|
35
38
|
line = lines[index].strip
|
36
39
|
count = line.size
|
37
40
|
line.gsub!(COMMENT_REGEX, '')
|
38
41
|
# Break out if nothing was removed (wasn't a comment line)
|
39
42
|
break unless line.size < count
|
43
|
+
|
40
44
|
comment << line
|
41
45
|
end
|
42
46
|
@comments_range = (@line - comment.size - 1..@line - 1)
|