ref: b1f3598c5383bb3d99bffa9b0ff3ec4fc1ec518b
parent: 6de83fd297fe2c2eccb6ce3c529116055980eaf6
author: sl <[email protected]>
date: Fri Mar 13 06:51:07 EDT 2009
More wman updates, new search functionality and handle better corner cases.
--- a/apps/wman/app.rc
+++ b/apps/wman/app.rc
@@ -6,6 +6,12 @@
conf_enable_app wman
}
+wman_junk_filter='/(\/(INDEX|\.cvsignore)|\.9p|\.html)$/d; s!/man([0-9]+/[^/]+)$!/\1!; '
+fn wman_ls_pages {
+ ls $* \
+ | sed $dirfilter^$wman_junk_filter^' s/\.([0-9]|9p)$//; s!/0intro$!/intro!' \
+ | sort -u
+}
fn wman_init {
ifs=$ifs^'/' { p=`{echo $req_path | sed 's!^'^$wman_base_uri^'!!'} }
wman_cat=$p(1)
@@ -18,7 +24,7 @@
wman_cat_path=$wman_man_path^/^$"wman_cp^$p(1)
wman_cat_list=`{ls -F $wman_man_path/*/ \
- | sed '/\/(index\.html|INDEX|\.cvsignore)$/d; s!.*/'^$"wman_cp^'([^/]+)/[^/]+$!\1!; /[0-9]+/!d' \
+ | sed -e $wman_junk_filter -e 's!.*/([^/]+)/[^/]+$!\1!; /[0-9]+/!d' \
| sort -un}
synth_paths=($wman_base_uri$wman_cat_list'/')
@@ -27,7 +33,7 @@
handler_body_main=(tpl_handler apps/wman/section_list.tpl)
if not if(~ $req_path $wman_base_uri^*) {
#^*/[a-z0-9]*[a-z]* $wman_base_uri^*/*[a-z]*[a-z0-9] $wman_base_uri^*/[a-z])
- if(echo $req_path | grep -s '^'^$wman_base_uri^'/*[0-9]+/[0-9a-z\-\.]+$')
+ if(echo $req_path | grep -s '^'^$wman_base_uri^'/*[0-9]+/[0-9a-z\-\+\.]+$')
handler_body_main=(tpl_handler apps/wman/man_page.tpl)
if not if(~ $req_path $wman_base_uri^*/)
handler_body_main=(tpl_handler apps/wman/page_list.tpl)
@@ -34,14 +40,24 @@
if not if(~ $p(2) [A-Z]* [0-9][A-Z]*) # Correct badly capitalized links
perm_redirect $wman_base_uri/^$p(1)^/^`{echo $p(2) |tr 'A-Z' 'a-z'}
}
+
+ # Search
+ ll_add handlers_body_head tpl_handler apps/wman/search.tpl
+ s=`{echo $post_arg_wman_search | sed 's/[^a-zA-Z0-9\-\.]+//g; s/\.+/./g; 1q'}
+ ifs='' { wman_search_results=`{wman_ls_pages $wman_man_path/*/*^$s^*} }
+ if(! ~ $"post_arg_go '' && ~ `{echo -n $wman_search_results|wc -l} 1)
+ post_redirect $wman_base_uri^`{echo $wman_search_results|awk -F/ '{print $(NF-1)"/"$NF}'}
+
}
-fn wman_get_section_desc { sed '1,2d; s!intro \\- introduction to !!; 3q;' < $wman_man_path/^$"wman_cp^$1/0intro* }
+fn wman_get_section_desc {
+ cat $wman_man_path/^$"wman_cp^$1/0intro* >[2]/dev/null| sed '1,2d; s!intro \\- introduction to !!; 3q;'
+}
fn wman_page_gen {
#troff -manhtml $1| troff2html -t 'Plan 9 from User Space'
nroff -man $1 \
| escape_html \
- | sed 's!([\.\-a-zA-Z0-9]+)\(([1-9]|10)\)!<a href="../\2/\1">&</a>!g' \
+ | sed 's!([\.\-a-zA-Z0-9]+)\(('^`{echo $wman_cat_list|tr ' ' '|'}^')\)!<a href="../\2/\1">&</a>!g' \
| awk '/^$/ {if(n != 1) print; n=1; next} /./ {n=0; print}'
}
--- a/apps/wman/page_list.tpl
+++ b/apps/wman/page_list.tpl
@@ -3,8 +3,7 @@
<ul style="float:left">
%{
-ls -F $wman_cat_path \
- | sed $dirfilter^' /(\/INDEX|\.html)$/d; s/\.([0-9]|9p)$//; s!/0intro$!/intro!' \
+wman_ls_pages $wman_cat_path \
| awk -F/ '{ print "<li><a href=\""$(NF)"\">"$(NF)"</a></li>" }
NR%28 == 0 { print "</ul><ul style=\"float: left\">" }'
%}
--- a/apps/wman/section_list.tpl
+++ b/apps/wman/section_list.tpl
@@ -4,6 +4,8 @@
% for(c in $wman_cat_list) {
<li><a href="%($c%)/"><b>Section: %($c%)</b></a>
% wman_get_section_desc $c
+% if(~ $status '' '|')
+% echo '(<a href="'$c'/intro">intro</a>)'
</li>
% }
</ul>