Fix build failure for muse-ikiwiki.
[muse-el.git] / lisp / muse-import-docbook.el
blobed1b22b22c39eca62fda83166c1517a6f7bbc30e
1 ;;; muse-import-docbook.el --- convert Docbook XML into Muse format
3 ;; Copyright (C) 2006, 2007, 2008, 2009, 2010
4 ;; Free Software Foundation, Inc.
6 ;; Author: Elena Pomohaci <e.pomohaci@gmail.com>
8 ;; This file is part of Emacs Muse. It is not part of GNU Emacs.
10 ;; Emacs Muse is free software; you can redistribute it and/or modify
11 ;; it under the terms of the GNU General Public License as published
12 ;; by the Free Software Foundation; either version 3, or (at your
13 ;; option) any later version.
15 ;; Emacs Muse is distributed in the hope that it will be useful, but
16 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 ;; General Public License for more details.
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with Emacs Muse; see the file COPYING. If not, write to the
22 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
23 ;; Boston, MA 02110-1301, USA.
25 ;;; Commentary:
27 ;; It works only for article type docbook docs and recognize
28 ;; followings elements: article, sect1, sect2, sect3, title,
30 ;;; Contributors:
32 ;;; Code:
34 (require 'muse-import-xml)
36 (defvar muse-import-docbook-prefix "muse-import-docbook-"
37 "The name prefix for tag functions")
39 (defvar muse-import-docbook-para-indent "\n\n"
40 "Para elements indentation (0, less than 6 spaces, more than 6 spaces)")
42 (defun muse-import-docbook-reset-para-indent ()
43 (setq muse-import-docbook-para-indent "\n\n"))
46 ;;;###autoload
47 (defun muse-import-docbook (src dest)
48 "Convert the Docbook buffer SRC to Muse, writing output in the DEST buffer."
49 (interactive "bDocbook buffer:\nBMuse buffer:")
50 (setq muse-import-xml-prefix muse-import-docbook-prefix)
51 (setq muse-import-xml-generic-function-name "muse-import-xml-node")
52 (muse-import-xml src dest))
54 ;;;###autoload
55 (defun muse-import-docbook-files (src dest)
56 "Convert the Docbook file SRC to Muse, writing output to the DEST file."
57 (interactive "fDocbook file:\nFMuse file:")
58 (with-temp-file dest
59 (muse-import-docbook (find-file-noselect src) (current-buffer))))
62 ;;; element specific functions
64 (defun muse-import-docbook-get-title (node)
65 (let ((tit (car (xml-get-children node 'title))))
66 (insert (car (cddr tit)) ?\n ?\n)
67 (muse-import-xml-parse-tree (xml-node-children (remove tit node)))))
70 (defun muse-import-docbook-article (node)
71 "Article conversion function"
72 (muse-import-xml-node node))
74 (defun muse-import-docbook-articleinfo (node)
75 "Article conversion function"
76 (insert "#title ")
77 (muse-import-docbook-get-title node)
78 (insert ?\n))
81 (defalias 'muse-import-docbook-appendix 'muse-import-docbook-article)
83 (defalias 'muse-import-docbook-appendixinfo 'muse-import-docbook-articleinfo)
86 (defun muse-import-docbook-sect1 (node)
87 "Section 1 conversion function"
88 (insert ?\n "* ")
89 (muse-import-docbook-get-title node))
91 (defun muse-import-docbook-sect2 (node)
92 "Section 2 conversion function"
93 (insert ?\n "** ")
94 (muse-import-docbook-get-title node))
96 (defun muse-import-docbook-sect3 (node)
97 "Section 3 conversion function"
98 (insert ?\n "*** ")
99 (muse-import-docbook-get-title node))
102 (defun muse-import-docbook-graphic (node)
103 "Graphic conversion function. Image format is forced to PNG"
104 (let ((name (xml-get-attribute node 'fileref)))
105 (insert "\n[[img/" name ".png][" name "]]")))
107 (defun muse-import-docbook-para (node)
108 (insert muse-import-docbook-para-indent)
109 (muse-import-xml-node node))
112 (defun muse-import-docbook-emphasis (node)
113 (insert "*")
114 (muse-import-xml-node node)
115 (insert "*"))
117 (defun muse-import-docbook-quote (node)
118 (insert "\"")
119 (muse-import-xml-node node)
120 (insert "\""))
122 (defun muse-import-docbook-blockquote (node)
123 (setq muse-import-docbook-para-indent "\n\n ")
124 (muse-import-xml-node node)
125 (muse-import-docbook-reset-para-indent))
127 (defun muse-import-docbook-member (node)
128 (insert "\n> ")
129 (muse-import-xml-node node))
131 (defun muse-import-docbook-bridgehead (node)
132 (insert "\n* ")
133 (muse-import-xml-node node))
135 (provide 'muse-import-docbook)
137 ;;; muse-import-docbook.el ends here