guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 06/11: Fix texinfo->html for @acronym, @itemize


From: Andy Wingo
Subject: [Guile-commits] 06/11: Fix texinfo->html for @acronym, @itemize
Date: Sun, 26 Jun 2016 20:58:18 +0000 (UTC)

wingo pushed a commit to branch stable-2.0
in repository guile.

commit a0d76d9c9ee3148c55c0eff2b7ae914e3bdfbf68
Author: Andy Wingo <address@hidden>
Date:   Fri Jun 24 17:09:39 2016 +0200

    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.
---
 module/texinfo/html.scm            |   24 +++++++++++++++++++-----
 test-suite/Makefile.am             |    1 +
 test-suite/tests/texinfo.html.test |   36 ++++++++++++++++++++++++++++++++++++
 3 files changed, 56 insertions(+), 5 deletions(-)

diff --git a/module/texinfo/html.scm b/module/texinfo/html.scm
index 709744d..6a07cff 100644
--- a/module/texinfo/html.scm
+++ b/module/texinfo/html.scm
@@ -37,10 +37,11 @@
 ;; margin-top on dd > p)
 
 (define-module (texinfo html)
-  :use-module (texinfo)
-  :use-module (sxml transform)
-  :use-module (srfi srfi-13)
-  :export (stexi->shtml add-ref-resolver! urlify))
+  #:use-module (texinfo)
+  #:use-module (sxml transform)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-13)
+  #:export (stexi->shtml add-ref-resolver! urlify))
 
 ;; The caller is responsible for carring the returned list.
 (define (arg-ref key %-args)
@@ -138,6 +139,18 @@ name, @code{#}, and the node name."
                    (cdr 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)
   (let ((formatter (caar (arg-req 'formatter args))))
     (cons 'dl
@@ -184,7 +197,6 @@ name, @code{#}, and the node name."
     (subheading   h4)
     (subsubheading       h5)
     (quotation    blockquote)
-    (itemize      ul)
     (item         li) ;; itemx ?
     (para         p)
     (*fragment*   div) ;; should be ok
@@ -234,6 +246,8 @@ name, @code{#}, and the node name."
     (node . ,node) (anchor . ,node)
     (table . ,table)
     (enumerate . ,enumerate)
+    (itemize . ,itemize)
+    (acronym . ,acronym)
     (entry *preorder* . ,entry)
 
     (deftp . ,def) (defcv . ,def) (defivar . ,def) (deftypeivar . ,def)
diff --git a/test-suite/Makefile.am b/test-suite/Makefile.am
index c0c79cb..fabbbb5 100644
--- a/test-suite/Makefile.am
+++ b/test-suite/Makefile.am
@@ -171,6 +171,7 @@ SCM_TESTS = tests/00-initial-env.test               \
            tests/syntax.test                   \
            tests/texinfo.test                  \
            tests/texinfo.docbook.test          \
+           tests/texinfo.html.test             \
            tests/texinfo.serialize.test        \
            tests/texinfo.string-utils.test     \
            tests/threads.test                  \
diff --git a/test-suite/tests/texinfo.html.test 
b/test-suite/tests/texinfo.html.test
new file mode 100644
index 0000000..02f4d28
--- /dev/null
+++ b/test-suite/tests/texinfo.html.test
@@ -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 "@address@hidden address@hidden itemize\n"))
+(pass-if-equal '(div (p (acronym "GNU")))
+    (texi-fragment->shtml "@acronym{GNU}\n"))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]