summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-04-13 02:09:09 +0200
committerLudovic Courtès <ludo@gnu.org>2020-04-14 16:01:45 +0200
commit4487e42cba15110bce91d729b3e964f62347ed50 (patch)
treeb4f96347e3960cee0f428b581cff9dd2fd5b54c5
parentf37789a523d3e4169b72312c3540b7624415c116 (diff)
downloadpatches-4487e42cba15110bce91d729b3e964f62347ed50.tar
patches-4487e42cba15110bce91d729b3e964f62347ed50.tar.gz
doc: Avoid invalid 'match' pattern in 'syntax-highlighted-html'.
This is a followup to da9deba13d551e316f5a99a614834efa27ddc7d1. Last-minute modification of the 'match' pattern would lead to an error: "multiple ellipsis patterns not allowed at same level" * doc/build.scm (syntax-highlighted-html)[build](collect-anchors): Add 'worthy-entry?' procedure and use it instead of the unsupported pattern for ('dt ...).
-rw-r--r--doc/build.scm23
1 files changed, 16 insertions, 7 deletions
diff --git a/doc/build.scm b/doc/build.scm
index c3d61f837b..ca81d813a9 100644
--- a/doc/build.scm
+++ b/doc/build.scm
@@ -373,17 +373,26 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
(('*ENTITY* _ ...) #t)
(_ #f)))
+ (define (worthy-entry? lst)
+ ;; Attempt to match:
+ ;; Scheme Variable: <strong>x</strong>
+ ;; but not:
+ ;; <code>cups-configuration</code> parameter: …
+ (let loop ((lst lst))
+ (match lst
+ (((? string-or-entity?) rest ...)
+ (loop rest))
+ ((('strong _ ...) _ ...)
+ #t)
+ (_ #f))))
+
(let ((shtml (call-with-input-file file html->shtml)))
(let loop ((shtml shtml)
(vhash vhash))
(match shtml
- ;; Attempt to match:
- ;; <dt>Scheme Variable: <strong>x</strong></dt>
- ;; but not:
- ;; <dt><code>cups-configuration</code> parameter: …</dt>
- (('dt ('@ ('id id))
- (? string-or-entity?) ... ('strong _ ...) _ ...)
- (if (string-prefix? "index-" id)
+ (('dt ('@ ('id id)) rest ...)
+ (if (and (string-prefix? "index-" id)
+ (worthy-entry? rest))
(vhash-cons (anchor-id->key id)
(string-append (basename file)
"#" id)