Codebase list frei0r / 41eb454 web / bin / org-split-body-toc.sh
41eb454

Tree @41eb454 (Download .tar.gz)

org-split-body-toc.sh @41eb454raw · history · blame

#!/bin/sh
# 
# small shell script to collate together the web pages
# extracts the <body> part from the org-mode rendered HTML file
# then formats it as a template to be shown by the index.php
#
# March 2010 by Jaromil

if [ -z $1 ]; then
    echo "usage: org-split-body-toc.sh orgmode.html"
    echo "this tool splits an orgmode in two parts: <TOC> and <body>"
    echo "it also eliminates headers and footers."
    exit 1
fi

tmpfile="/tmp/org-split-body-toc-`date +%s`"
rm -f $tmpfile

orgfile=${1}

orgname=`echo $orgfile|cut -d. -f1`

cat $orgfile | \
    awk '
BEGIN       { body_found=0; title_found=0; }
/<body>/             { body_found=1; next; }
/^<h1 class="title">/ { title_found=1; next; }

{
if(body_found==1)
  if(title_found==1)
    print $0;
}

/^<p class="creator">/ { title_found=0; }
/^<\/body>/ { body_found=0; next; }
' > $tmpfile

# separate the TOC
echo "<div id=\"table-of-contents\">" > ${orgname}-toc.html
cat $tmpfile | \
    awk '
BEGIN { toc_found=0; div_count=0; }
/^<div id="table-of-contents">/ { toc_found=1; next; }
{ if(div_count>1) toc_found=0;
  if(toc_found==1) print $0;
}
/^<\/div>/ { div_count++; }
' >> ${orgname}-toc.html

# separate the BODY
cat $tmpfile | \
    awk '
BEGIN { div_count=0; }
{ if(div_count>1) print $0; }
/^<\/div>/ { div_count++; }
' > ${orgname}-body.html
echo "</div>" >> ${orgname}-body.html

# delete the temporary file
rm -f $tmpfile

echo "org-mode html $orgfile splitted in ${orgname}-toc.html and ${orgname}-body.html"