shithub: werc

Download patch

ref: c412aedaf36131c9dd5c77a6475b549ac8182be0
parent: cade4179643fe9c2e4f1f764abe323e9178f41d7
author: uriel <[email protected]>
date: Fri Dec 19 21:08:12 EST 2008

First bits of minimal 'modular' app framework, move some blog code out of werc.rc and other minnor code cleanups.

--- a/bin/cgilib.rc
+++ b/bin/cgilib.rc
@@ -237,9 +237,53 @@
         status=Missing blog post arguments $1 $2 $3 
 }
 
+fn sortedBlogPostList {
+    # the /./->/|/ are added so we can sort -t| and order only the file name
+    # NOTE: this breaks if any path element in blogDirs contain '/./' or '|'
+    if (! ~ $#* 0)
+        ls $*^'/./' | sed -n 's,/\./,/|/,; /\/[0-9]+.*\.md$/p' | sort -r '-t|' +1 | sed 's,/+\|/+,/,'
+}
 
-# --------
-#
+fn gen_blog_post_title {
+    title=`{basename $1 | sed 's/^[0-9\-]*_(.*)\.md$/\1/; s/_/ /g' }
+    permlink= `{echo $1 | sed 's,^/[a-z/]*www/,/,; s,^sites/[^/]*/*/,/,; s/\.md$//' }
+    du=`{ls -l $1}
+    by = ''
+    if (! ~ $#blogAuthor 0) {
+        if (! ~ $blogAuthor '')
+            by='By '$"blogAuthor
+    }
+    if not if (~ $#blogDirs 1)
+        by='By '$du(4)
+    echo '##<a href="'^$"permlink^'">' $"title^'</a> *( '$by Last mod: $du(7 8 9) ' )*'
+}
+
+
+###################################
+# App framework
+
+
+app_list = ( hello )
+
+fn select_apps {
+    found = ()
+    for(a in $app_list) {
+        . ./apps/$a/app.rc
+        if($a^'_test') {
+            $a^'_setup'
+            found = yes
+        }
+    }
+
+    ~ $#found 1 # Set status
+}
+
+fn app_handler {
+    $app_body_handler
+        
+}
+
+
 #app_blog_methods = ( _post index.rss )
 #fn app_blog__post {
 #    echo
--- a/bin/werc.rc
+++ b/bin/werc.rc
@@ -75,29 +75,7 @@
     }
 }
 
-fn sortedBlogPostList {
-    # the /./->/|/ are added so we can sort -t| and order only the file name
-    # NOTE: this breaks if any path element in blogDirs contain '/./' or '|'
-    if (! ~ $#* 0)
-        ls $*^'/./' | sed -n 's,/\./,/|/,; /\/[0-9]+.*\.md$/p' | sort -r '-t|' +1 | sed 's,/+\|/+,/,'
-}
 
-fn gen_blog_post_title {
-    title=`{basename $1 | sed 's/^[0-9\-]*_(.*)\.md$/\1/; s/_/ /g' }
-    permlink= `{echo $1 | sed 's,^/[a-z/]*www/,/,; s,^sites/[^/]*/*/,/,; s/\.md$//' }
-    du=`{ls -l $1}
-    by = ''
-    if (! ~ $#blogAuthor 0) {
-        if (! ~ $blogAuthor '')
-            by='By '$"blogAuthor
-    }
-    if not if (~ $#blogDirs 1)
-        by='By '$du(4)
-    echo '##<a href="'^$"permlink^'">' $"title^'</a> *( '$by Last mod: $du(7 8 9) ' )*'
-}
-
-
-
 # Handlers
 fn set_handler {
     handler = $1
@@ -225,6 +203,10 @@
     if not if(~ $body */index)
         set_handler dir_listing_handler $body
 
+    # Apps
+    if not if(select_apps)
+        set_handler app_handler
+
     # File not found
     if not {
         set_handler 404_handler $body
@@ -258,7 +240,7 @@
 
 
 # Parse request URL
-uri = `{echo -n $REQUEST_URI | sed -e 's/\?.*//; s/'^$forbidden_uri_chars^'//g; s/\.\.*/./g;' -e '1q'}
+uri = `{echo -n $REQUEST_URI | sed 's/\?.*//; s/'^$forbidden_uri_chars^'//g; s/\.\.*/./g; 1q'}
 ifs='/' { args = `{echo -n $uri} }