ansi colors
This commit is contained in:
Executable
+59
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env miaou-bash
|
||||
|
||||
PREFIX_NESTED="__nested__"
|
||||
INSPECT_SIMPLE='-> '
|
||||
INSPECT_NESTED='=> '
|
||||
INSPECT_END='~~~~'
|
||||
|
||||
function array_new {
|
||||
ref_name="$1"
|
||||
shift
|
||||
|
||||
[[ ${1:-} == -- ]] && shift
|
||||
[[ -v nested_count ]] && ((nested_count++)) || nested_count=1
|
||||
nested_name="${PREFIX_NESTED}$nested_count"
|
||||
declare -ga "$nested_name"
|
||||
declare -gn "$ref_name"="$nested_name"
|
||||
local -n internal="$nested_name"
|
||||
internal+=("$@")
|
||||
}
|
||||
|
||||
function array_inspect {
|
||||
local ref prefix i
|
||||
declare -n ref="$1"
|
||||
prefix="${2:-}"
|
||||
echo "${prefix}array '$1' contains ${#ref[@]} elements"
|
||||
for i in "${ref[@]}"; do
|
||||
if [[ -R $i ]]; then
|
||||
array_inspect "$i" "${prefix}${INSPECT_NESTED}"
|
||||
else
|
||||
echo "${prefix}${INSPECT_SIMPLE}${i}"
|
||||
fi
|
||||
done
|
||||
echo "${prefix}${INSPECT_END}"
|
||||
}
|
||||
|
||||
# initialization
|
||||
array_new mine0
|
||||
array_new mine1 -- 'Albert Dupontel' 20
|
||||
array_new mine2 -- 'Bob Sinclar' 24
|
||||
array_new mine3 -- 'Conrad Ademayor' 68 true
|
||||
array_new nested -- mine1 mine2 mine3
|
||||
array_inspect nested
|
||||
|
||||
# change values
|
||||
mine1[1]=$((mine1[1] - 2))
|
||||
mine2[2]=false
|
||||
mine3+=('UK')
|
||||
array_inspect nested
|
||||
|
||||
# nested twice
|
||||
declare -n other="${nested[1]:?}" # ':?' fix shellcheck issue
|
||||
array_inspect other
|
||||
array_new mine4 'Darryl' 30
|
||||
other+=(mine4)
|
||||
array_inspect nested
|
||||
|
||||
# CAN'T PREVENT LOOP!
|
||||
# other+=(nested)
|
||||
# array_inspect nested
|
||||
Reference in New Issue
Block a user