Table of Contents
                             
                        
                        string_mustache
                                Table of Contents
                            
                            Prototype: string_mustache(template_string, optional_data_container)
Return type: string
Description: Formats a Mustache string template into a string, using either the system datastate() or an explicitly provided data container.
The usual Mustache facilities like conditional evaluation and loops are available, see the example below.
Example:
body common control
{
      bundlesequence => { "config", "example" };
}
bundle agent config
{
  vars:
      "deserts" data => parsejson('{ "deserts": {
  "Africa": "Sahara",
  "Asia": "Gobi"
} }');
}
bundle agent example
{
  vars:
      # {{@}} is the current key during an iteration in 3.7 with Mustache
      "with_data_container" string => string_mustache("from container: deserts = {{%deserts}}
from container: {{#deserts}}The desert {{.}} is in {{@}}. {{/deserts}}", "config.deserts");
      # you can dump an entire data structure with {{%myvar}} in 3.7 with Mustache
      "with_system_state" string => string_mustache("from datastate(): deserts = {{%vars.config.deserts.deserts}}
from datastate(): {{#vars.config.deserts.deserts}}The desert {{.}} is in {{@}}. {{/vars.config.deserts.deserts}}"); # will use datastate()
  reports:
      "With an explicit data container: $(with_data_container)";
      "With the system datastate(): $(with_system_state)";
}
Output:
R: With an explicit data container: from container: deserts = {
  "Africa": "Sahara",
  "Asia": "Gobi"
}
from container: The desert Sahara is in Africa. The desert Gobi is in Asia. 
R: With the system datastate(): from datastate(): deserts = {
  "Africa": "Sahara",
  "Asia": "Gobi"
}
from datastate(): The desert Sahara is in Africa. The desert Gobi is in Asia. 
History: Introduced in CFEngine 3.7
See also: datastate(), readjson(), parsejson(), data.
