diff --git a/lib/puppet_x/puppetlabs/strings/yard/handlers/host_class_handler.rb b/lib/puppet_x/puppetlabs/strings/yard/handlers/host_class_handler.rb index 08bd6f9..8c972ed 100644 --- a/lib/puppet_x/puppetlabs/strings/yard/handlers/host_class_handler.rb +++ b/lib/puppet_x/puppetlabs/strings/yard/handlers/host_class_handler.rb @@ -18,7 +18,7 @@ class PuppetX::PuppetLabs::Strings::YARD::Handlers::HostClassHandler < PuppetX:: begin param_type_info[pop_param.name] = tp.interpret_any(pop_param.type_expr) rescue Puppet::ParseError - # If the type could not be interpreted, default to type Any + # If the type could not be interpreted insert a prominent warning param_type_info[pop_param.name] = "TypeError - " + "#{pop_param.type_expr} isn't a valid type." end diff --git a/lib/puppet_x/puppetlabs/strings/yard/templates/default/definedtype/html/parameter_details.erb b/lib/puppet_x/puppetlabs/strings/yard/templates/default/definedtype/html/parameter_details.erb index a085ac0..d03666e 100644 --- a/lib/puppet_x/puppetlabs/strings/yard/templates/default/definedtype/html/parameter_details.erb +++ b/lib/puppet_x/puppetlabs/strings/yard/templates/default/definedtype/html/parameter_details.erb @@ -1,6 +1,6 @@

Parameter Summary

diff --git a/lib/puppet_x/puppetlabs/strings/yard/templates/default/html_helper.rb b/lib/puppet_x/puppetlabs/strings/yard/templates/default/html_helper.rb index b9a4a58..2185450 100644 --- a/lib/puppet_x/puppetlabs/strings/yard/templates/default/html_helper.rb +++ b/lib/puppet_x/puppetlabs/strings/yard/templates/default/html_helper.rb @@ -16,7 +16,7 @@ class HTMLHelper end # Generates the HTML to format the relevant data about parameters - def generate_parameters(params) + def generate_parameters(params, object) result = [] params.each do |param| @@ -33,13 +33,34 @@ class HTMLHelper result << "#{param[:name]} " result << "" + # If the docstring specifies types, use those if param[:types] result << "(" << "" << param[:types].join(", ") << "" << ")" - # Don't bother with TBD since 3x functions will never have type info per parameter. - # However if the user does want to list a type for some reason that is still supported, - # we just don't want to suggest that they need to + # Otherwise, if typing information could be extracted from the object + # itself, use that + elsif object.type_info + # If the parameter name includes the default value, scrub that. + if param[:name].match(/([^=]*)=/) + param_name = $1 + else + param_name = param[:name] + end + # Collect all the possible types from the object. If no such type + # exists for this parameter name don't do anything. + possible_types = object.type_info.map { + |sig| sig[param_name] or nil + }.compact + + # If no possible types could be determined, put the type down as + # Unknown + if possible_types == [] + result << "(" << "Unknown" << ")" + else + result << "(" << "" << possible_types.join(", ") << "" << ")" + end + # Give up. It can probably be anything. elsif !param[:puppet_3_func] - result << "(TBD)" + result << "(Unkown)" end result << "" diff --git a/lib/puppet_x/puppetlabs/strings/yard/templates/default/puppetnamespace/html/method_details_list.erb b/lib/puppet_x/puppetlabs/strings/yard/templates/default/puppetnamespace/html/method_details_list.erb index 8050727..b793a24 100644 --- a/lib/puppet_x/puppetlabs/strings/yard/templates/default/puppetnamespace/html/method_details_list.erb +++ b/lib/puppet_x/puppetlabs/strings/yard/templates/default/puppetnamespace/html/method_details_list.erb @@ -45,7 +45,7 @@

Parameters:

<% end %>