tbasic - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tbasic (4420B)
       ---
            1 # these are generally in order from most specific to least,
            2 # since first rule that fires wins.
            3 
            4 include fileaddr
            5 
            6 # declarations of ports without rules
            7 plumb to seemail
            8 plumb to showmail
            9 
           10 # relative files as file: urls get made into absolute paths
           11 type is text
           12 data matches 'file:([.a-zA-Z¡-￿0-9_\-]([.a-zA-Z¡-￿0-9_/\-]*[a-zA-Z¡-￿0-9_/\-]))?'
           13 arg isfile        $1
           14 data set        file://$file
           15 plumb to web
           16 plumb start web $data
           17 
           18 # urls go to web browser
           19 type is text
           20 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_?,%#~&/\-+=]+)*'
           21 plumb to web
           22 plumb start web $0
           23 
           24 # doc and rtf files go to wdoc2txt
           25 type is text
           26 data matches '[a-zA-Z¡-￿0-9_\-./]+'
           27 data matches '([a-zA-Z¡-￿0-9_\-./]+)\.(doc|rtf)'
           28 arg isfile        $0
           29 plumb to msword
           30 plumb start wdoc2txt $file
           31 
           32 # start rule for microsoft word documents without .doc suffix
           33 type is text
           34 dst is msword
           35 plumb to msword
           36 plumb start wdoc2txt $file
           37 
           38 # image files go to page
           39 type is text
           40 data matches '[a-zA-Z¡-￿0-9_\-./@]+'
           41 data matches '([a-zA-Z¡-￿0-9_\-./@]+)\.(jpe?g|JPE?G|gif|GIF|tiff?|TIFF?|ppm|bit|png|PNG)'
           42 arg isfile        $0
           43 plumb to image
           44 plumb start 9 page $file
           45 
           46 # postscript/pdf/dvi go to page but not over the a plumb port
           47 # the port is here for reference but is unused
           48 type is text
           49 data matches '[a-zA-Z¡-￿0-9_\-./@]+'
           50 data matches '([a-zA-Z¡-￿0-9_\-./@]+)\.(ps|PS|eps|EPS|pdf|PDF|dvi|DVI)'
           51 arg isfile        $0
           52 plumb to postscript
           53 plumb start 9 page $file
           54 
           55 # open office - s[xt][cdigmw], doc, xls, ppt
           56 data matches '[a-zA-Z¡-￿0-9_\-./@]+'
           57 data matches '([a-zA-Z¡-￿0-9_\-./@]+)\.([Ss][XxTt][CcDdIiGgMmWw]|[Dd][Oo][Cc]|[Xx][Ll][Ss]|[Pp][Pp][Tt])'
           58 arg isfile        $0
           59 plumb to openoffice
           60 plumb start openoffice $file
           61 
           62 # existing files tagged by line number:columnumber or linenumber.columnumber, twice, go to editor
           63 type is text
           64 data matches '([.a-zA-Z¡-￿0-9_/\-@]*[a-zA-Z¡-￿0-9_/\-])':$twocolonaddr,$twocolonaddr
           65 arg isfile     $1
           66 data set       $file
           67 attr add       addr=$2-#0+#$3-#1,$4-#0+#$5-#1
           68 plumb to edit
           69 plumb client $editor
           70 
           71 # existing files tagged by line number:columnumber or linenumber.columnumber, twice, go to editor
           72 type is text
           73 data matches '([.a-zA-Z¡-￿0-9_/\-@]*[a-zA-Z¡-￿0-9_/\-])':$twocolonaddr
           74 arg isfile     $1
           75 data set       $file
           76 attr add       addr=$2-#0+#$3-#1
           77 plumb to edit
           78 plumb client $editor
           79 
           80 # existing files, possibly tagged by line number, go to editor
           81 type is text
           82 data matches '([.a-zA-Z¡-￿0-9_/\-@]*[a-zA-Z¡-￿0-9_/\-])('$addr')?'
           83 arg isfile        $1
           84 data set        $file
           85 attr add        addr=$3
           86 plumb to edit
           87 plumb client $editor
           88 
           89 # .h files are looked up in /usr/include and passed to edit
           90 type is text
           91 data matches '([a-zA-Z¡-￿0-9/_\-]+\.h)('$addr')?'
           92 arg isfile        /usr/include/$1
           93 data set        $file
           94 attr add        addr=$3
           95 plumb to edit
           96 plumb client $editor
           97 
           98 # .h files are looked up in /usr/local/include and passed to edit
           99 type is text
          100 data matches '([a-zA-Z¡-￿0-9/_\-]+\.h)('$addr')?'
          101 arg isfile        /usr/local/include/$1
          102 data set        $file
          103 attr add        addr=$3
          104 plumb to edit
          105 plumb client $editor
          106 
          107 # .h files are looked up in $plan9/include and passed to edit
          108 type is text
          109 data matches '([a-zA-Z¡-￿0-9/_\-]+\.h)('$addr')?'
          110 arg isfile        $plan9/include/$1
          111 data set        $file
          112 attr add        addr=$3
          113 plumb to edit
          114 plumb client $editor
          115 
          116 # .m files are looked up in /usr/inferno/module and passed to edit
          117 type is text
          118 data matches '([a-zA-Z¡-￿0-9/_\-]+\.m)('$addr')?'
          119 arg isfile        /usr/inferno/module/$1
          120 data set        $file
          121 attr add        addr=$3
          122 plumb to edit
          123 plumb client window $editor
          124 
          125 # faces -> new mail window for message
          126 type        is        text
          127 data        matches        '[a-zA-Z¡-￿0-9_\-./]+'
          128 data        matches        '/mail/fs/[a-zA-Z¡-￿0-9/]+/[0-9]+'
          129 plumb        to        showmail
          130 plumb        start        window -r 4 120 750 600 upas/nedmail -s $0
          131 
          132 # email addresses get a new mail window
          133 type is text
          134 data matches '[a-zA-Z0-9_+.\-]+@[a-zA-Z0-9_+.\-]*'
          135 plumb to sendmail
          136 plumb start wmail $0
          137 # plumb start window rc -c '''echo % mail '''$0'; mail '$0
          138 
          139 # man index entries are synthesized
          140 type is text
          141 data matches '([a-zA-Z¡-￿0-9_\-./]+)\(([1-8])\)'
          142 plumb start rc -c 'man '$2' '$1' >[2=1] | nobs | plumb -i -d edit -a ''action=showdata filename=/man/'$1'('$2')'''
          143 
          144 # start rule for images without known suffixes
          145 dst is image
          146 arg isfile $data
          147 plumb to image
          148 plumb start 9 page $data
          149 
          150 # start rule for postscript without known suffixes
          151 dst is postscript
          152 arg isfile $data
          153 plumb start 9 page $data