upgrade to stdlib 4.6.1
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / basename.rb
1 module Puppet::Parser::Functions
2   newfunction(:basename, :type => :rvalue, :doc => <<-EOS
3     Strips directory (and optional suffix) from a filename
4     EOS
5   ) do |arguments|
6
7     if arguments.size < 1 then
8       raise(Puppet::ParseError, "basename(): No arguments given")
9     elsif arguments.size > 2 then
10       raise(Puppet::ParseError, "basename(): Too many arguments given (#{arguments.size})")
11     else
12
13       unless arguments[0].is_a?(String)
14         raise(Puppet::ParseError, 'basename(): Requires string as first argument')
15       end
16
17       if arguments.size == 1 then
18         rv = File.basename(arguments[0])
19       elsif arguments.size == 2 then
20
21         unless arguments[1].is_a?(String)
22           raise(Puppet::ParseError, 'basename(): Requires string as second argument')
23         end
24
25         rv = File.basename(arguments[0], arguments[1])
26       end
27
28     end
29
30     return rv
31   end
32 end
33
34 # vim: set ts=2 sw=2 et :