CFEngine 3.6: new text manipulation functions
  2013-11-04

The next 3.6 release of CFEngine will offer some text manipulation functions. Their names are explicit enough, but the examples below will make their purposes crystal clear.

  • strlen()
  • upcase()
  • downcase()
  • head()
  • tail()

Examples

# This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 2.0 France License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/2.0/fr/
# or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.


body common control
{
        bundlesequence => {
                "text_functions"
        };
}

bundle agent text_functions
{
  vars:
    "banana_phone"    string  =>  "RING ring ring ring ring ring ring banana phone";

    "banana_length"   int     =>  strlen("$(banana_phone)");
    "banana_upcase"   string  =>  upcase("$(banana_phone)");
    "banana_downcase" string  =>  downcase("$(banana_phone)");
    "banana_reversed" string  =>  reversestring("$(banana_phone)");
    "banana_head"     string  =>  head("$(banana_phone)", 9);
    "banana_tail"     string  =>  tail("$(banana_phone)", 12);

  reports:

    "Test string        - $(banana_phone)";
    "Length             - $(banana_length)";
    "Upper case         - $(banana_upcase)";
    "Lower case         - $(banana_downcase)";
    "Reversed           - $(banana_reversed)";
    "First 9 characters - $(banana_head)";
    "Last 12 characters - $(banana_tail)";
}

Output was stripped for lisibility:

$ cf-agent -f /home/loic/.cfagent/inputs/text_manipulation.cf
R: Test string        - RING ring ring ring ring ring ring banana phone
R: Length             - 47
R: Upper case         - RING RING RING RING RING RING RING BANANA PHONE
R: Lower case         - ring ring ring ring ring ring ring banana phone
R: Reversed           - enohp ananab gnir gnir gnir gnir gnir gnir GNIR
R: First 9 characters - RING ring
R: Last 12 characters - banana phone