aboutsummaryrefslogtreecommitdiff
path: root/plumb/basic
blob: d40f6a4b91f439aacd561ff0a1b325af9a77f0ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# 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 9 page $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 9 page $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 openoffice
plumb start openoffice $file

# existing files tagged by line number:columnumber or linenumber.columnumber, 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
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

# faces -> new mail window for message
type	is	text
data	matches	'[a-zA-Z¡-￿0-9_\-./]+'
data	matches	'/mail/fs/[a-zA-Z¡-￿0-9/]+/[0-9]+'
plumb	to	showmail
plumb	start	window -r 4 120 750 600 upas/nedmail -s $0

# 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 wmail $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')'''

# start rule for images without known suffixes
dst is image
arg isfile $data
plumb to image
plumb start 9 page $data

# start rule for postscript without known suffixes
dst is postscript
arg isfile $data
plumb start 9 page $data