]> code.delx.au - gnu-emacs-elpa/blob - packages/muse/muse-import-docbook.el
Merge commit '0cda39255827f283e7578cd469ae42daad9556a2' from js2-mode
[gnu-emacs-elpa] / packages / muse / muse-import-docbook.el
1 ;;; muse-import-docbook.el --- convert Docbook XML into Muse format
2
3 ;; Copyright (C) 2006, 2007, 2008, 2009, 2010
4 ;; Free Software Foundation, Inc.
5
6 ;; Author: Elena Pomohaci <e.pomohaci@gmail.com>
7
8 ;; This file is part of Emacs Muse. It is not part of GNU Emacs.
9
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.
14
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.
19
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.
24
25 ;;; Commentary:
26
27 ;; It works only for article type docbook docs and recognize
28 ;; followings elements: article, sect1, sect2, sect3, title,
29
30 ;;; Contributors:
31
32 ;;; Code:
33
34 (require 'muse-import-xml)
35
36 (defvar muse-import-docbook-prefix "muse-import-docbook-"
37 "The name prefix for tag functions")
38
39 (defvar muse-import-docbook-para-indent "\n\n"
40 "Para elements indentation (0, less than 6 spaces, more than 6 spaces)")
41
42 (defun muse-import-docbook-reset-para-indent ()
43 (setq muse-import-docbook-para-indent "\n\n"))
44
45
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))
53
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))))
60
61
62 ;;; element specific functions
63
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)))))
68
69
70 (defun muse-import-docbook-article (node)
71 "Article conversion function"
72 (muse-import-xml-node node))
73
74 (defun muse-import-docbook-articleinfo (node)
75 "Article conversion function"
76 (insert "#title ")
77 (muse-import-docbook-get-title node)
78 (insert ?\n))
79
80
81 (defalias 'muse-import-docbook-appendix 'muse-import-docbook-article)
82
83 (defalias 'muse-import-docbook-appendixinfo 'muse-import-docbook-articleinfo)
84
85
86 (defun muse-import-docbook-sect1 (node)
87 "Section 1 conversion function"
88 (insert ?\n "* ")
89 (muse-import-docbook-get-title node))
90
91 (defun muse-import-docbook-sect2 (node)
92 "Section 2 conversion function"
93 (insert ?\n "** ")
94 (muse-import-docbook-get-title node))
95
96 (defun muse-import-docbook-sect3 (node)
97 "Section 3 conversion function"
98 (insert ?\n "*** ")
99 (muse-import-docbook-get-title node))
100
101
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 "]]")))
106
107 (defun muse-import-docbook-para (node)
108 (insert muse-import-docbook-para-indent)
109 (muse-import-xml-node node))
110
111
112 (defun muse-import-docbook-emphasis (node)
113 (insert "*")
114 (muse-import-xml-node node)
115 (insert "*"))
116
117 (defun muse-import-docbook-quote (node)
118 (insert "\"")
119 (muse-import-xml-node node)
120 (insert "\""))
121
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))
126
127 (defun muse-import-docbook-member (node)
128 (insert "\n> ")
129 (muse-import-xml-node node))
130
131 (defun muse-import-docbook-bridgehead (node)
132 (insert "\n* ")
133 (muse-import-xml-node node))
134
135 (provide 'muse-import-docbook)
136
137 ;;; muse-import-docbook.el ends here