Update stdlib
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / is_string.rb
index f5bef04..0ed6aec 100644 (file)
@@ -8,12 +8,14 @@ Returns true if the variable passed to this function is a string.
     EOS
   ) do |arguments|
 
-    raise(Puppet::ParseError, "is_string(): Wrong number of arguments " +
-      "given (#{arguments.size} for 1)") if arguments.size < 1
+    function_deprecation([:is_string, 'This method is deprecated, please use the stdlib validate_legacy function, with Stdlib::Compat::String. There is further documentation for validate_legacy function in the README.'])
+
+    raise(Puppet::ParseError, "is_string(): Wrong number of arguments given (#{arguments.size} for 1)") if arguments.size < 1
 
     type = arguments[0]
 
-    result = type.is_a?(String)
+    # when called through the v4 API shim, undef gets translated to nil
+    result = type.is_a?(String) || type.nil?
 
     if result and (type == type.to_f.to_s or type == type.to_i.to_s) then
       return false