blob: ddd54c9fda0914ab59ed6c8c634a06037a091294 (
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
|
@
@
@
@
@(bind txrhash @(hash :equal-based))
@(bind txlhash @(hash :equal-based))
@(bind tgthash txrhash)
@(bind tagmap @(hash :equal-based))
@(do
(defvar dupes (hash))
(defun hash-title (title)
(let* ((h (logtrunc (hash-equal title) 32))
(existing [dupes h]))
(when existing
(unless (equal title existing)
(error "~a ~a hash collision!" existing title)))
(set [dupes h] title)
(format nil "N-~,08X" h)))
(set [tagmap "lbAB"] (hash-title "NAME")))
Content-type: text/html
@(skip 15)
<H1>TXR</H1>
@(skip)Updated: @YEAR-@MONTH-@DAY<BR><A HREF="#index">Index</A>
@(bind TIME @(make-time-utc (int-str YEAR) (int-str MONTH) (int-str DAY)
0 0 0 nil))
@(bind lookup @[orf txrhash txlhash])
@(bind VERSION nil)
@(collect :vars (BODY LOOKUP))
@ (some)
@ (cases)
<A NAME="@tag"> </A>
@ (some)
<H@level>@sec @title</H@level>
@ (or)
<H@level>@sec @title
</H@level>
@ (end)
@ (bind newtag @(hash-title title))
@ (do (set [tagmap tag] newtag))
@ (output :into BODY)
<A NAME="@newtag"> </A>
<H@level>@sec @title</H@level>
@ (end)
@ (cat BODY "\n")
@ (or)
@BODY
@ (end)
@ (and)
<H2>@nil TXR LISP</H2>
@ (set lookup @[orf txlhash txrhash])
@ (and)
<B>TXR</B> - text processing language (version @ver)
@ (set VERSION ver)
@ (end)
@ (bind LOOKUP lookup)
@(until)
<HR>
<A NAME="index"> </A><H2>Index</H2>
@(end)
<HR>
@(collect :vars (TOC))
@ (some)
@ (cases)
<DT><A HREF="#@tag">@rest
@ (output :into TOC)
<DT><A HREF="#@[tagmap tag]">@rest
@ (end)
@ (or)
@TOC
@ (end)
@ (and)
<DT><A HREF="@nil">@nil TXR LISP</A><DD>
@ (set tgthash txlhash)
@ (and)
<DT><A HREF="#@tag">@(coll :vars (sym))<TT>@sym</TT>@(end)
@ (do (mapdo (do unless [tgthash @1] (set [tgthash @1] [tagmap tag]))
sym))
@ (end)
@(until)
This document was created by
@(end)
@(set BODY @(mapcar (do if (search-regex @1 #/<H[1-9]>/)
@1
(regsub #/<TT>.%<\/TT>/
(do let ((tok [@1 4 -5]) tag)
(if (match-str tok "@(")
(let ((sym [tok 2 -1]))
(set tag [txrhash sym]))
(set tag [@@2 tok]))
(if tag
`<A HREF="#@tag">@1</A>`
@1))
@1))
BODY
LOOKUP))
@(output)
<HTML>
<HEAD><TITLE>Manpage for TXR @VERSION</TITLE>
</HEAD><BODY>
<H2>Manpage for <A HREF="#@[tagmap "lbAB"]">TXR </a>@VERSION</H2>
<H2>@(time-string-utc TIME "%b %d, %Y")</H2>
<p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7-----
">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
</p>
@(repeat)
@TOC
@(end)
@(repeat)
@BODY
@(first)
@(end)
</BODY>
</HTML>
@(end)
|