commit e78889e834ae8b58f848203ad77730ddf8f1c1c7
parent ac94e0010ade402002aeda5eccdb90690a537ae8
Author: St John Karp <contact@stjo.hn>
Date: Sun, 29 Aug 2021 13:42:15 -0400
Integrate splitting/joining Markdown headers into pipe block
This maybe makes the code a little less easy to follow, but it
avoids storing and then echoing whole Markdown files in variables.
It's also fewer commands, so I'm hoping it will be a little more
efficient.
Diffstat:
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/squeeze.sh b/squeeze.sh
@@ -21,20 +21,20 @@ find "$SOURCE_PATH" -type f -name "*.md" |
while IFS= read -r file ; do
echo "$file"
- # Get everything after the metadata.
+ # Determine if this file has any metadata at the start.
+ # Metadata are in the format Key: value, so it's easy to detect.
if head -n 1 "$SOURCE_PATH/$file" | grep -q "^[A-Za-z]*: " ; then
- HEADERS="$(sed '/^$/q' "$SOURCE_PATH/$file")"
- MARKDOWN="$(sed '1,/^$/d' "$SOURCE_PATH/$file")"
+ HEADERS=1
else
- HEADERS=""
- MARKDOWN="$(cat "$SOURCE_PATH/$file")"
+ HEADERS=0
fi
- printf '%s' "$MARKDOWN" |
+ # Get everything after the metadata.
+ ([ "$HEADERS" -eq 1 ] && sed '1,/^$/d' || cat) < "$SOURCE_PATH/$file" |
# Convert Markdown to HTML.
markdown_py --extension footnotes --extension md_in_html --extension smarty --quiet --output_format xhtml |
# Recombine with the metadata and hand it to Prolog.
- ([ ! -z "$HEADERS" ] && printf '%s\n\n' "$HEADERS" ; cat) |
+ ([ "$HEADERS" -eq 1 ] && sed '/^$/q' "$SOURCE_PATH/$file" ; cat) |
swipl --traditional --quiet -l parse_entry.pl -g "consult('$SITE_PATH/site.pl'), generate_entry." |
# Unwrap block-level elements that have erroneously been wrapped in <p> tags.
sed 's|<p><details|<details|g' |