'
replace_emojis() {
local post_data="$1"
local emojis="$2"
# So, this function is recusive; in hindsight, it didn’t have to be. oh well!
if test -n "$post_data" -a -z "$emojis"; then
# Init case; start subsitutions in next level of recursion
replace_emojis \
"" \
"$(echo "$post_data" \
| jq -r '.emojis[]|(.url + "\t" + .shortcode)')"
elif test -n "$emojis"; then
# Substitute the current emoji (first line of $emojis)
local url="$(echo "$emojis" | head -1 | awk '{print $1}')"
local shortcode="$(echo "$emojis" | head -1 | awk '{print $2}')"
sed "s%:${shortcode}:%%g" \
| replace_emojis \
"" \
"$(echo "$emojis" | tail +2)"
else
# End-case; $emojis is empty, so our job is done.
# Just print the results.
cat
fi
}
render_post() {
local post_data="$1"
local ACCOUNT_URL="$(echo "$post_data" | jq -r .account.url)"
local ACCOUNT_ID="$(echo "$post_data" | jq -r .account.fqn)"
local ACCOUNT_NAME="$(echo "$post_data" | jq -r .account.display_name | replace_emojis "$post_data")"
local ACCOUNT_AVATAR="$(echo "$post_data" | jq -r .account.avatar)"
local POST_URL="$(echo "$post_data" | jq -r .url)"
local POST_DATE="$(echo "$post_data" | jq -r .created_at)"
local POST_CONTENT="$(echo "$post_data" | jq -r .content | replace_emojis "$post_data")"
eval "echo \"$(echo "$POST_TEMPLATE" | sed 's%\"%\\\"%g')\""
}