working version of website generator!
authorCurrell Berry <currellberry@gmail.com>
Tue, 26 May 2015 01:01:33 +0000 (19:01 -0600)
committerCurrell Berry <currellberry@gmail.com>
Tue, 26 May 2015 01:01:33 +0000 (19:01 -0600)
Makefile [new file with mode: 0644]
berryutils.py
col3template.html
compilesite.sh [new file with mode: 0644]
headertemplate.html
processor.py
sources/lang_comparison.lyx

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..d496143
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,9 @@
+#make file builds my site\r
+all: clean compile\r
+\r
+clean:\r
+       rm -Rf temp/*\r
+       rm -Rf generated/*\r
+\r
+compile:\r
+       ./compilesite.sh\r
index b739dfb..893a79e 100644 (file)
@@ -1,3 +1,5 @@
+import os, errno\r
+\r
 def spit(filename, data):\r
        with open(filename, 'w') as f:\r
                f.write(data)\r
@@ -6,3 +8,10 @@ def slurp(filename):
        with open(filename, 'rb') as f:\r
                return f.read()\r
 \r
+def mkdir_p(path):\r
+    try:\r
+        os.makedirs(path)\r
+    except OSError as exc: # Python >2.5\r
+        if exc.errno == errno.EEXIST and os.path.isdir(path):\r
+            pass\r
+        else: raise\r
index b8f222b..54386b5 100644 (file)
@@ -1,4 +1,4 @@
 <div id="col3">\r
-       <img src="images/picture_of_me_nl_small.png" height="200px"/>\r
+       <img src="/images/picture_of_me_nl_small.png" height="200px"/>\r
 </div>\r
 \r
diff --git a/compilesite.sh b/compilesite.sh
new file mode 100644 (file)
index 0000000..0c4a442
--- /dev/null
@@ -0,0 +1,62 @@
+#!/bin/sh
+#Currell Berry, 5/25/15
+#this script builds my website
+
+#1. source config.cf, which sets PYTHON environment variable
+. ./config.cfg
+
+echo using python $PYTHON
+
+#2. copy directory structure from sources folder 
+#   to temp folder and generated folder
+#   http://stackoverflow.com/questions/4073969/copy-folder-structure-sans-files-from-one-location-to-another
+cd sources && 
+find . -type d -exec mkdir -p -- ../temp/{} \; &&
+find . -type d -exec mkdir -p -- ../generated/{} \; &&
+cd ..;
+
+#3. convert lyx files to html using a. elyxer and b. processing.py
+LFILES=$(find sources -name '*.lyx')
+echo
+echo "Converting Lyx Files..."
+for f in $LFILES
+do
+       echo "Processing $f file..."
+
+       #make new filenames
+       processed1=$(echo $f | sed 's/.lyx/.html/' | sed 's/sources\//temp\//')
+       processed2=$(echo $processed1 | sed 's/temp\//generated\//')
+
+       #get modification str using git
+       modstr="$(git log -1 --format="%ai" $f)"
+       echo modification date is: $modstr
+
+       #run elyxer
+       elyxer.py $f $processed1
+
+       #generate the final html
+       ${PYTHON} ./processor.py $processed1 $processed2 -lm "$modstr"
+
+done
+
+#4. Process html sources
+#   remember, the html must have a "globalWrapper" div in it!
+HFILES=$(find sources -name '*.html')
+echo
+echo "Processing HTML Files..."
+for f in $HFILES
+do
+       echo "Processing $f file..."
+
+       #make new filenames
+       #we can bypass temp folders because we already have html
+       processed=$(echo $f | sed 's/sources\//generated\//')
+
+       #get modification str using git
+       modstr="$(git log -1 --format="%ai" $f)"
+       echo modification date is: $modstr
+
+       #generate the final html
+       ${PYTHON} ./processor.py $f $processed -lm "$modstr"
+done
+
index d1ef940..3aec343 100644 (file)
@@ -5,7 +5,7 @@
 <meta name="robots" content="all, index, follow" />\r
 <meta http-equiv="X-UA-Compatible" content="IE=7; IE=8" /> \r
 <link rel="shortcut icon" href="images/favicon.ico" />\r
-<link rel="stylesheet" href="styles.css" type="text/css" media="screen" />\r
+<link rel="stylesheet" href="/styles.css" type="text/css" media="screen" />\r
 <title>{{title}}</title>\r
 </head>\r
 <body>\r
index 38def0d..a667bee 100644 (file)
@@ -1,14 +1,28 @@
-import html5lib\r
-from io import StringIO, BytesIO\r
+#Currell Berry\r
+#5-25-2015\r
 from berryutils import *\r
 from bs4 import BeautifulSoup\r
-\r
-htmlfile = slurp("testfile2.html")\r
+import argparse\r
+import time\r
+import subprocess\r
+\r
+parser = argparse.ArgumentParser(description='transforms html sources generated by lyx to proper format for my website.')\r
+parser.add_argument('ifile', nargs=1, help='html file to process')\r
+parser.add_argument('ofile', nargs=1, help='filename to write to') \r
+parser.add_argument('-lm', nargs=1, help='last modified date', default=[''])\r
+\r
+args = parser.parse_args()\r
+ifile = args.ifile[0]\r
+ofile = args.ofile[0]\r
+lmdate = args.lm[0]\r
+print ifile\r
+print ofile\r
+\r
+htmlfile = slurp(ifile)\r
 soup = BeautifulSoup(htmlfile)\r
 \r
-#extract title and create date from html\r
+#extract title\r
 title = soup.title.string\r
-create_date_str = soup.find_all(attrs={"class","create-date"})[0].string\r
 \r
 incontents = soup.find(id="globalWrapper")\r
 incontents['id']='col2'\r
@@ -23,9 +37,18 @@ headertext = slurp("headertemplate.html").replace("{{title}}", title)
 col1text = slurp("col1template.html")\r
 col2text = incontents.prettify()\r
 col3text = slurp("col3template.html")\r
-footertext = slurp("footertemplate.html").replace("{{docgen_message}}","last modified" + create_date_str)\r
+\r
+lmstr = None\r
+if(lmdate != ""):\r
+       lmstr = "last modified: " + lmdate\r
+else:\r
+       #was getting weird timezone problems when using date directly from python\r
+       odate = subprocess.check_output(["date","--rfc-3339=seconds"])\r
+       lmstr = "generated: " + odate\r
+\r
+footertext = slurp("footertemplate.html").replace("{{docgen_message}}",lmstr)\r
 \r
 page = "\n".join([headertext,col1text,col2text,col3text,footertext])\r
 \r
-spit("ptest.html",page)\r
+spit(ofile,page)\r
 \r
index a1345f7..01a3ee5 100644 (file)
@@ -76,10 +76,6 @@ Comparison of Programming Languages
 melius cogitandi\r
 \end_layout\r
 \r
-\begin_layout Standard\r
-last modified: 05/25/15\r
-\end_layout\r
-\r
 \begin_layout Section\r
 Intro\r
 \end_layout\r