summaryrefslogtreecommitdiffstats
path: root/genman.txr
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-07-03 07:47:09 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-07-03 07:47:09 -0700
commit223e3245322bd83d6217482a6a199cf3ae7bfa3d (patch)
tree98abd2a526e2966b620c26839b7c43aa041531cc /genman.txr
parent1112aa72c98350e064f5bc11fd85a704c9270bc1 (diff)
downloadtxr-223e3245322bd83d6217482a6a199cf3ae7bfa3d.tar.gz
txr-223e3245322bd83d6217482a6a199cf3ae7bfa3d.tar.bz2
txr-223e3245322bd83d6217482a6a199cf3ae7bfa3d.zip
* genman.txr: Simplify double plass over BODY into single pass.
Diffstat (limited to 'genman.txr')
-rw-r--r--genman.txr58
1 files changed, 28 insertions, 30 deletions
diff --git a/genman.txr b/genman.txr
index 77a84016..63130521 100644
--- a/genman.txr
+++ b/genman.txr
@@ -47,7 +47,7 @@ Content-type: text/html
@ (end)
@ (and)
<H2>@nil TXR LISP</H2>
-@ (set lookup @[orf txlhash txrhash])
+@ (set lookup txrhash)
@ (and)
<B>TXR</B> - text processing language (version @ver)
@ (set VERSION ver)
@@ -79,20 +79,6 @@ Content-type: text/html
@(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))
@(set BODY @(let ((inside-tt nil)
(inside-syntax nil))
(mapcar (do cond
@@ -103,21 +89,33 @@ This document was created by
((equal @1 "<DT>Syntax:<DD>") (set inside-syntax t) @1)
((or (and inside-tt (not inside-syntax))
(match-regex @1 #/<DT><TT>/))
- (let* ((out0 (regsub #/@\([a-z0-9\-]+/
- (do let* ((tok [@1 2..:])
- (tag (or [txlhash tok]
- [@@2 tok])))
- (if tag
- `\@(<A HREF="#@tag">@tok</A>`
- @1)) @1)))
- (regsub #/[\(\[][^ )&]+/
- (do let* ((tok [@1 1..:])
- (bkt [@1 0])
- (tag [txlhash tok]))
- (if tag
- `@bkt<A HREF="#@tag">@tok</A>`
- @1)) out0)))
- (t @1))
+ (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)