Use template for emoji subs; write env_subst()
This commit is contained in:
parent
fef4d8f4bc
commit
89120ccb73
24
fedi2html.sh
24
fedi2html.sh
|
@ -80,6 +80,8 @@ POST_TEMPLATE='
|
||||||
'
|
'
|
||||||
|
|
||||||
|
|
||||||
|
EMOJI_TEMPLATE='<img class="emoji" src="$EMOJI_URL" alt="$EMOJI_SHORTCODE">'
|
||||||
|
|
||||||
replace_emojis() {
|
replace_emojis() {
|
||||||
local post_data="$1"
|
local post_data="$1"
|
||||||
local emojis="$(echo "$post_data" | jq -r '.emojis[]|(.url + "\t" + .shortcode)')"
|
local emojis="$(echo "$post_data" | jq -r '.emojis[]|(.url + "\t" + .shortcode)')"
|
||||||
|
@ -89,15 +91,25 @@ replace_emojis() {
|
||||||
cat > "$temp"
|
cat > "$temp"
|
||||||
|
|
||||||
for line in $emojis; do
|
for line in $emojis; do
|
||||||
local url="$(echo "$line" | awk '{print $1}')"
|
local EMOJI_URL="$(echo "$line" | awk '{print $1}')"
|
||||||
local shortcode="$(echo "$line" | awk '{print $2}')"
|
local EMOJI_SHORTCODE="$(echo "$line" | awk '{print $2}')"
|
||||||
sed -i "s%:${shortcode}:%<img class=\"emoji\" src=\"$url\" alt=\"${shortcode}\">%g" \
|
local value="$(env_subst "$EMOJI_TEMPLATE")"
|
||||||
"$temp"
|
sed -i "s%:${EMOJI_SHORTCODE}:%${value}%g" "$temp"
|
||||||
done
|
done
|
||||||
cat "$temp"
|
cat "$temp"
|
||||||
rm "$temp"
|
rm "$temp"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prep_template() {
|
||||||
|
local template="$1"
|
||||||
|
echo "$template" \
|
||||||
|
| sed 's%\"%\\\"%g'
|
||||||
|
}
|
||||||
|
|
||||||
|
env_subst() {
|
||||||
|
local template="$1"
|
||||||
|
eval "echo \"$(prep_template "$template")\""
|
||||||
|
}
|
||||||
|
|
||||||
render_post() {
|
render_post() {
|
||||||
local post_data="$1"
|
local post_data="$1"
|
||||||
|
@ -108,8 +120,6 @@ render_post() {
|
||||||
local POST_URL="$(echo "$post_data" | jq -r .url)"
|
local POST_URL="$(echo "$post_data" | jq -r .url)"
|
||||||
local POST_DATE="$(echo "$post_data" | jq -r .created_at)"
|
local POST_DATE="$(echo "$post_data" | jq -r .created_at)"
|
||||||
local POST_CONTENT="$(echo "$post_data" | jq -r .content | replace_emojis "$post_data")"
|
local POST_CONTENT="$(echo "$post_data" | jq -r .content | replace_emojis "$post_data")"
|
||||||
eval "echo \"$(echo "$POST_TEMPLATE" | sed 's%\"%\\\"%g')\""
|
env_subst "$POST_TEMPLATE"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Ŝarĝante…
Reference in New Issue