💾 Archived View for midnight.pub › replies › 515 captured on 2022-03-01 at 17:36:40. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-12-03)

-=-=-=-=-=-=-

< A little experiment

Parent

~pink2ds

#!/bin/sh
echo "m4_include(website.m4)
m4_define([__title], [])
m4_define([__description], [])
m4_include(article-header.html)
<section>"
pandoc "$1"
echo "</section>
m4_include(footer.html)"

Write a reply

Replies

~starbreaker wrote (thread):

Thanks. I'm actually embarrassed right now because I think I should have thought of that myself. And if I use printf instead of echo I can pass in the title and description as arguments along with the filename. Then again echo would probably work fine, too, but I'm used to printf because of my feedgen script.

I use this to generate Atom feeds from a tab-delimited file. Though the usage function needs updating.

#!/bin/sh -e

main() {
	test -n "$1" || usage
	test -n "$2" || usage

	url="$1"
	head="$2"
	entries="$3"

	feed_start "$head"
	process_entries "$url" "$entries"
	feed_end ""
}

usage() {
	echo "usage:\n\t${0##*/} <header file> <entries file>" >&2
	echo "\tHeader file is tab-delimited: title, subtitle, link, name, email." >&2
	echo "\tEntries file is tab-delimited: title, link, id, updated, summary." >&2
	echo "\tPlease note that entries file will be read in reverse order." >&2
	exit 1
}

feed_start() {
	title=`cut -f 1 ${1}`
	subtitle=`cut -f 2 ${1}`
	link=`cut -f 3 ${1}`
	updated=`date "+%Y-%m-%dT%H:%M:%S.000-05:00"`
	name=`cut -f 4 ${1}`
	email=`cut -f 5 ${1}`

	printf '<?xml version="1.0" encoding="utf-8"?>\n'
	printf '<feed xmlns="http://www.w3.org/2005/Atom">\n'
	printf '\t<title>%s</title>\n' "$title"
	printf '\t<subtitle>%s</subtitle>\n' "$subtitle"
	printf '\t<link href="%s"/>\n' "$link"
	printf '\t<updated>%s</updated>\n' "$updated"
	printf '\t<author>\n'
	printf '\t\t<name>%s</name>\n' "$name"
	printf '\t\t<email>%s</email>\n' "$email"
	printf '\t</author>\n'
	printf '\t<id>%s</id>\n' "$link"
}

process_entries() {
	url=$1
	while IFS= read -r line
	do
		write_entry "$url" "$line"
	done < $2
}

write_entry() {
	url=$1
	title=`echo "$2" | cut -f 3`
	link=`echo "$2" | cut -f 2`
	updated=`echo "$2" | cut -f 1`
	summary=`echo "$2" | cut -f 4`
	
	printf '\t<entry>\n'
	printf '\t\t<title>%s</title>\n' "$title"
	printf '\t\t<link rel="alternate" href="%s%s"/>\n' "$url" "$link"
	printf '\t\t<id>%s%s</id>\n' "$url" "$link"
	printf '\t\t<updated>%sT23:58:00.000-0500</updated>\n' "$updated"
	printf '\t\t<summary>%s</summary>\n' "$summary"
	printf '\t</entry>\n'
}

feed_end() {
	printf '</feed>\n'
}

main "$@"