From 07d476321af6eec072ff1312b4ebe5f8c55cfd21 Mon Sep 17 00:00:00 2001 From: Uriel Date: Sat, 20 Dec 2008 02:08:12 +0100 Subject: [PATCH] First bits of minimal 'modular' app framework, move some blog code out of werc.rc and other minnor code cleanups. --- bin/cgilib.rc | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- bin/werc.rc | 28 +++++----------------------- 2 files changed, 51 insertions(+), 25 deletions(-) diff --git a/bin/cgilib.rc b/bin/cgilib.rc index 2ba2227..a2824b5 100644 --- a/bin/cgilib.rc +++ b/bin/cgilib.rc @@ -237,9 +237,53 @@ fn make_blog_post { 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 '##' $"title^' *( '$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 diff --git a/bin/werc.rc b/bin/werc.rc index 7032797..e5e760b 100755 --- a/bin/werc.rc +++ b/bin/werc.rc @@ -75,28 +75,6 @@ fn gensidebar { } } -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 '##' $"title^' *( '$by Last mod: $du(7 8 9) ' )*' -} - - # Handlers fn set_handler { @@ -225,6 +203,10 @@ fn select_handler { 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 @@ if(test -f etc/initrc.local) # 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} }