(PDOC-240) add handling for :array node type in rsapi_handler

The 'features' key in the resource api expects an array of feature names. Currently, if you run strings on a resource api type that specifies features, it falls over because it doesn't know what to do with an AST node of type :array. Further, the method that throws the error is looking for an undefined variable called 'parameters'. This removes the odd conditional that calls 'parameters' and adds a method that returns an array of the array contents that may be passed to features. Features are not currently sent to the renderer, but now Strings will be able to handle any array it comes across in an rsapi type.
This commit is contained in:
Eric Putnam 2018-04-20 15:04:52 +01:00
parent 09a240dd87
commit 9a1a0b4af6
No known key found for this signature in database
GPG Key ID: 3FB595AA224A7751
2 changed files with 12 additions and 1 deletions

View File

@ -44,7 +44,7 @@ class PuppetStrings::Yard::Handlers::Ruby::RsapiHandler < PuppetStrings::Yard::H
private private
def raise_parse_error(msg, location = statement) def raise_parse_error(msg, location = statement)
raise YARD::Parser::UndocumentableError, "#{msg} at #{location.file}:#{location.line}." if parameters.empty? raise YARD::Parser::UndocumentableError, "#{msg} at #{location.file}:#{location.line}."
end end
# check that the params of the register_type call are key/value pairs. # 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
node.source.to_i node.source.to_i
when :hash when :hash
hash_from_node(node) hash_from_node(node)
when :array
array_from_node(node)
when :var_ref when :var_ref
var_ref_from_node(node) var_ref_from_node(node)
when :symbol, :symbol_literal, :label, :dyna_symbol, :string_literal when :symbol, :symbol_literal, :label, :dyna_symbol, :string_literal
@ -76,6 +78,14 @@ class PuppetStrings::Yard::Handlers::Ruby::RsapiHandler < PuppetStrings::Yard::H
end end
end end
def array_from_node(node)
return nil unless node
arr = node.children.collect do |assoc|
value_from_node(assoc.children[0])
end
end
def hash_from_node(node) def hash_from_node(node)
return nil unless node return nil unless node

View File

@ -70,6 +70,7 @@ SOURCE
Puppet::ResourceApi.register_type( Puppet::ResourceApi.register_type(
name: 'database', name: 'database',
docs: 'An example database server resource type.', docs: 'An example database server resource type.',
features: ['remote-resource'],
attributes: { attributes: {
ensure: { ensure: {
type: 'Enum[present, absent, up, down]', type: 'Enum[present, absent, up, down]',