2
* Copyright (C) 2001-2012 Michael Fuchs
4
* This file is part of herold.
6
* herold is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
11
* herold is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with herold. If not, see <http://www.gnu.org/licenses/>.
19
package org.dbdoclet.trafo.html.docbook.editor;
21
import org.dbdoclet.service.StringServices;
22
import org.dbdoclet.trafo.tag.docbook.DocBookElement;
23
import org.dbdoclet.xiphias.XmlServices;
24
import org.dbdoclet.xiphias.dom.CharacterDataImpl;
25
import org.dbdoclet.xiphias.dom.CommentImpl;
27
public class CommentEditor extends Editor {
30
public EditorInstruction edit(EditorInstruction values) throws EditorException {
34
setValues(super.edit(values));
36
DocBookElement parent = getParent();
39
CharacterDataImpl node = getCharacterDataNode();
41
if (node instanceof CommentImpl == false) {
42
return finalizeValues();
45
CommentImpl comment = (CommentImpl) node;
46
String text = comment.getData();
49
return finalizeValues();
53
text = StringServices.cutPrefix(text, "<!--");
54
text = StringServices.cutSuffix(text, "-->");
56
text = StringServices.cutPrefix(text, "[:dbdoclet:]");
59
if (text.startsWith("insert ")) {
61
text = StringServices.cutPrefix(text, "insert");
64
text = XmlServices.textToXml(text);
65
text = StringServices.replace(text, "(", "<");
66
text = StringServices.replace(text, ")", ">");
67
text = StringServices.replace(text, "<<", "(");
68
text = StringServices.replace(text, ">>", ")");
70
parent.appendChild(text, false);
73
return finalizeValues();
75
} catch (Exception oops) {
76
throw new EditorException(oops);