diff options
author | Jeff McCune <jeff@puppetlabs.com> | 2011-08-08 16:58:14 -0700 |
---|---|---|
committer | Jeff McCune <jeff@puppetlabs.com> | 2011-08-08 16:58:40 -0700 |
commit | 33887f9be50c4fd94bbd08d7c00d9b3d97e29d21 (patch) | |
tree | b7c5b8cd3595b1db0a835f31e551f5baf6b2c0ed /lib/puppet/parser/functions/swapcase.rb | |
parent | e8fb6917d102d8a45d5682b79f33b1ac0d52d73b (diff) | |
parent | aa27fc76c7d5fa090ea1d47027856c3e70c6ae8f (diff) |
Merge branch 'issue/master/8797_puppetlabs-functions_merge'
Closes pull request #12
Reviewed-by: Jeff McCune
Verified all spec tests pass using rspec **/*_spec.rb
* issue/master/8797_puppetlabs-functions_merge: (164 commits)
* Moved kwalify to puppetlabs-kwalify project * Re-arranged tests in line with puppetlabs-stdlib
Prep for stdlib merge * Renamed load_yaml & load_json to parseyaml & parsejson * Renamed is_valid_* functions and remove the 'valid_'
Fix some ruby 1.9.2 issues.
(#3) Provide documentation for remaining functions.
(#3) Apply missing documentation to more functions.
Remove rand.
Some improvements to values_at tests.
(#1) provide some more detailed tests for a number of functions.
Removed date stub since this functinality is available in strftime anyway.
(#2) fix is_string finally so it also makes sure numbers return false.
(#2) unstub is_valid_domain_name
Added doc strings for first five functions
Removed join_with_prefix.
(#2) unstub is_valid_mac_address.
Allow sort for strings.
Count functionality overlaps with size - so removing it.
Removed crontab functions instead of unstubbing them.
Removed load_variables. load_yaml is sufficient to solve this problem on its own.
Remove is_valid_netmask instead of unstubbing. Doesn't seem like a sensible function on its own.
(#2) unstub is_numeric function.
...
Diffstat (limited to 'lib/puppet/parser/functions/swapcase.rb')
-rw-r--r-- | lib/puppet/parser/functions/swapcase.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/swapcase.rb b/lib/puppet/parser/functions/swapcase.rb new file mode 100644 index 0000000..b9e6632 --- /dev/null +++ b/lib/puppet/parser/functions/swapcase.rb @@ -0,0 +1,39 @@ +# +# swapcase.rb +# + +module Puppet::Parser::Functions + newfunction(:swapcase, :type => :rvalue, :doc => <<-EOS +This function will swap the existing case of a string. + +*Examples:* + + swapcase("aBcD") + +Would result in: "AbCd" + EOS + ) do |arguments| + + raise(Puppet::ParseError, "swapcase(): Wrong number of arguments " + + "given (#{arguments.size} for 1)") if arguments.size < 1 + + value = arguments[0] + klass = value.class + + unless [Array, String].include?(klass) + raise(Puppet::ParseError, 'swapcase(): Requires either ' + + 'array or string to work with') + end + + if value.is_a?(Array) + # Numbers in Puppet are often string-encoded which is troublesome ... + result = value.collect { |i| i.is_a?(String) ? i.swapcase : i } + else + result = value.swapcase + end + + return result + end +end + +# vim: set ts=2 sw=2 et : |