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.
Merge pull request redhat-openstack#255 from mckern/enhancement/maste…
…r/camelcasedembools (MODULES-905) Add bool2str() and camelcase() for string manipulation
- Loading branch information
Showing
4 changed files
with
121 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 : |
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,34 @@ | ||
#! /usr/bin/env ruby -S rspec | ||
require 'spec_helper' | ||
|
||
describe "the bool2str function" do | ||
let(:scope) { PuppetlabsSpec::PuppetInternals.scope } | ||
|
||
it "should exist" do | ||
Puppet::Parser::Functions.function("bool2str").should == "function_bool2str" | ||
end | ||
|
||
it "should raise a ParseError if there is less than 1 arguments" do | ||
lambda { scope.function_bool2str([]) }.should( raise_error(Puppet::ParseError)) | ||
end | ||
|
||
it "should convert true to 'true'" do | ||
result = scope.function_bool2str([true]) | ||
result.should(eq('true')) | ||
end | ||
|
||
it "should convert true to a string" do | ||
result = scope.function_bool2str([true]) | ||
result.class.should(eq(String)) | ||
end | ||
|
||
it "should convert false to 'false'" do | ||
result = scope.function_bool2str([false]) | ||
result.should(eq('false')) | ||
end | ||
|
||
it "should convert false to a string" do | ||
result = scope.function_bool2str([false]) | ||
result.class.should(eq(String)) | ||
end | ||
end |
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,24 @@ | ||
#! /usr/bin/env ruby -S rspec | ||
require 'spec_helper' | ||
|
||
describe "the camelcase function" do | ||
let(:scope) { PuppetlabsSpec::PuppetInternals.scope } | ||
|
||
it "should exist" do | ||
Puppet::Parser::Functions.function("camelcase").should == "function_camelcase" | ||
end | ||
|
||
it "should raise a ParseError if there is less than 1 arguments" do | ||
lambda { scope.function_camelcase([]) }.should( raise_error(Puppet::ParseError)) | ||
end | ||
|
||
it "should capitalize the beginning of a normal string" do | ||
result = scope.function_camelcase(["abc"]) | ||
result.should(eq("Abc")) | ||
end | ||
|
||
it "should camelcase an underscore-delimited string" do | ||
result = scope.function_camelcase(["aa_bb_cc"]) | ||
result.should(eq("AaBbCc")) | ||
end | ||
end |