pages=$(ls -S -t cont/| grep html | grep -v index.html) #lists the actual content
#-S -t so that the files are roughly in time order
#index is excluded and appended at the end to make sure it gets processed last
pages="$pages index.html"
#clears the index
rm index
for page in $pages; do
#clears page and page.tmp
rm $page $page.tmp
#adds the header
cat src/header.html >> $page.tmp
#finds the [SETTITLE], but ignores \[SETTITLE], then filters out the [SETTITLE] part
#the head is to make it use the last one
title=$(cat cont/$page | grep '\[SETTITLE\]'| sed '/\\\[SETTITLE\]/d; s/\[SETTITLE\]//' | tail -n 1)
#does the same for the date
date=$(cat cont/$page | grep '\[SETDATE\]'| sed '/\\\[SETDATE\]/d; s/\[SETDATE\]//' | tail -n 1)
#replaces \[SETTITLE] with [SETTITLE], and removes lines with legitimate [SETTITLE]s in a temporary file
cat cont/$page | sed '/\\\[SETTITLE\]/bx; /\[SETTITLE\].*/d;:x s/\\\[SETTITLE\]/\[SETTITLE\]/' >> $page.tmp
#same for the date
cat $page.tmp | sed '/\\\[SETDATE\]/bx; /\[SETDATE\].*/d;:x s/\\\[SETDATE\]/\[SETDATE\]/' >> $page
#adds the index if its the homepage
if [ "$page" == "index.html" ]; then
cat index >> $page
rm index
fi
#adds the footer
cat src/footer.html >> $page
#replaces \[TITLE] with [TITLE] and [TITLE] with $title, "" is used so the $ still applies
#however that means "\\\\" becomes "\\" when passed to sed from bash, and finally interpreted as a literal \ by sed
cat $page | sed "/\\\\\[TITLE\]/bx; s/\[TITLE\]/$title/; :x s/\\\\\[TITLE\]/\[TITLE\]/" > $page.tmp
#same with date
cat $page.tmp | sed "/\\\\\[DATE\]/bx; s/\[DATE\]/$date/; :x s/\\\\\[DATE\]/\[DATE\]/" > $page
rm $page.tmp
#adds to the index
echo "[$title] $date" >> index
done