Macro Function

  • fn.evaluate: Evaluate the string using the macro interpreter.

    The string can be a macro and can also contain macro names to be evaluated.

    The purpose of the function is so that we can save data as a macro and then evaluate it when we read it again.

    For example, we may store default values in a data model (e.g. SiteDefaultsDoc) that may also refer to existing macros. An attribute of the model - with name: defaulthppt can for example have the value (The macro evaluates to a site name):

    Site-{{macro.SITENAME}}
    

    Then, a workflow Configuration Template at a Site can be a set to a value that references the model and that uses fn.evaluate:

    "defaulthppt": "{{ fn.evaluate data.SiteDefaultsDoc.defaulthppt }}",
    

    Not:

    "defaulthppt": "Site-{{macro.SITENAME}}",
    

The tables below provide further examples.

Where self.x specifies an attribute of a model, with the value:

{# data.Countries.iso_country_code | country_name:'South Africa' #}
Example Output

Then:

{# fn.evaluate self.x #}
['ZAF']

Where MACRO1 is:

{{ data.Countries.emergency_access_prefix | iso_country_code:FRA }}

Where self.x is:

{# data.Countries.iso_country_code | emergency_access_prefix:macro.MACRO1 #}
Example Output

Then:

{# fn.evaluate self.x #}

Codes with same prefix as FRA:

['DNK','HKG',
 'FRA','DEU',
 'IND','ITA',
 'NLD','NZL',
 'SAU','ESP',
 'SWE','ZAF',
 'CHE','TUR']