summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org/madore/damlengine/DamlEngine.java44
-rw-r--r--org/madore/damlengine/TodoDamlElement.java5
-rw-r--r--org/madore/damlengine/WeblogDatabaseConnection.java36
-rw-r--r--org/madore/damlengine/WeblogIndexSelect.java3
-rw-r--r--org/madore/damlengine/WeblogSelect.java3
-rw-r--r--org/madore/damlengine/included.css115
-rw-r--r--org/madore/damlengine/included.js109
-rw-r--r--org/madore/damlengine/weblog-cat-template.daml66
-rw-r--r--org/madore/damlengine/weblog-index-template.daml60
-rw-r--r--org/madore/damlengine/weblog-month-template.daml231
-rw-r--r--org/madore/damlengine/weblog-recent-template.daml84
-rw-r--r--org/madore/damlengine/weblog-single-template.daml50
12 files changed, 79 insertions, 727 deletions
diff --git a/org/madore/damlengine/DamlEngine.java b/org/madore/damlengine/DamlEngine.java
index 77fbf7f..f708d81 100644
--- a/org/madore/damlengine/DamlEngine.java
+++ b/org/madore/damlengine/DamlEngine.java
@@ -3,6 +3,7 @@ package org.madore.damlengine;
import java.util.MissingResourceException;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
+import java.util.Properties;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
@@ -11,6 +12,7 @@ import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
import java.io.PrintStream;
+import java.io.FileNotFoundException;
import javax.xml.XMLConstants;
import javax.xml.namespace.NamespaceContext;
import org.w3c.dom.*;
@@ -148,9 +150,47 @@ public final class DamlEngine {
fullProcess(in, out, null);
}
+ public static Properties appProps;
+ public static String basePath;
+ public static String templatePath;
+
public static void main(String[] args)
throws Exception {
+ appProps = new Properties();
+ String appPropsFile = null;
+ if ( System.getenv("DAMLENGINE_PROPERTIES_PATH") != null )
+ appPropsFile = System.getenv("DAMLENGINE_PROPERTIES_PATH");
+ if ( appPropsFile == null ) {
+ if ( System.getProperty("user.home") != null )
+ appPropsFile = System.getProperty("user.home") + "/damlengine.properties";
+ else
+ appPropsFile = "damlengine.properties";
+ }
+ try {
+ appProps.load(new FileInputStream(appPropsFile));
+ } catch (FileNotFoundException e) { }
+
+ basePath = null;
+ if ( System.getenv("DAMLENGINE_BASE_PATH") != null )
+ basePath = System.getenv("DAMLENGINE_BASE_PATH");
+ if ( basePath == null )
+ basePath = appProps.getProperty("base_path");
+ if ( basePath == null ) {
+ basePath = ".";
+ System.err.println("warning: using working directory as base path");
+ }
+
+ templatePath = null;
+ if ( System.getenv("DAMLENGINE_TEMPLATE_PATH") != null )
+ templatePath = System.getenv("DAMLENGINE_TEMPLATE_PATH");
+ if ( templatePath == null )
+ templatePath = appProps.getProperty("template_path");
+ if ( templatePath == null ) {
+ templatePath = basePath + "/templates";
+ System.err.println("warning: using "+templatePath+" as template path");
+ }
+
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
String line;
Matcher matcher;
@@ -162,7 +202,7 @@ public final class DamlEngine {
if ( (matcher=Pattern.compile("process\\s+(\\S+)(?:\\s+\\>\\s*(\\S+))?\\s*").matcher(line)).matches() ) {
String inf = matcher.group(1);
String outf = matcher.group(2);
- InputStream in = new FileInputStream(inf);
+ InputStream in = new FileInputStream((inf.charAt(0)=='/'?"":basePath+"/")+inf);
OutputStream out = (outf != null)
? new FileOutputStream(outf)
: System.out;
@@ -226,7 +266,7 @@ public final class DamlEngine {
out.close();
} else if ( (matcher=Pattern.compile("populate-weblog\\s+(\\S+)\\s*").matcher(line)).matches() ) {
String inf = matcher.group(1);
- InputStream in = new FileInputStream(inf);
+ InputStream in = new FileInputStream((inf.charAt(0)=='/'?"":basePath+"/")+inf);
WeblogPopulate.populate(in);
} else if ( (matcher=Pattern.compile("echo\\s+(\\S+)(?:\\s+\\>\\s*(\\S+))?\\s*").matcher(line)).matches() ) {
String str = matcher.group(1);
diff --git a/org/madore/damlengine/TodoDamlElement.java b/org/madore/damlengine/TodoDamlElement.java
index 599e49a..9de2714 100644
--- a/org/madore/damlengine/TodoDamlElement.java
+++ b/org/madore/damlengine/TodoDamlElement.java
@@ -2,6 +2,7 @@ package org.madore.damlengine;
import java.util.ArrayList;
import java.util.regex.Pattern;
+import java.io.FileInputStream;
import java.io.Reader;
import java.io.InputStreamReader;
import java.io.BufferedReader;
@@ -61,7 +62,7 @@ public final class TodoDamlElement extends TodoDefaultElement {
ctx.gc.styleContent = new StringBuffer();
try {
- Reader rd = new BufferedReader(new InputStreamReader(DamlEngine.class.getResourceAsStream("included.css"), "UTF-8"));
+ Reader rd = new BufferedReader(new InputStreamReader(new FileInputStream(DamlEngine.templatePath+"/included.css"), "UTF-8"));
int ch;
while ((ch = rd.read()) > -1)
ctx.gc.styleContent.append((char)ch);
@@ -71,7 +72,7 @@ public final class TodoDamlElement extends TodoDefaultElement {
}
ctx.gc.scriptContent = new StringBuffer();
try {
- Reader rd = new BufferedReader(new InputStreamReader(DamlEngine.class.getResourceAsStream("included.js"), "UTF-8"));
+ Reader rd = new BufferedReader(new InputStreamReader(new FileInputStream(DamlEngine.templatePath+"/included.js"), "UTF-8"));
int ch;
while ((ch = rd.read()) > -1)
ctx.gc.scriptContent.append((char)ch);
diff --git a/org/madore/damlengine/WeblogDatabaseConnection.java b/org/madore/damlengine/WeblogDatabaseConnection.java
index 9347406..900f3a0 100644
--- a/org/madore/damlengine/WeblogDatabaseConnection.java
+++ b/org/madore/damlengine/WeblogDatabaseConnection.java
@@ -20,24 +20,48 @@ public final class WeblogDatabaseConnection {
public static Connection getConnection()
throws SQLException {
if ( conn == null ) {
- String dbHost = System.getenv("PGHOST");
+ String dbHost = System.getenv("DAMLENGINE_PGHOST");
+ if ( dbHost == null )
+ dbHost = DamlEngine.appProps.getProperty("pghost");
+ if ( dbHost == null )
+ dbHost = System.getenv("PGHOST");
if ( dbHost == null )
dbHost = "localhost";
- String dbPort = System.getenv("PGPORT");
+ String dbPort = System.getenv("DAMLENGINE_PGPORT");
+ if ( dbPort == null )
+ dbPort = DamlEngine.appProps.getProperty("pgport");
+ if ( dbPort == null )
+ dbPort = System.getenv("PGPORT");
if ( dbPort == null )
dbPort = "5432";
- String dbName = "weblog";
- String dbUser = System.getenv("PGUSER");
+ String dbName = System.getenv("DAMLENGINE_DBNAME");
+ if ( dbName == null )
+ dbName = DamlEngine.appProps.getProperty("dbname");
+ if ( dbName == null )
+ dbName = "weblog";
+ String dbUser = System.getenv("DAMLENGINE_PGUSER");
+ if ( dbUser == null )
+ dbUser = DamlEngine.appProps.getProperty("pguser");
+ if ( dbUser == null )
+ dbUser = System.getenv("PGUSER");
if ( dbUser == null )
dbUser = System.getenv("USER");
if ( dbUser == null )
dbUser = System.getProperty("user.name");
if ( dbUser == null )
dbUser = dbName;
- String dbPass = System.getenv("PGPASSWORD");
+ String dbPass = System.getenv("DAMLENGINE_PGPASSWORD");
+ if ( dbPass == null )
+ dbPass = DamlEngine.appProps.getProperty("pgpassword");
+ if ( dbPass == null )
+ dbPass = System.getenv("PGPASSWORD");
if ( dbPass == null )
try {
- String dbPassFile = System.getenv("PGPASSFILE");
+ String dbPassFile = System.getenv("DAMLENGINE_PGPASSFILE");
+ if ( dbPassFile == null )
+ dbPassFile = DamlEngine.appProps.getProperty("pgpassfile");
+ if ( dbPassFile == null )
+ dbPassFile = System.getenv("PGPASSFILE");
if ( dbPassFile == null )
dbPassFile = System.getProperty("user.home")
+ "/.pgpass";
diff --git a/org/madore/damlengine/WeblogIndexSelect.java b/org/madore/damlengine/WeblogIndexSelect.java
index 83c5461..0361177 100644
--- a/org/madore/damlengine/WeblogIndexSelect.java
+++ b/org/madore/damlengine/WeblogIndexSelect.java
@@ -1,5 +1,6 @@
package org.madore.damlengine;
+import java.io.FileInputStream;
import java.io.OutputStream;
public final class WeblogIndexSelect {
@@ -11,7 +12,7 @@ public final class WeblogIndexSelect {
public static void fullProcess(OutputStream out)
throws Exception {
- DamlEngine.fullProcess(DamlEngine.class.getResourceAsStream("weblog-index-template.daml"),
+ DamlEngine.fullProcess(new FileInputStream(DamlEngine.templatePath+"/weblog-index-template.daml"),
out, null);
}
diff --git a/org/madore/damlengine/WeblogSelect.java b/org/madore/damlengine/WeblogSelect.java
index 8ebdaf4..075cab1 100644
--- a/org/madore/damlengine/WeblogSelect.java
+++ b/org/madore/damlengine/WeblogSelect.java
@@ -2,6 +2,7 @@ package org.madore.damlengine;
import java.util.TreeSet;
import java.util.ArrayList;
+import java.io.FileInputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
@@ -50,7 +51,7 @@ public final class WeblogSelect {
wsc.xmlData.add(content);
}
- DamlEngine.fullProcess(DamlEngine.class.getResourceAsStream(templateResourceName),
+ DamlEngine.fullProcess(new FileInputStream(DamlEngine.templatePath+"/"+templateResourceName),
out, wsc);
}
diff --git a/org/madore/damlengine/included.css b/org/madore/damlengine/included.css
deleted file mode 100644
index 4ad2a4d..0000000
--- a/org/madore/damlengine/included.css
+++ /dev/null
@@ -1,115 +0,0 @@
-body {
- color: black;
- font-family: Optima, "Zapf Humanist", Palatino, "Palatino Linotype", serif;
-}
-h1,h2,h3,h4,h5,h6 {
- font-family: Futura, "Century Gothic", "Avant Garde", "Avant Garde Gothic", Helvetica, Arial, sans-serif;
-}
-h1 { color: rgb(0,128,0); }
-h2 { color: rgb(96,96,0); }
-h3 { color: rgb(96,64,0); }
-.title { text-align: center; }
-.subtitle {
- font-size: 1.5em; text-align: center;
- font-family: Futura, "Century Gothic", "Avant Garde", "Avant Garde Gothic", Helvetica, Arial, sans-serif;
- color: rgb(24,96,0);
-}
-article { display: block; }
-.navbar {
- display: block;
- font-size: .83em;
- font-family: "Times Roman", Times, "Times New Roman", serif;
-}
-.ffii-call {
- clear: both;
- color: red;
- font-size: 1.7em;
- font-family: Helvetica, Arial, sans-serif;
- text-align: center;
- border: outset;
-}
-.important { font-weight: bold; border: solid; padding: 1em; }
-.outset { border: outset; padding-left: 0.5em; padding-right: 0.5em; }
-.sidenote { font-size: .83em; }
-.weblog-entry-headlink { color: rgb(128,64,0); }
-.weblog-entry-headlink > a { color: inherit; }
-.weblog-entry-title {
- color: black;
- font-size: 1.17em;
- font-weight: bold;
- font-family: Futura, "Avant Garde", Helvetica, Arial, sans-serif;
-}
-.talkback-link {
- color: rgb(128,64,0); font-size: 0.83em; text-align: right;
- font-family: Futura, "Avant Garde", Helvetica, Arial, sans-serif;
- margin-bottom: 0pt;
-}
-.talkback-link > a { color: inherit; }
-.categories-list {
- color: rgb(128,64,0); font-size: 0.83em; text-align: right;
- font-family: Futura, "Avant Garde", Helvetica, Arial, sans-serif;
- margin-bottom: 0pt;
-}
-.categories-list > a { color: inherit; }
-.cut-link {
- font-family: Futura, "Avant Garde", Helvetica, Arial, sans-serif;
-}
-.sitemap-note {
- font-style: italic;
- color: rgb(96,0,0);
-}
-.idlist > dt { color: rgb(96,64,0); }
-.numtable td { text-align: right; }
-.noparskip p { margin-top: 0; margin-bottom: 0; }
-.cleared { clear: both; }
-.cleared-left { clear: left; }
-.cleared-right { clear: right; }
-.pic { float: left; margin-right: 1em; margin-bottom: 1em; }
-.pic-right { float: right; margin-left: 1em; margin-bottom: 1em; }
-.pic-embed { float: left; margin-right: 1em; margin-bottom: 1em; margin-top: 1em; }
-.pic-embed-right { float: right; margin-left: 1em; margin-bottom: 1em; margin-top: 1em; }
-.smiley { vertical-align: middle; }
-.separated { margin-top: 2.33em; }
-a { text-decoration: none; }
-:lang(en) > q { quotes: "\201C" "\201D" "\2018" "\2019"; }
-:lang(fr) > q { quotes: "\AB\A0" "\A0\BB" "\201C" "\201D"; }
-:lang(de) > q { quotes: "\201E" "\201C" "\201A" "\2018"; }
-q:before { content: open-quote; }
-q:after { content: close-quote; }
-li { -moz-float-edge: content-box; } /* Undo Mozilla buggy bugware! */
-/* For despammed email addresses */
-@media all { /* Hide from various buggy browsers! */
- .subreplace-full-stop:before { content: "."; }
- .subreplace-full-stop > img { display: none; }
- .subreplace-commercial-at:before { content: "@"; }
- .subreplace-commercial-at > img { display: none; }
-}
-/* Screen-specific rules */
-@media screen {
- body { background: rgb(192,208,224); }
- .navbar {
- background: rgb(224,192,192);
- border: solid; border-color: rgb(224,0,0);
- padding: 1em;
- float: right; margin-left: 1.33em;
- }
- .important {
- background: rgb(208,208,208);
- border-color: rgb(255,0,0);
- }
- .weblog-entry {
- background: rgb(224,224,192);
- border: solid; border-color: rgb(128,64,0);
- padding: 1em; margin-bottom: 1em;
- overflow: hidden;
- }
- .outset { background: rgb(192,224,208); }
- .ffii-call { background: rgb(192,224,208); }
- :link { color: rgb(0,0,192); }
- :visited { color: rgb(96,0,192); }
- .weblog-internal-link:link,.weblog-internal-link:visited { color: rgb(0,64,192); }
- :link:hover,:visited:hover { text-decoration: underline; }
-}
-@media print {
- .navbar { display: none; }
-}
diff --git a/org/madore/damlengine/included.js b/org/madore/damlengine/included.js
deleted file mode 100644
index 1bf6db7..0000000
--- a/org/madore/damlengine/included.js
+++ /dev/null
@@ -1,109 +0,0 @@
-"use strict";
-
-var textNodeType;
-
-function textContent(n) {
- if ( n.nodeType == textNodeType ) {
- return n.data;
- } else {
- var children = n.childNodes;
- var t = "";
- for ( var i=0 ; i<children.length ; i++ ) {
- t = t.concat(textContent(children.item(i)));
- }
- return t;
- }
-}
-
-function despam() {
- // MSIE seems to barf... Deactivate for now
- if ( (/MSIE *[1-6]\./).test(navigator.userAgent) )
- return;
- // Now replace as appropriate.
- var elts = document.getElementsByTagName("span");
- for ( var i=0 ; i<elts.length ; i++ ) {
- var elt = elts.item(i);
- if ( elt.className == "replace-commercial-at" ) {
- elt.parentNode.replaceChild(document.createTextNode("@"),elt);
- i--; // Semi-bugware
- } else if ( elt.className == "replace-full-stop" ) {
- elt.parentNode.replaceChild(document.createTextNode("."),elt);
- i--; // Semi-bugware
- }
- }
- // Merge adjacent text nodes.
- try {
- document.normalize(); // Your DOM is BROKEN!
- } catch (exn) {
- document.documentElement.normalize();
- }
- // Next, process all <a> elements having class="despammed-address".
- elts = document.getElementsByTagName("a");
- for ( var i=0 ; i<elts.length ; i++ ) {
- var elt = elts.item(i);
- if ( elt.className == "despammed-address" ) {
- var addr = "mailto:".concat(textContent(elt));
- elt.setAttribute("href",addr); // (abstract)
- elt.href = addr; // (semantic)
- }
- }
-}
-
-function permuteWord(s) {
- if ( s.length <= 3 )
- return s;
- var tab = s.split("");
- var n = tab.length - 1;
- for ( var i=1 ; i<n ; i++ ) {
- var j = i + Math.floor(Math.random()*(n-i));
- if ( j == i )
- continue;
- var tmp = tab[j];
- tab[j] = tab[i];
- tab[i] = tmp;
- }
- return tab.join("");
-}
-
-function permuteString(s) {
- return s.replace(/[A-Za-zÀ-ÿ]+/g, permuteWord);
-}
-
-function permuteDoc(doc) {
- var body = doc.body;
- var walker = doc.createTreeWalker(body, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, null, false);
- var node = walker.nextNode();
- while ( node ) {
- if ( node.nodeType == Node.TEXT_NODE ) {
- var thisnode = node;
- node = walker.nextNode();
- var str = permuteString(thisnode.nodeValue);
- thisnode.parentNode.replaceChild(doc.createTextNode(str), thisnode);
- } else if ( node.nodeType == Node.ELEMENT_NODE
- && ( node.localName == "pre"
- || node.localName == "code"
- || node.localName == "script"
- || node.localName == "style" ) ) {
- do {
- node = walker.nextSibling();
- if ( node )
- break;
- node = walker.parentNode();
- if ( ! node )
- break;
- } while ( true );
- } else
- node = walker.nextNode();
- }
-}
-
-function onLoad() {
- // Start with some bugware...
- try {
- textNodeType = Node.TEXT_NODE;
- } catch (exn) { // Your DOM is BROKEN!
- textNodeType = 3;
- }
- // Now despam email adresses.
- despam();
-}
diff --git a/org/madore/damlengine/weblog-cat-template.daml b/org/madore/damlengine/weblog-cat-template.daml
deleted file mode 100644
index d6ef3c8..0000000
--- a/org/madore/damlengine/weblog-cat-template.daml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!DOCTYPE d:daml [
- <!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
- %HTMLlat1;
- <!ENTITY % HTMLspecial PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
- %HTMLspecial;
- <!ENTITY % HTMLsymbol PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
- %HTMLsymbol;
- <!ENTITY uri-to-top "../">
- <!ENTITY file.language "en">
- <!ENTITY my-email "<d:email-despammed xmlns:d='http://www.madore.org/~david/NS/daml/'>david+www<d:email-at />madore<d:email-dot />org</d:email-despammed>">
-]>
-
-<d:daml xml:lang="&file.language;" uri-to-top="&uri-to-top;" xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.madore.org/~david/NS/daml/">
-
-<d:title>David Madore's WebLog: <d:weblog-selection-cat-name /></d:title>
-
-<d:meta-description>David Alexander Madore's WebLog / Diary</d:meta-description>
-
-<d:meta-keywords>David Alexander Madore, WebLog, diary</d:meta-keywords>
-
-<link rel="alternate" type="application/rss+xml" title="RSS" href="weblog.rss" />
-
-<d:body>
-
-<p>This WebLog is bilingual, some entries are in English and others
-are in French. A few of them have a version in either language.
-Other than that, the French entries are <em>not</em> translations of
-the English ones or vice versa. Of course, if you understand only
-English, the English entries ought to be quite understandable without
-reading the French ones.</p>
-
-<p xml:lang="fr">Ce WebLog est bilingue, certaines entrées sont en
-anglais et d'autres sont en français. Quelques-unes ont une version
-dans chaque langue. À part ça, les entrées en français <em>ne</em>
-sont <em>pas</em> des traductions de celles en anglais ou vice versa.
-Bien sûr, si vous ne comprenez que le français, les entrées en
-français devraient être assez compréhensibles sans lire celles en
-anglais.</p>
-
-<p>Note that the first entry
-comes <a d:wref="#d.2003-05-01.0001">last</a>!
-/ <span xml:lang="fr">Notez que la première entrée vient
-en <a d:wref="#d.2003-05-01.0001">dernier</a> !</span></p>
-
-<p><a href="weblog-index.html#index">Index of all entries /
-<span xml:lang="fr">Index de toutes les entrées</span></a> • <a
-href="weblog.rss" rel="alternate" type="application/rss+xml"
-title="RSS"><img src="&uri-to-top;images/xml.gif" alt="XML" width="36"
-height="14" /></a> (<abbr>RSS</abbr> 1.0) • <a
-href="http://www.madore.org/cgi-bin/comment.pl/lscomments">Recent
-comments / <span xml:lang="fr">Commentaires
-récents</span></a></p>
-
-<div class="cleared-right" d:xempty="xempty" />
-
-<p>Entries with category <q><d:weblog-selection-cat-code /></q>
-/ <span xml:lang="fr">Entrées de la
-catégorie <q><d:weblog-selection-cat-code /></q></span>:</p>
-
-<d:weblog-select />
-
-</d:body>
-
-</d:daml>
diff --git a/org/madore/damlengine/weblog-index-template.daml b/org/madore/damlengine/weblog-index-template.daml
deleted file mode 100644
index 1c9f0ed..0000000
--- a/org/madore/damlengine/weblog-index-template.daml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!DOCTYPE d:daml [
- <!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
- %HTMLlat1;
- <!ENTITY % HTMLspecial PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
- %HTMLspecial;
- <!ENTITY % HTMLsymbol PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
- %HTMLsymbol;
- <!ENTITY uri-to-top "../">
- <!ENTITY file.language "en">
- <!ENTITY my-email "<d:email-despammed xmlns:d='http://www.madore.org/~david/NS/daml/'>david+www<d:email-at />madore<d:email-dot />org</d:email-despammed>">
-]>
-
-<d:daml xml:lang="&file.language;" uri-to-top="&uri-to-top;" xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.madore.org/~david/NS/daml/">
-
-<d:title>David Madore's WebLog: index</d:title>
-
-<d:meta-description>David Alexander Madore's WebLog / Diary</d:meta-description>
-
-<d:meta-keywords>David Alexander Madore, WebLog, diary</d:meta-keywords>
-
-<link rel="alternate" type="application/rss+xml" title="RSS" href="weblog.rss" />
-
-<d:body>
-
-<p>This WebLog is bilingual, some entries are in English and others
-are in French. A few of them have a version in either language.
-Other than that, the French entries are <em>not</em> translations of
-the English ones or vice versa. Of course, if you understand only
-English, the English entries ought to be quite understandable without
-reading the French ones.</p>
-
-<p xml:lang="fr">Ce WebLog est bilingue, certaines entrées sont en
-anglais et d'autres sont en français. Quelques-unes ont une version
-dans chaque langue. À part ça, les entrées en français <em>ne</em>
-sont <em>pas</em> des traductions de celles en anglais ou vice versa.
-Bien sûr, si vous ne comprenez que le français, les entrées en
-français devraient être assez compréhensibles sans lire celles en
-anglais.</p>
-
-<p>Note that the first entry
-comes <a d:wref="#d.2003-05-01.0001">last</a>!
-/ <span xml:lang="fr">Notez que la première entrée vient
-en <a d:wref="#d.2003-05-01.0001">dernier</a> !</span></p>
-
-<p><a href="weblog-index.html#index">Index of all entries /
-<span xml:lang="fr">Index de toutes les entrées</span></a> • <a
-href="weblog.rss" rel="alternate" type="application/rss+xml"
-title="RSS"><img src="&uri-to-top;images/xml.gif" alt="XML" width="36"
-height="14" /></a> (<abbr>RSS</abbr> 1.0) • <a
-href="http://www.madore.org/cgi-bin/comment.pl/lscomments">Recent
-comments / <span xml:lang="fr">Commentaires
-récents</span></a></p>
-
-<d:weblog-index-select />
-
-</d:body>
-
-</d:daml>
diff --git a/org/madore/damlengine/weblog-month-template.daml b/org/madore/damlengine/weblog-month-template.daml
deleted file mode 100644
index 0ba3c17..0000000
--- a/org/madore/damlengine/weblog-month-template.daml
+++ /dev/null
@@ -1,231 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!DOCTYPE d:daml [
- <!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
- %HTMLlat1;
- <!ENTITY % HTMLspecial PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
- %HTMLspecial;
- <!ENTITY % HTMLsymbol PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
- %HTMLsymbol;
- <!ENTITY uri-to-top "../">
- <!ENTITY file.language "en">
- <!ENTITY my-email "<d:email-despammed xmlns:d='http://www.madore.org/~david/NS/daml/'>david+www<d:email-at />madore<d:email-dot />org</d:email-despammed>">
-]>
-
-<d:daml xml:lang="&file.language;" uri-to-top="&uri-to-top;" xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.madore.org/~david/NS/daml/">
-
-<d:title>David Madore's WebLog: <d:weblog-selection-month-year />-<d:weblog-selection-month-month /></d:title>
-
-<d:meta-description>David Alexander Madore's WebLog / Diary</d:meta-description>
-
-<d:meta-keywords>David Alexander Madore, WebLog, diary</d:meta-keywords>
-
-<link rel="alternate" type="application/rss+xml" title="RSS" href="weblog.rss" />
-
-<d:body>
-
-<p>This WebLog is bilingual, some entries are in English and others
-are in French. A few of them have a version in either language.
-Other than that, the French entries are <em>not</em> translations of
-the English ones or vice versa. Of course, if you understand only
-English, the English entries ought to be quite understandable without
-reading the French ones.</p>
-
-<p xml:lang="fr">Ce WebLog est bilingue, certaines entrées sont en
-anglais et d'autres sont en français. Quelques-unes ont une version
-dans chaque langue. À part ça, les entrées en français <em>ne</em>
-sont <em>pas</em> des traductions de celles en anglais ou vice versa.
-Bien sûr, si vous ne comprenez que le français, les entrées en
-français devraient être assez compréhensibles sans lire celles en
-anglais.</p>
-
-<p>Note that the first entry
-comes <a d:wref="#d.2003-05-01.0001">last</a>!
-/ <span xml:lang="fr">Notez que la première entrée vient
-en <a d:wref="#d.2003-05-01.0001">dernier</a> !</span></p>
-
-<p><a href="weblog-index.html#index">Index of all entries /
-<span xml:lang="fr">Index de toutes les entrées</span></a> • <a
-href="weblog.rss" rel="alternate" type="application/rss+xml"
-title="RSS"><img src="&uri-to-top;images/xml.gif" alt="XML" width="36"
-height="14" /></a> (<abbr>RSS</abbr> 1.0) • <a
-href="http://www.madore.org/cgi-bin/comment.pl/lscomments">Recent
-comments / <span xml:lang="fr">Commentaires
-récents</span></a></p>
-
-<div class="cleared-right" d:xempty="xempty" />
-
-<p>Entries of month
-<d:weblog-selection-month-year />-<d:weblog-selection-month-month />
-/ <span xml:lang="fr">Entrées du mois
-<d:weblog-selection-month-year />-<d:weblog-selection-month-month /></span>:</p>
-
-<d:weblog-select />
-
-<p><a d:wxref="##weblog-selection-older">Continue to older
-entries.</a>
-/ <span xml:lang="fr"><a d:wxref="##weblog-selection-older">Continuer
-à lire les entrées plus anciennes.</a></span></p>
-
-<hr />
-
-<p>Entries by month / <span xml:lang="fr">Entrées par mois</span>:</p>
-
-<table border="1">
-
-<tr><th>2014</th><td><a href="2014-01.html">Jan 2014</a></td><td><a
-href="2014-02.html">Feb 2014</a></td><td><a
-href="2014-03.html">Mar 2014</a></td><td><a
-href="2014-04.html">Apr 2014</a></td><td><a
-href="2014-05.html">May 2014</a></td><td><a
-href="2014-06.html">Jun 2014</a></td><td><a
-href="2014-07.html">Jul 2014</a></td><td><a
-href="2014-08.html">Aug 2014</a></td><td><a
-href="2014-09.html">Sep 2014</a></td><td><a
-href="2014-10.html">Oct 2014</a></td><td colspan="2" /></tr>
-
-<tr><th>2013</th><td><a href="2013-01.html">Jan 2013</a></td><td><a
-href="2013-02.html">Feb 2013</a></td><td><a
-href="2013-03.html">Mar 2013</a></td><td><a
-href="2013-04.html">Apr 2013</a></td><td><a
-href="2013-05.html">May 2013</a></td><td><a
-href="2013-06.html">Jun 2013</a></td><td><a
-href="2013-07.html">Jul 2013</a></td><td><a
-href="2013-08.html">Aug 2013</a></td><td><a
-href="2013-09.html">Sep 2013</a></td><td><a
-href="2013-10.html">Oct 2013</a></td><td><a
-href="2013-11.html">Nov 2013</a></td><td><a
-href="2013-12.html">Dec 2013</a></td></tr>
-
-<tr><th>2012</th><td><a href="2012-01.html">Jan 2012</a></td><td><a
-href="2012-02.html">Feb 2012</a></td><td><a
-href="2012-03.html">Mar 2012</a></td><td><a
-href="2012-04.html">Apr 2012</a></td><td><a
-href="2012-05.html">May 2012</a></td><td><a
-href="2012-06.html">Jun 2012</a></td><td><a
-href="2012-07.html">Jul 2012</a></td><td><a
-href="2012-08.html">Aug 2012</a></td><td><a
-href="2012-09.html">Sep 2012</a></td><td><a
-href="2012-10.html">Oct 2012</a></td><td><a
-href="2012-11.html">Nov 2012</a></td><td><a
-href="2012-12.html">Dec 2012</a></td></tr>
-
-<tr><th>2011</th><td><a href="2011-01.html">Jan 2011</a></td><td><a
-href="2011-02.html">Feb 2011</a></td><td><a
-href="2011-03.html">Mar 2011</a></td><td><a
-href="2011-04.html">Apr 2011</a></td><td><a
-href="2011-05.html">May 2011</a></td><td><a
-href="2011-06.html">Jun 2011</a></td><td><a
-href="2011-07.html">Jul 2011</a></td><td><a
-href="2011-08.html">Aug 2011</a></td><td><a
-href="2011-09.html">Sep 2011</a></td><td><a
-href="2011-10.html">Oct 2011</a></td><td><a
-href="2011-11.html">Nov 2011</a></td><td><a
-href="2011-12.html">Dec 2011</a></td></tr>
-
-<tr><th>2010</th><td><a href="2010-01.html">Jan 2010</a></td><td><a
-href="2010-02.html">Feb 2010</a></td><td><a
-href="2010-03.html">Mar 2010</a></td><td><a
-href="2010-04.html">Apr 2010</a></td><td><a
-href="2010-05.html">May 2010</a></td><td><a
-href="2010-06.html">Jun 2010</a></td><td><a
-href="2010-07.html">Jul 2010</a></td><td><a
-href="2010-08.html">Aug 2010</a></td><td><a
-href="2010-09.html">Sep 2010</a></td><td><a
-href="2010-10.html">Oct 2010</a></td><td><a
-href="2010-11.html">Nov 2010</a></td><td><a
-href="2010-12.html">Dec 2010</a></td></tr>
-
-<tr><th>2009</th><td><a href="2009-01.html">Jan 2009</a></td><td><a
-href="2009-02.html">Feb 2009</a></td><td><a
-href="2009-03.html">Mar 2009</a></td><td><a
-href="2009-04.html">Apr 2009</a></td><td><a
-href="2009-05.html">May 2009</a></td><td><a
-href="2009-06.html">Jun 2009</a></td><td><a
-href="2009-07.html">Jul 2009</a></td><td><a
-href="2009-08.html">Aug 2009</a></td><td><a
-href="2009-09.html">Sep 2009</a></td><td><a
-href="2009-10.html">Oct 2009</a></td><td><a
-href="2009-11.html">Nov 2009</a></td><td><a
-href="2009-12.html">Dec 2009</a></td></tr>
-
-<tr><th>2008</th><td><a href="2008-01.html">Jan 2008</a></td><td><a
-href="2008-02.html">Feb 2008</a></td><td><a
-href="2008-03.html">Mar 2008</a></td><td><a
-href="2008-04.html">Apr 2008</a></td><td><a
-href="2008-05.html">May 2008</a></td><td><a
-href="2008-06.html">Jun 2008</a></td><td><a
-href="2008-07.html">Jul 2008</a></td><td><a
-href="2008-08.html">Aug 2008</a></td><td><a
-href="2008-09.html">Sep 2008</a></td><td><a
-href="2008-10.html">Oct 2008</a></td><td><a
-href="2008-11.html">Nov 2008</a></td><td><a
-href="2008-12.html">Dec 2008</a></td></tr>
-
-<tr><th>2007</th><td><a href="2007-01.html">Jan 2007</a></td><td><a
-href="2007-02.html">Feb 2007</a></td><td><a
-href="2007-03.html">Mar 2007</a></td><td><a
-href="2007-04.html">Apr 2007</a></td><td><a
-href="2007-05.html">May 2007</a></td><td><a
-href="2007-06.html">Jun 2007</a></td><td><a
-href="2007-07.html">Jul 2007</a></td><td><a
-href="2007-08.html">Aug 2007</a></td><td><a
-href="2007-09.html">Sep 2007</a></td><td><a
-href="2007-10.html">Oct 2007</a></td><td><a
-href="2007-11.html">Nov 2007</a></td><td><a
-href="2007-12.html">Dec 2007</a></td></tr>
-
-<tr><th>2006</th><td><a href="2006-01.html">Jan 2006</a></td><td><a
-href="2006-02.html">Feb 2006</a></td><td><a
-href="2006-03.html">Mar 2006</a></td><td><a
-href="2006-04.html">Apr 2006</a></td><td><a
-href="2006-05.html">May 2006</a></td><td><a
-href="2006-06.html">Jun 2006</a></td><td><a
-href="2006-07.html">Jul 2006</a></td><td><a
-href="2006-08.html">Aug 2006</a></td><td><a
-href="2006-09.html">Sep 2006</a></td><td><a
-href="2006-10.html">Oct 2006</a></td><td><a
-href="2006-11.html">Nov 2006</a></td><td><a
-href="2006-12.html">Dec 2006</a></td></tr>
-
-<tr><th>2005</th><td><a href="2005-01.html">Jan 2005</a></td><td><a
-href="2005-02.html">Feb 2005</a></td><td><a
-href="2005-03.html">Mar 2005</a></td><td><a
-href="2005-04.html">Apr 2005</a></td><td><a
-href="2005-05.html">May 2005</a></td><td><a
-href="2005-06.html">Jun 2005</a></td><td><a
-href="2005-07.html">Jul 2005</a></td><td><a
-href="2005-08.html">Aug 2005</a></td><td><a
-href="2005-09.html">Sep 2005</a></td><td><a
-href="2005-10.html">Oct 2005</a></td><td><a
-href="2005-11.html">Nov 2005</a></td><td><a
-href="2005-12.html">Dec 2005</a></td></tr>
-
-<tr><th>2004</th><td><a href="2004-01.html">Jan 2004</a></td><td><a
-href="2004-02.html">Feb 2004</a></td><td><a
-href="2004-03.html">Mar 2004</a></td><td><a
-href="2004-04.html">Apr 2004</a></td><td><a
-href="2004-05.html">May 2004</a></td><td><a
-href="2004-06.html">Jun 2004</a></td><td><a
-href="2004-07.html">Jul 2004</a></td><td><a
-href="2004-08.html">Aug 2004</a></td><td><a
-href="2004-09.html">Sep 2004</a></td><td><a
-href="2004-10.html">Oct 2004</a></td><td><a
-href="2004-11.html">Nov 2004</a></td><td><a
-href="2004-12.html">Dec 2004</a></td></tr>
-
-<tr><th>2003</th><td colspan="4" /><td><a
-href="2003-05.html">May 2003</a></td><td><a
-href="2003-06.html">Jun 2003</a></td><td><a
-href="2003-07.html">Jul 2003</a></td><td><a
-href="2003-08.html">Aug 2003</a></td><td><a
-href="2003-09.html">Sep 2003</a></td><td><a
-href="2003-10.html">Oct 2003</a></td><td><a
-href="2003-11.html">Nov 2003</a></td><td><a
-href="2003-12.html">Dec 2003</a></td></tr>
-
-</table>
-
-</d:body>
-
-</d:daml>
diff --git a/org/madore/damlengine/weblog-recent-template.daml b/org/madore/damlengine/weblog-recent-template.daml
deleted file mode 100644
index 05d986a..0000000
--- a/org/madore/damlengine/weblog-recent-template.daml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!DOCTYPE d:daml [
- <!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
- %HTMLlat1;
- <!ENTITY % HTMLspecial PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
- %HTMLspecial;
- <!ENTITY % HTMLsymbol PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
- %HTMLsymbol;
- <!ENTITY uri-to-top "../">
- <!ENTITY file.language "en">
- <!ENTITY my-email "<d:email-despammed xmlns:d='http://www.madore.org/~david/NS/daml/'>david+www<d:email-at />madore<d:email-dot />org</d:email-despammed>">
-]>
-
-<d:daml xml:lang="&file.language;" uri-to-top="&uri-to-top;" xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.madore.org/~david/NS/daml/">
-
-<d:title>David Madore's WebLog</d:title>
-
-<d:meta-description>David Alexander Madore's WebLog / Diary</d:meta-description>
-
-<d:meta-keywords>David Alexander Madore, WebLog, diary</d:meta-keywords>
-
-<link rel="alternate" type="application/rss+xml" title="RSS" href="weblog.rss" />
-
-<d:extra-script>
-// <![CDATA[Addition for this page: redirect to permalink if fragment not found
-function checkFragment(e) {
- var frag = location.hash;
- var match = /^\#(d\.(\d{4}\-\d{2})\-\d{2}\.\d{4}(?:$|\..*))$/.exec(frag);
- if ( match && ! document.getElementById(match[1]) ) {
- location.href = match[2] + ".html" + frag;
- }
-}
-window.addEventListener("load", checkFragment, false);
-// ]]>
-</d:extra-script>
-
-<d:body>
-
-<p>This WebLog is bilingual, some entries are in English and others
-are in French. A few of them have a version in either language.
-Other than that, the French entries are <em>not</em> translations of
-the English ones or vice versa. Of course, if you understand only
-English, the English entries ought to be quite understandable without
-reading the French ones.</p>
-
-<p xml:lang="fr">Ce WebLog est bilingue, certaines entrées sont en
-anglais et d'autres sont en français. Quelques-unes ont une version
-dans chaque langue. À part ça, les entrées en français <em>ne</em>
-sont <em>pas</em> des traductions de celles en anglais ou vice versa.
-Bien sûr, si vous ne comprenez que le français, les entrées en
-français devraient être assez compréhensibles sans lire celles en
-anglais.</p>
-
-<p>Note that the first entry comes <a
-d:wref="#d.2003-05-01.0001">last</a>! <span xml:lang="fr">Notez que la
-première entrée vient en <a
-d:wref="#d.2003-05-01.0001">dernier</a> !</span></p>
-
-<p><a href="weblog-index.html#index">Index of all entries /
-<span xml:lang="fr">Index de toutes les entrées</span></a> • <a
-href="weblog.rss" rel="alternate" type="application/rss+xml"
-title="RSS"><img src="&uri-to-top;images/xml.gif" alt="XML" width="36"
-height="14" /></a> (<abbr>RSS</abbr> 1.0) • <a
-href="http://www.madore.org/cgi-bin/comment.pl/lscomments">Recent
-comments / <span xml:lang="fr">Commentaires
-récents</span></a></p>
-
-<div class="cleared-right" d:xempty="xempty" />
-
-<d:weblog-select />
-
-<p>Only the <d:weblog-selection-recent-count /> most recent entries
-were included above. <a d:wxref="##weblog-selection-older">Continue
-to older entries.</a></p>
-
-<p xml:lang="fr">Seules les <d:weblog-selection-recent-count /> plus
-récentes entrées ont été incluses
-ici. <a d:wxref="##weblog-selection-older">Continuer à lire les
-entrées plus anciennes.</a></p>
-
-</d:body>
-
-</d:daml>
diff --git a/org/madore/damlengine/weblog-single-template.daml b/org/madore/damlengine/weblog-single-template.daml
deleted file mode 100644
index 7ee2d80..0000000
--- a/org/madore/damlengine/weblog-single-template.daml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!DOCTYPE d:daml [
- <!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
- %HTMLlat1;
- <!ENTITY % HTMLspecial PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
- %HTMLspecial;
- <!ENTITY % HTMLsymbol PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
- %HTMLsymbol;
- <!ENTITY uri-to-top "../">
- <!ENTITY file.language "en">
- <!ENTITY my-email "<d:email-despammed xmlns:d='http://www.madore.org/~david/NS/daml/'>david+www<d:email-at />madore<d:email-dot />org</d:email-despammed>">
-]>
-
-<d:daml xml:lang="&file.language;" uri-to-top="&uri-to-top;" xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.madore.org/~david/NS/daml/">
-
-<d:title>David Madore's WebLog: <d:weblog-selection-single-title /></d:title>
-
-<d:meta-description>David Alexander Madore's WebLog / Diary</d:meta-description>
-
-<d:meta-keywords>David Alexander Madore, WebLog, diary</d:meta-keywords>
-
-<link rel="alternate" type="application/rss+xml" title="RSS" href="weblog.rss" />
-
-<d:body>
-
-<p><a href="weblog-index.html#index">Index of all entries /
-<span xml:lang="fr">Index de toutes les entrées</span></a> • <a
-href="weblog.rss" rel="alternate" type="application/rss+xml"
-title="RSS"><img src="&uri-to-top;images/xml.gif" alt="XML" width="36"
-height="14" /></a> (<abbr>RSS</abbr> 1.0) • <a
-href="http://www.madore.org/cgi-bin/comment.pl/lscomments">Recent
-comments / <span xml:lang="fr">Commentaires
-récents</span></a></p>
-
-<div class="cleared-right" d:xempty="xempty" />
-
-<p>Entry #<d:weblog-selection-single-number />
-/ <span xml:lang="fr">Entrée #<d:weblog-selection-single-number /></span>:</p>
-
-<d:weblog-select />
-
-<p><a href=".">Recent entries / <span xml:lang="fr">Entrées
-récentes</span></a> • <a href="weblog-index.html#index">Index of all
-entries /
-<span xml:lang="fr">Index de toutes les entrées</span></a></p>
-
-</d:body>
-
-</d:daml>