* broken, i'll squish this anyways
This commit is contained in:
parent
5851ccc104
commit
18083f0cf3
|
@ -7,14 +7,32 @@ function render() {
|
||||||
local -n ref=$1
|
local -n ref=$1
|
||||||
local tmp=$(mktemp)
|
local tmp=$(mktemp)
|
||||||
for key in ${!ref[@]}; do
|
for key in ${!ref[@]}; do
|
||||||
if [[ "${ref[$key]}" != "" ]]; then
|
if [[ "$key" == "_"* ]]; then # iter mode
|
||||||
|
local subtemplate=$(mktemp)
|
||||||
|
grep "start $key" -A99999 | grep "end $key" -B99999 > "$subtemplate"
|
||||||
|
local -n item_array=${ref[$key]}
|
||||||
|
echo 's/{{start '"$key"'}}.*{{end '"$key"'}}/{{'"$key"'}}/' >> "$tmp"
|
||||||
|
for (( i=0; i<${#item_array}; i++ )); do
|
||||||
|
nested_get item_array $i
|
||||||
|
for meow in ${!res[@]}; do
|
||||||
|
local -n nyaa=${res[$meow]}
|
||||||
|
# todo: unhtml_encode this?
|
||||||
|
local value="$(html_encode "$(render nyaa "$subtemplate")" | sed -E 's/\&/<2F>UwU<77>/g')"
|
||||||
|
echo 's/{{'"${res[$meow]}"'}}/'"$value"'/' >> "$tmp"
|
||||||
|
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo 's/\{\{'"$key"'\}\}/'"$value"'/g' >> "$tmp"
|
||||||
|
rm "$subtemplate"
|
||||||
|
elif [[ "${ref[$key]}" != "" ]]; then
|
||||||
local value="$(html_encode "${ref[$key]}" | sed -E 's/\&/<2F>UwU<77>/g')"
|
local value="$(html_encode "${ref[$key]}" | sed -E 's/\&/<2F>UwU<77>/g')"
|
||||||
echo 's/\{\{\.'"$key"'\}\}/'"$value"'/g' >> "$tmp"
|
echo 's/\{\{\.'"$key"'\}\}/'"$value"'/g' >> "$tmp"
|
||||||
else
|
else
|
||||||
echo 's/\{\{\.'"$key"'\}\}//g' >> "$tmp"
|
echo 's/\{\{\.'"$key"'\}\}//g' >> "$tmp"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
template="$(sed -E -f "$tmp" <<< "$template")"
|
|
||||||
|
template="$(tr '\n' $'\01' <<< "$template" | sed -E -f "$tmp" | tr $'\01' '\n')"
|
||||||
sed -E 's/<2F>UwU<77>/\&/g' <<< "$template"
|
sed -E 's/<2F>UwU<77>/\&/g' <<< "$template"
|
||||||
rm "$tmp"
|
rm "$tmp"
|
||||||
}
|
}
|
||||||
|
@ -25,10 +43,45 @@ function render_unsafe() {
|
||||||
local -n ref=$1
|
local -n ref=$1
|
||||||
local tmp=$(mktemp)
|
local tmp=$(mktemp)
|
||||||
for key in ${!ref[@]}; do
|
for key in ${!ref[@]}; do
|
||||||
local value="$(xxd -ps <<< "${ref[$key]}" | tr -d '\n' | sed -E 's/.{2}/\\x&/g')"
|
if [[ "$key" == "_"* ]]; then # iter mode
|
||||||
echo 's/\{\{\.'"$key"'\}\}/'"$value"'/g' >> "$tmp"
|
# grep "start _test" -A99999 | grep "end _test" -B99999
|
||||||
|
local -n item_array=${ref[$key]}
|
||||||
|
local value
|
||||||
|
for ((i = 0; i < ${#item_array[@]}; i++)); do
|
||||||
|
value+="$(xxd -ps <<< "${item_array[$i]}" | tr -d '\n' | sed -E 's/../\\x&/g')"
|
||||||
|
done
|
||||||
|
echo 's/\{\{'"$key"'\}\}/'"$value"'/g' >> "$tmp"
|
||||||
|
else
|
||||||
|
local value="$(xxd -ps <<< "${ref[$key]}" | tr -d '\n' | sed -E 's/../\\x&/g')"
|
||||||
|
echo 's/\{\{\.'"$key"'\}\}/'"$value"'/g' >> "$tmp"
|
||||||
done
|
done
|
||||||
|
|
||||||
sed -E -f "$tmp" <<< "$template"
|
sed -E -f "$tmp" <<< "$template"
|
||||||
rm "$tmp"
|
rm "$tmp"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# mmmm this should be a library because i am so much copying those later
|
||||||
|
# _nested_random
|
||||||
|
function _nested_random() {
|
||||||
|
dd if=/dev/urandom bs=1 count=16 status=none | xxd -p
|
||||||
|
}
|
||||||
|
|
||||||
|
# nested_declare(ref)
|
||||||
|
function nested_declare() {
|
||||||
|
declare -g -a $1
|
||||||
|
}
|
||||||
|
|
||||||
|
# nested_add(ref, array)
|
||||||
|
function nested_add() {
|
||||||
|
local nested_id=$(_nested_random)
|
||||||
|
declare -g -n _$nested_id=$2
|
||||||
|
local -n ref=$1
|
||||||
|
ref+=("$nested_id")
|
||||||
|
}
|
||||||
|
|
||||||
|
# nested_get(ref, i)
|
||||||
|
function nested_get() {
|
||||||
|
local -n ref=$1
|
||||||
|
declare -g -n res=_${ref[$2]}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue