summaryrefslogtreecommitdiffstats
path: root/genman.txr
blob: 6313052156ac7eb1c75b9985d6dc62c8ad37c356 (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
145
@# This requires a hacked version of man2html
@# See here: http://www.kylheku.com/cgit/man
@(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">&nbsp;</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">&nbsp;</A>
<H@level>@sec @title</H@level>
@      (end)
@      (cat BODY "\n")
@    (or)
@BODY
@    (end)
@  (and)
<H2>@nil TXR LISP</H2>
@    (set lookup txrhash)
@  (and)
<B>TXR</B> - text processing language (version @ver)
@    (set VERSION ver)
@  (end)
@  (bind LOOKUP lookup)
@(until)
<HR>
<A NAME="index">&nbsp;</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 @(let ((inside-tt nil)
                  (inside-syntax nil))
              (mapcar (do cond
                        ((equal @1 "<TT>") (set inside-tt t) @1)
                        ((equal @1 "</TT>") (set inside-tt nil)
                                            (set inside-syntax nil)
                                            @1)
                        ((equal @1 "<DT>Syntax:<DD>") (set inside-syntax t) @1)
                        ((or (and inside-tt (not inside-syntax))
                             (match-regex @1 #/<DT><TT>/))
                          (regsub #/@?[\(\[][^ )&]+/
                                  (do let* ((at (if (eql [@1 0] #\@)
                                                 (pop @1)))
                                            (tok [@1 1..:])
                                            (bkt [@1 0])
                                            (tag [(if at txrhash txlhash)
                                                  tok]))
                                    (if tag
                                      `@at@bkt<A HREF="#@tag">@tok</A>`
                                      `@at@1`)) @1))
                        ((search-regex @1 #/<H[1-9]>/) @1)
                        (t (regsub #/<TT>.%<\/TT>/
                             (do let* ((tok [@1 4 -5])
                                       (tend (break-str tok ") "))
                                       pfx sym sfx tag)
                               (cond
                                 ((match-str tok "@(")
                                  (set pfx "@("
                                       sym [tok 2 tend]
                                       sfx [tok tend .. :]
                                       tag [txrhash sym]))
                                 (t (set tag [@@2 tok]
                                         sym tok)))
                               (if tag
                                 `<TT>@pfx<A HREF="#@tag">@sym</A>@sfx</TT>`
                                 @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)