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' |