Support for recursively rendering a post’s reponses
This commit is contained in:
parent
af146f65e4
commit
14126f301e
41
fedi2html.sh
41
fedi2html.sh
|
@ -67,10 +67,6 @@ fetch_post() {
|
|||
|
||||
|
||||
POST_TEMPLATE='
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<link rel="stylesheet" href="comments.css" type="text/css">
|
||||
<article class="comment">
|
||||
<a class="user" href="$ACCOUNT_URL">
|
||||
<img class="avatar" src="$ACCOUNT_AVATAR">
|
||||
|
@ -86,9 +82,11 @@ POST_TEMPLATE='
|
|||
<div class="attachments">
|
||||
$POST_ATTACHMENTS
|
||||
</div>
|
||||
<b>$tree_level</b>¤
|
||||
<div class="responses">
|
||||
$POST_RESPONSES
|
||||
</div>
|
||||
</article>
|
||||
</body>
|
||||
</html>
|
||||
'
|
||||
|
||||
|
||||
|
@ -191,16 +189,43 @@ env_subst() {
|
|||
|
||||
# Given a note’s JSON, render it as HTML.
|
||||
# The most important part of the script!
|
||||
# render_post $post_data
|
||||
# render_post $post_data $context_data $tree_level
|
||||
render_post() {
|
||||
local post_data="$1"
|
||||
local context_data="$2"
|
||||
local POST_TREE_LEVEL="$3"
|
||||
|
||||
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_NAME="$(echo "$post_data" | jq -r .account.display_name | replace_emojis "$(echo "$post_data" | jq -r '.account')")"
|
||||
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")"
|
||||
local POST_ATTACHMENTS="$(media_attachments "$post_data")"
|
||||
local POST_RESPONSES="$(render_context "$post_data" "$context_data" "$tree_level")"
|
||||
env_subst "$POST_TEMPLATE"
|
||||
}
|
||||
|
||||
|
||||
# Render a post’s responses one-by-one and recursively.
|
||||
# Each branch of the response tree will be rendered completely before proceeding
|
||||
# to the next.
|
||||
# render_context $post_data $context_data $tree_level
|
||||
render_context() {
|
||||
|
||||
local post_data="$1"
|
||||
local context_data="$2"
|
||||
local level="$3"
|
||||
if test -z "$level"; then level=0; fi
|
||||
|
||||
local id="$(echo "$post_data" | jq -r '.id')"
|
||||
local responses="$(echo "$context_data" | jq -cr '.descendants[]' | grep "in_reply_to_id.*$id")"
|
||||
local IFS="
|
||||
"
|
||||
|
||||
for response in $responses; do
|
||||
render_post "$response" "$context_data" "$(expr "$level" + 1)"
|
||||
done
|
||||
}
|
||||
|
||||
|
|
Ŝarĝante…
Reference in New Issue