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 %>