Small script to test all examples at once
xabru opened this issue · comments
xabru commented
#!/usr/bin/env bash
print_examples() {
json_example() {
cat <<END
{
"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{
"value": "New",
"onclick": "CreateNewDoc()"
},
{
"value": "Open",
"onclick": "OpenDoc()"
},
{
"value": "Close",
"onclick": "CloseDoc()"
}
]
}
}
}
END
}
:
declare select_example="${select_example:+}"
declare -a iarr_jj_examples=(
"getting_a_value"
"get_a_block_of_json"
"try_to_get_a_non__existent_key"
"get_the_raw_string_value"
"get_an_array_value_by_index"
"json_lines_1"
"json_lines_2"
"json_lines_3"
"json_lines_4"
"update_a_value"
"set_a_new_value"
"set_a_new_nested_value"
"replace_an_array_value_by_index"
"append_an_array"
"set_a_raw_block_of_json"
"start_new_json_document"
"delete_a_value"
"delete_an_array_value_by_index"
"delete_last_item_in_array"
"optimistically_update_a_value"
"pretty_printing"
"ugly_printing"
)
declare -A aarr_jj_examples=(
[getting_a_value]="json_example | jj menu.id"
[get_a_block_of_json]="json_example | jj menu.popup.menuitem"
[try_to_get_a_non__existent_key]="json_example | jj menu.popuppet"
[get_the_raw_string_value]="json_example | jj -r menu.popup"
[get_an_array_value_by_index]="json_example | jj menu.popup.menuitem.2"
[json_lines_1]="json_example | jj ..#"
[json_lines_2]="json_example | jj ..0"
[json_lines_3]="json_example | jj ..#.value"
[json_lines_4]="json_example | jj menu.popup.menuitem..#[value=Open]"
[update_a_value]="json_example | jj -v Test menu.popup.menuitem"
[set_a_new_value]="json_example | jj -v Value_Test Key_Test"
[set_a_new_nested_value]="json_example | jj -v Value_Test Key_Test.test_nested"
[replace_an_array_value_by_index]="json_example | jj -v Value_Test menu.popup.menuitem.1"
[append_an_array]="json_example | jj -v Value_Test menu.popup.menuitem.-1"
[set_a_raw_block_of_json]="json_example | jj -r -v ['Tom','Andy'] menu.popup.menuitem.0"
[start_new_json_document]="printf '' | jj -v 'Sam' name.first"
[delete_a_value]="json_example | jj -D menu.popup"
[delete_an_array_value_by_index]="json_example | jj -D menu.popup.menuitem.0"
[delete_last_item_in_array]="json_example | jj -D menu.popup.menuitem.-1"
[optimistically_update_a_value]="json_example | jj -v Tim -O menu.popup.menuitem.-1"
[pretty_printing]="json_example | jj -p menu.popup.menuitem"
[ugly_printing]="json_example | jj -u menu.popup.menuitem"
)
:
json_example | bat -P --language json
for select_example in "${iarr_jj_examples[@]}"; do
: "${select_example//_/ }"
printf "\e[1;93m%s\e[0m\n\n" "${_^}"
printf "\e[91m\$_ %s\e[0m\n\n" "${aarr_jj_examples["${select_example}"]}"
time eval "${aarr_jj_examples["${select_example}"]}"
printf "\n\n"
done
}
print_examples