Merge pull request #312 from yawor/struct_val_default

Added ability to return default value from struct_val() if keyword is not present
This commit is contained in:
Revar Desmera 2020-11-16 15:28:14 -08:00 committed by GitHub
commit 8d67ce6df7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 4 deletions

View file

@ -64,16 +64,17 @@ function struct_remove(struct, keyword) =
// Function: struct_val() // Function: struct_val()
// Usage: // Usage:
// struct_val(struct,keyword) // struct_val(struct, keyword, default)
// Description: // Description:
// Returns the value for the specified keyword in the structure, or undef if the keyword is not present // Returns the value for the specified keyword in the structure, or default value if the keyword is not present
// Arguments: // Arguments:
// struct = input structure // struct = input structure
// keyword = keyword whose value to return // keyword = keyword whose value to return
function struct_val(struct,keyword) = // default = default value to return if keyword is not present, defaults to undef
function struct_val(struct, keyword, default=undef) =
assert(is_def(keyword),"keyword is missing") assert(is_def(keyword),"keyword is missing")
let(ind = search([keyword],struct)[0]) let(ind = search([keyword],struct)[0])
ind == [] ? undef : struct[ind][1]; ind == [] ? default : struct[ind][1];
// Function: struct_keys() // Function: struct_keys()

View file

@ -27,6 +27,9 @@ module test_struct_val() {
assert(struct_val(st,"Foo") == 91); assert(struct_val(st,"Foo") == 91);
assert(struct_val(st,"Bar") == 28); assert(struct_val(st,"Bar") == 28);
assert(struct_val(st,"Baz") == 9); assert(struct_val(st,"Baz") == 9);
assert(struct_val(st,"Baz",5) == 9);
assert(struct_val(st,"Qux") == undef);
assert(struct_val(st,"Qux",5) == 5);
} }
test_struct_val(); test_struct_val();