]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/stdlib/lib/puppet/parser/functions/member.rb
upgrade to concat 2.0.0
[dsa-puppet.git] / modules / stdlib / lib / puppet / parser / functions / member.rb
1 #
2 # member.rb
3 #
4
5 # TODO(Krzysztof Wilczynski): We need to add support for regular expression ...
6 # TODO(Krzysztof Wilczynski): Support for strings and hashes too ...
7
8 module Puppet::Parser::Functions
9   newfunction(:member, :type => :rvalue, :doc => <<-EOS
10 This function determines if a variable is a member of an array.
11
12 *Examples:*
13
14     member(['a','b'], 'b')
15
16 Would return: true
17
18     member(['a','b'], 'c')
19
20 Would return: false
21     EOS
22   ) do |arguments|
23
24     raise(Puppet::ParseError, "member(): Wrong number of arguments " +
25       "given (#{arguments.size} for 2)") if arguments.size < 2
26
27     array = arguments[0]
28
29     unless array.is_a?(Array)
30       raise(Puppet::ParseError, 'member(): Requires array to work with')
31     end
32
33     item = arguments[1]
34
35     raise(Puppet::ParseError, 'member(): You must provide item ' +
36       'to search for within array given') if item.empty?
37
38     result = array.include?(item)
39
40     return result
41   end
42 end
43
44 # vim: set ts=2 sw=2 et :