Object Functions¶
fn.is_object: Return true or false if the parameter is an object or not.
fn.object_keys: Given an object and additional optional parameter, return the list of keys that match the parameter value, or all the keys if no parameter value is given.
Example object:
{
"input": {
"object": {
"boolean_1": true,
"boolean_2": false,
"boolean_3": true,
"string_1": "1",
"string_1_dup": "1",
"string_2": "2",
"integer_1": 1,
"integer_1_dup": 1,
"integer_2": 2
}
}
Examples:
Example |
Output |
---|---|
{{ fn.object_keys input.object,true }}
{{fn.object_keys input.object,"1"}}
{{fn.object_keys input.object,1}}
{{fn.object_keys input.object}}
|
["boolean_1","boolean_3"]
["string_1","string_1_dup"]
["integer_1","integer_1_dup"]
["boolean_1","boolean_2",
"boolean_3","string_1",
"string_1_dup","string_2",
"integer_1","integer_1_dup",
"integer_2"]
|
fn.object_empty: Returns and empty object
Example:
Example |
Output |
---|---|
{{ fn.object_empty }}
|
{}
|
fn.object_update - Given an existing object and a key-value pair, updates and returns the given object with the key and value.
If the key dows not exist, the pair is added.
If the key exists, the value is updated.
Examples:
Example |
Output |
---|---|
my_object: { "existing_key": "some_value" }
function call: {{ fn.object_update "key","1234",
input.my_object }}
|
{ "existing_key": "some_value",
"key": "1234" }
|
my_object: { "key": "some_value" }
function call: {{ fn.object_update "key","1234",
input.my_object }}
|
{ "key": "1234" }
|
fn.object_compare_specific:
This macro can for example be used to check previous and input context differences, providing a way to skip long updates on models if the comparison is true.
Note
If we have fields that do not exist on the left or right side, these will be ignored/skipped and the result will be true.
Given:
a list of fields we need to test for
a left object (dictionary) to compare against the right object
a right object (dictionary) that is compared with left object
a boolean flag: “true” to ignore nulls or blanks in the objects The flag defaults to False if any value other than ‘true’ is entered
Return:
A dictionary with the result of the comparison. If the comparison is false, return the Field the comparison failed on.
Examples:
Given the same example input below, the output of the two examples below is respectively
"result": False
or"result":True
depending on the final input parameter: whether empty and blank fields should not or should be ignored.input:
context = { "pwf": { "left_object": { "City": "Bellville", "FirstName": "Paul", "LastName": "Smith", "Department": None, "Age": "" }, "right_object": { "City": "Bellville", "FirstName": "Paul", "LastName": "Smith", "Department": None, "Age": "20" }, "field_list": [ "City", "FirstName", "LastName", "DoesNotExist", "Age", "Department" ] } } 1. command (don't ignore nulls or blanks): :: {{ fn.object_compare_specific pwf.field_list, pwf.left_object, pwf.right_object, false }} output: :: { "right_object": { "Department": None, "City": "Bellville", "Age": "20", "FirstName": "Paul", "LastName": "Kruger" }, "field_list_to_compare": [ "City", "FirstName", "LastName", "DoesNotExist", "Age", "Department" ], "ignore_null_and_blank": False, "left_object": { "Department": None, "City": "Bellville", "Age": "", "FirstName": "Paul", "LastName": "Kruger" }, "result": False, "field_match_results": [ { "field": "City", "left_value": "Bellville", "match": True, "right_value": "Bellville" }, { "field": "FirstName", "left_value": "Paul", "match": True, "right_value": "Paul" }, { "field": "LastName", "left_value": "Kruger", "match": True, "right_value": "Kruger" }, { "field": "DoesNotExist", "match": "Field not found, skip" }, { "field": "Age", "left_value": "", "match": False, "right_value": "20" }, { "field": "Department", "left_value": None, "match": True, "right_value": None } ] } 2. command (ignore nulls or blanks): :: {{ fn.object_compare_specific pwf.field_list, pwf.left_object, pwf.right_object, true }} output: :: { "right_object": { "Department": None, "City": "Bellville", "Age": "20", "FirstName": "Paul", "LastName": "Kruger" }, "field_list_to_compare": [ "City", "FirstName", "LastName", "DoesNotExist", "Age", "Department" ], "ignore_null_and_blank": True, "left_object": { "Department": None, "City": "Bellville", "Age": "", "FirstName": "Paul", "LastName": "Kruger" }, "result": True, "field_match_results": [ { "field": "City", "left_value": "Bellville", "match": True, "right_value": "Bellville" }, { "field": "FirstName", "left_value": "Paul", "match": True, "right_value": "Paul" }, { "field": "LastName", "left_value": "Kruger", "match": True, "right_value": "Kruger" }, { "field": "DoesNotExist", "match": "Field not found, skip" }, { "field": "Age", "match": "Field null or blank, skip" }, { "field": "Department", "match": "Field null or blank, skip" } ] }