mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-19 11:10:25 +02:00
Fix texinfo->html for @acronym, @itemize
* module/texinfo/html.scm (itemize, acronym, tag-replacements, rules): Fix HTML serialization of @itemize and @acronym. Fixes #21772. * test-suite/tests/texinfo.html.test: New file. * test-suite/Makefile.am: Add new file.
This commit is contained in:
parent
937bd9509c
commit
a0d76d9c9e
3 changed files with 56 additions and 5 deletions
|
@ -37,10 +37,11 @@
|
||||||
;; margin-top on dd > p)
|
;; margin-top on dd > p)
|
||||||
|
|
||||||
(define-module (texinfo html)
|
(define-module (texinfo html)
|
||||||
:use-module (texinfo)
|
#:use-module (texinfo)
|
||||||
:use-module (sxml transform)
|
#:use-module (sxml transform)
|
||||||
:use-module (srfi srfi-13)
|
#:use-module (ice-9 match)
|
||||||
:export (stexi->shtml add-ref-resolver! urlify))
|
#:use-module (srfi srfi-13)
|
||||||
|
#:export (stexi->shtml add-ref-resolver! urlify))
|
||||||
|
|
||||||
;; The caller is responsible for carring the returned list.
|
;; The caller is responsible for carring the returned list.
|
||||||
(define (arg-ref key %-args)
|
(define (arg-ref key %-args)
|
||||||
|
@ -138,6 +139,18 @@ name, @code{#}, and the node name."
|
||||||
(cdr elts))
|
(cdr elts))
|
||||||
elts)))
|
elts)))
|
||||||
|
|
||||||
|
(define (itemize tag . elts)
|
||||||
|
`(ul ,@(match elts
|
||||||
|
;; Strip `bullet' attribute.
|
||||||
|
((('% . attrs) . elts) elts)
|
||||||
|
(elts elts))))
|
||||||
|
|
||||||
|
(define (acronym tag . elts)
|
||||||
|
(match elts
|
||||||
|
;; FIXME: Need attribute matcher that doesn't depend on attribute
|
||||||
|
;; order.
|
||||||
|
((('% ('acronym text) . _)) `(acronym ,text))))
|
||||||
|
|
||||||
(define (table tag args . body)
|
(define (table tag args . body)
|
||||||
(let ((formatter (caar (arg-req 'formatter args))))
|
(let ((formatter (caar (arg-req 'formatter args))))
|
||||||
(cons 'dl
|
(cons 'dl
|
||||||
|
@ -184,7 +197,6 @@ name, @code{#}, and the node name."
|
||||||
(subheading h4)
|
(subheading h4)
|
||||||
(subsubheading h5)
|
(subsubheading h5)
|
||||||
(quotation blockquote)
|
(quotation blockquote)
|
||||||
(itemize ul)
|
|
||||||
(item li) ;; itemx ?
|
(item li) ;; itemx ?
|
||||||
(para p)
|
(para p)
|
||||||
(*fragment* div) ;; should be ok
|
(*fragment* div) ;; should be ok
|
||||||
|
@ -234,6 +246,8 @@ name, @code{#}, and the node name."
|
||||||
(node . ,node) (anchor . ,node)
|
(node . ,node) (anchor . ,node)
|
||||||
(table . ,table)
|
(table . ,table)
|
||||||
(enumerate . ,enumerate)
|
(enumerate . ,enumerate)
|
||||||
|
(itemize . ,itemize)
|
||||||
|
(acronym . ,acronym)
|
||||||
(entry *preorder* . ,entry)
|
(entry *preorder* . ,entry)
|
||||||
|
|
||||||
(deftp . ,def) (defcv . ,def) (defivar . ,def) (deftypeivar . ,def)
|
(deftp . ,def) (defcv . ,def) (defivar . ,def) (deftypeivar . ,def)
|
||||||
|
|
|
@ -171,6 +171,7 @@ SCM_TESTS = tests/00-initial-env.test \
|
||||||
tests/syntax.test \
|
tests/syntax.test \
|
||||||
tests/texinfo.test \
|
tests/texinfo.test \
|
||||||
tests/texinfo.docbook.test \
|
tests/texinfo.docbook.test \
|
||||||
|
tests/texinfo.html.test \
|
||||||
tests/texinfo.serialize.test \
|
tests/texinfo.serialize.test \
|
||||||
tests/texinfo.string-utils.test \
|
tests/texinfo.string-utils.test \
|
||||||
tests/threads.test \
|
tests/threads.test \
|
||||||
|
|
36
test-suite/tests/texinfo.html.test
Normal file
36
test-suite/tests/texinfo.html.test
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
;;;; texinfo.html.test -*- scheme -*-
|
||||||
|
;;;;
|
||||||
|
;;;; Copyright (C) 2016 Free Software Foundation, Inc.
|
||||||
|
;;;;
|
||||||
|
;;;; This library is free software; you can redistribute it and/or
|
||||||
|
;;;; modify it under the terms of the GNU Lesser General Public
|
||||||
|
;;;; License as published by the Free Software Foundation; either
|
||||||
|
;;;; version 3 of the License, or (at your option) any later version.
|
||||||
|
;;;;
|
||||||
|
;;;; This library is distributed in the hope that it will be useful,
|
||||||
|
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
;;;; Lesser General Public License for more details.
|
||||||
|
;;;;
|
||||||
|
;;;; You should have received a copy of the GNU Lesser General Public
|
||||||
|
;;;; License along with this library; if not, write to the Free Software
|
||||||
|
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; Unit tests for (texinfo html).
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(define-module (test-suite texinfo-html)
|
||||||
|
#:use-module (test-suite lib)
|
||||||
|
#:use-module (texinfo)
|
||||||
|
#:use-module (texinfo html))
|
||||||
|
|
||||||
|
(define (texi-fragment->shtml str)
|
||||||
|
(stexi->shtml (texi-fragment->stexi str)))
|
||||||
|
|
||||||
|
(pass-if-equal '(div (ul (li (p "foo"))))
|
||||||
|
(texi-fragment->shtml "@itemize\n@item foo\n@end itemize\n"))
|
||||||
|
(pass-if-equal '(div (p (acronym "GNU")))
|
||||||
|
(texi-fragment->shtml "@acronym{GNU}\n"))
|
Loading…
Add table
Add a link
Reference in a new issue