forked from redhat-openstack/openstack-puppet-modules
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
(MODULES-905) Add bool2str() and camelcase() for string manipulation
Python likes to have its constants Capitalized, and the capitalize function only understands strings... so I shave a yak. bool2str will convert a boolean to its equivalent string value, and camelcase extends on uppercase & downcase to convert an underscore delimited string into a camelcased string.
- Loading branch information
Showing
2 changed files
with
63 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
# | ||
# bool2str.rb | ||
# | ||
|
||
module Puppet::Parser::Functions | ||
newfunction(:bool2str, :type => :rvalue, :doc => <<-EOS | ||
Converts a boolean to a string. | ||
Requires a single boolean or string as an input. | ||
EOS | ||
) do |arguments| | ||
|
||
raise(Puppet::ParseError, "bool2str(): Wrong number of arguments " + | ||
"given (#{arguments.size} for 1)") if arguments.size < 1 | ||
|
||
value = arguments[0] | ||
klass = value.class | ||
|
||
# We can have either true or false, or string which resembles boolean ... | ||
unless [FalseClass, TrueClass, String].include?(klass) | ||
raise(Puppet::ParseError, 'bool2str(): Requires either ' + | ||
'boolean or string to work with') | ||
end | ||
|
||
result = value.is_a?(String) ? value : value.to_s | ||
|
||
return result | ||
end | ||
end | ||
|
||
# vim: set ts=2 sw=2 et : |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# | ||
# camelcase.rb | ||
# | ||
|
||
module Puppet::Parser::Functions | ||
newfunction(:camelcase, :type => :rvalue, :doc => <<-EOS | ||
Converts the case of a string or all strings in an array to camel case. | ||
EOS | ||
) do |arguments| | ||
|
||
raise(Puppet::ParseError, "camelcase(): 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, 'camelcase(): 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.split('_').map{|e| e.capitalize}.join : i } | ||
else | ||
result = value.split('_').map{|e| e.capitalize}.join | ||
end | ||
|
||
return result | ||
end | ||
end | ||
|
||
# vim: set ts=2 sw=2 et : |