Update stdlib and concat to 6.1.0 both
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / dirname.rb
index 40b300d..ae579e2 100644 (file)
@@ -1,18 +1,28 @@
+#
+# dirname.rb
+#
 module Puppet::Parser::Functions
-  newfunction(:dirname, :type => :rvalue, :doc => <<-EOS
-    Returns the dirname of a path.
-    EOS
-  ) do |arguments|
+  newfunction(:dirname, :type => :rvalue, :doc => <<-DOC
+    @summary
+      Returns the dirname of a path.
 
-    if arguments.size < 1 then
-      raise(Puppet::ParseError, "dirname(): No arguments given")
+    @return [String] the given path's dirname
+    DOC
+             ) do |arguments|
+
+    if arguments.empty?
+      raise(Puppet::ParseError, 'dirname(): No arguments given')
     end
-    if arguments.size > 1 then
+    if arguments.size > 1
       raise(Puppet::ParseError, "dirname(): Too many arguments given (#{arguments.size})")
     end
     unless arguments[0].is_a?(String)
       raise(Puppet::ParseError, 'dirname(): Requires string as argument')
     end
+    # undef is converted to an empty string ''
+    if arguments[0].empty?
+      raise(Puppet::ParseError, 'dirname(): Requires a non-empty string as argument')
+    end
 
     return File.dirname(arguments[0])
   end