From bcf0ef4bc5983dda36a718bc925c3be3241ffbb8 Mon Sep 17 00:00:00 2001 From: Derek Stevens Date: Tue, 15 Jun 2021 01:19:00 -0600 Subject: [PATCH] add plumbing rules --- plumbing | 145 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 plumbing diff --git a/plumbing b/plumbing new file mode 100644 index 0000000..756de7b --- /dev/null +++ b/plumbing @@ -0,0 +1,145 @@ +# these are generally in order from most specific to least, +# since first rule that fires wins. + +include fileaddr + +# declarations of ports without rules +plumb to seemail +plumb to showmail + +# relative files as file: urls get made into absolute paths +type is text +data matches 'file:([.a-zA-Z¡-￿0-9_\-]([.a-zA-Z¡-￿0-9_/\-]*[a-zA-Z¡-￿0-9_/\-]))?' +arg isfile $1 +data set file://$file +plumb to web +plumb start web $data + +# urls go to web browser +type is text +data matches '(https?|ftp|file|gopher|mailto|news|nntp|telnet|wais|prospero)://[a-zA-Z0-9_@\-]+([.:][a-zA-Z0-9_@\-]+)*/?[a-zA-Z0-9_?,%#~&/\-+=]+([:.][a-zA-Z0-9_?,%#~&/\-+=]+)*' +plumb to web +plumb start web $0 + +# doc and rtf files go to wdoc2txt +type is text +data matches '[a-zA-Z¡-￿0-9_\-./ ]+' +data matches '([a-zA-Z¡-￿0-9_\-./ ]+)\.(doc|rtf)' +arg isfile $0 +plumb to msword +plumb start wdoc2txt $file + +# start rule for microsoft word documents without .doc suffix +type is text +dst is msword +plumb to msword +plumb start wdoc2txt $file + +# image files go to page +type is text +data matches '[a-zA-Z¡-￿0-9_\-./@ ]+' +data matches '([a-zA-Z¡-￿0-9_\-./@ ]+)\.(jpe?g|JPE?G|gif|GIF|tiff?|TIFF?|ppm|bit|png|PNG)' +arg isfile $0 +plumb to image +plumb start qiv $file + +# music/video files go to mpv +type is text +data matches '[a-zA-Z¡-￿0-9_\-./@ ]+' +data matches '([a-zA-Z¡-￿0-9_\-./@ ]+)\.(mp3|MP3|wav|WAV|ogg|OGG|opus|OPUS|avi|AVI|mp4|MP4|mkv|MKV)' +arg isfile $0 +plumb to mpv +plumb start mpv $file + +# postscript/pdf/dvi go to page but not over the a plumb port +# the port is here for reference but is unused +type is text +data matches '[a-zA-Z¡-￿0-9_\-./@ ]+' +data matches '([a-zA-Z¡-￿0-9_\-./@ ]+)\.(ps|PS|eps|EPS|pdf|PDF|dvi|DVI)' +arg isfile $0 +plumb to postscript +plumb start zathura $file + +# open office - s[xt][cdigmw], doc, xls, ppt +data matches '[a-zA-Z¡-￿0-9_\-./@ ]+' +data matches '([a-zA-Z¡-￿0-9_\-./@ ]+)\.([Ss][XxTt][CcDdIiGgMmWw]|[Dd][Oo][Cc]|[Xx][Ll][Ss]|[Pp][Pp][Tt])' +arg isfile $0 +plumb to libreoffice +plumb start libreoffice $file + +# existing files tagged by line number:columnumber or linenumber.columnumber, twice, go to editor +type is text +data matches '([.a-zA-Z¡-￿0-9_/\-@]*[a-zA-Z¡-￿0-9_/\- ])':$twocolonaddr,$twocolonaddr +arg isfile $1 +data set $file +attr add addr=$2-#0+#$3-#1,$4-#0+#$5-#1 +plumb to edit +plumb client $editor + +# existing files tagged by line number:columnumber or linenumber.columnumber, twice, go to editor +type is text +data matches '([.a-zA-Z¡-￿0-9_/\-@]*[a-zA-Z¡-￿0-9_/\- ])':$twocolonaddr +arg isfile $1 +data set $file +attr add addr=$2-#0+#$3-#1 +plumb to edit +plumb client $editor + +# existing files, possibly tagged by line number, go to editor +type is text +data matches '([.a-zA-Z¡-￿0-9_/\-@]*[a-zA-Z¡-￿0-9_/\- ])('$addr')?' +arg isfile $1 +data set $file +attr add addr=$3 +plumb to edit +plumb client $editor + +# .h files are looked up in /usr/include and passed to edit +type is text +data matches '([a-zA-Z¡-￿0-9/_\- ]+\.h)('$addr')?' +arg isfile /usr/include/$1 +data set $file +attr add addr=$3 +plumb to edit +plumb client $editor + +# .h files are looked up in /usr/local/include and passed to edit +type is text +data matches '([a-zA-Z¡-￿0-9/_\- ]+\.h)('$addr')?' +arg isfile /usr/local/include/$1 +data set $file +attr add addr=$3 +plumb to edit +plumb client $editor + +# .h files are looked up in $plan9/include and passed to edit +type is text +data matches '([a-zA-Z¡-￿0-9/_\- ]+\.h)('$addr')?' +arg isfile $plan9/include/$1 +data set $file +attr add addr=$3 +plumb to edit +plumb client $editor + +# .m files are looked up in /usr/inferno/module and passed to edit +type is text +data matches '([a-zA-Z¡-￿0-9/_\- ]+\.m)('$addr')?' +arg isfile /usr/inferno/module/$1 +data set $file +attr add addr=$3 +plumb to edit +plumb client window $editor + +# email addresses get a new mail window +type is text +data matches '[a-zA-Z0-9_+.\-]+@[a-zA-Z0-9_+.\-]*' +plumb to sendmail +plumb start /home/nilix/src/zenUtils/muttwrapper.sh $0 +# plumb start window rc -c '''echo % mail '''$0'; mail '$0 + +# man index entries are synthesized +type is text +data matches '([a-zA-Z¡-￿0-9_\-./]+)\(([1-8])\)' +plumb start rc -c 'man '$2' '$1' >[2=1] | nobs | plumb -i -d edit -a ''action=showdata filename=/man/'$1'('$2')''' + +