Charles N Wyble
fda3d3ea40
git-subtree-dir: vendor/git.knownelement.com/ExternalVendorCode/mo git-subtree-split: 7e86c1a5f525f352983077d743c2ce2f5d75f4fa
51 lines
1.3 KiB
Bash
Executable File
51 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Example for how #29 can get implemented.
|
|
|
|
cd "$(dirname "$0")" # Go to the script's directory
|
|
|
|
foreach() {
|
|
# Trying to use unique names
|
|
local foreachSourceName foreachIterator foreachEvalString foreachContent
|
|
|
|
foreachContent=$(cat)
|
|
|
|
local x
|
|
x=("${@}")
|
|
if [[ "$2" != "as" && "$2" != "in" ]]; then
|
|
echo "Invalid foreach - bad format."
|
|
elif [[ "$(declare -p "$1")" != "declare -"[aA]* ]]; then
|
|
echo "$1 is not an array"
|
|
else
|
|
foreachSourceName="${1}[@]"
|
|
|
|
for foreachIterator in "${!foreachSourceName}"; do
|
|
foreachEvalString=$(declare -p "$foreachIterator")
|
|
foreachEvalString="declare -A $3=${foreachEvalString#*=}"
|
|
eval "$foreachEvalString"
|
|
echo "$foreachContent" | mo
|
|
done
|
|
fi
|
|
}
|
|
|
|
|
|
# The links are associative arrays
|
|
declare -A resque hub rip
|
|
resque=([name]=Resque [url]=http://example.com/resque)
|
|
hub=([name]=Hub [url]=http://example.com/hub)
|
|
rip=([name]=Rip [url]=http://example.com/rip)
|
|
|
|
# This is a list of the link arrays
|
|
links=(resque hub rip)
|
|
|
|
# Source mo in order to work with arrays
|
|
. ../mo
|
|
|
|
# Process the template
|
|
cat <<EOF | mo --allow-function-arguments
|
|
Here are your links:
|
|
{{#foreach 'links' 'as' 'link'}}
|
|
* [{{link.name}}]({{link.url}})
|
|
{{/foreach 'links' 'as' 'link'}}
|
|
|
|
EOF
|