Author: tchemit
Date: 2009-08-16 14:07:32 +0200 (Sun, 16 Aug 2009)
New Revision: 393
Added:
trunk/jrst/src/test/java/org/nuiton/jrst/JRSTTest.java
Removed:
trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtilsConvertisor.java
Modified:
trunk/jrst/src/main/java/org/nuiton/jrst/JRST.java
trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtils2RST.java
trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtilsVisitor.java
Log:
- make this works on topic
- simplify (remove DocUtilsConvertisor which give use nothing else)
- improve code (use constants and StringBuilder instead ofString concatenation = bad)
- add JRSTTest test to test toRst mode (must be continued...)
Modified: trunk/jrst/src/main/java/org/nuiton/jrst/JRST.java
===================================================================
--- trunk/jrst/src/main/java/org/nuiton/jrst/JRST.java 2009-08-16 12:05:26 UTC (rev 392)
+++ trunk/jrst/src/main/java/org/nuiton/jrst/JRST.java 2009-08-16 12:07:32 UTC (rev 393)
@@ -438,7 +438,8 @@
// Recuperation du resultat
String result = visitor.getResult();
-
+ // nettoyage du visiteur
+ visitor.clear();
// Ecriture du resultat dans un fichier
// prepare the output flux
FileWriter out = null;
Modified: trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtils2RST.java
===================================================================
--- trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtils2RST.java 2009-08-16 12:05:26 UTC (rev 392)
+++ trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtils2RST.java 2009-08-16 12:07:32 UTC (rev 393)
@@ -1,8 +1,3 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
package org.nuiton.jrst.convertisor;
import java.util.List;
@@ -19,539 +14,529 @@
*
* @author letellier
*/
-public class DocUtils2RST extends DocUtilsConvertisor {
+public class DocUtils2RST extends DocUtilsVisitor {
/** to use log facility, just put in your code: log.info(\"...\"); */
- private static Log log = LogFactory.getLog(DocUtilsVisitor.class);
-
+ private static Log log = LogFactory.getLog(DocUtils2RST.class);
protected int level = 0;
- public DocUtils2RST() {
- }
-
@Override
public String composeDocument(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeTitle(Element e) {
String result = e.getText();
- String underLine = "";
- for (int i = 0;i<result.length();i++){
+ String underLine = EMPTY_STRING;
+ for (int i = 0; i < result.length(); i++) {
underLine += TITLE_CHAR.charAt(level);
}
- result += '\n' + underLine + '\n';
- log.debug("composeTitle : " + result);
+ result += LINE_SEPARATOR + underLine + LINE_SEPARATOR;
+ log.debug("composeTitle :\n" + result);
return result;
}
@Override
public String composeSubTitle(Element e) {
String result = e.getText();
- String underLine = "";
- for (int i = 0;i<result.length();i++){
+ String underLine = EMPTY_STRING;
+ for (int i = 0; i < result.length(); i++) {
underLine += TITLE_CHAR.charAt(level);
}
- result += '\n' + underLine + '\n';
- log.debug("composeSubTitle : " + result);
+ result += LINE_SEPARATOR + underLine + LINE_SEPARATOR;
+ log.debug("composeSubTitle :\n" + result);
return result;
}
@Override
public String composeDocInfo(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeAutor(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeAutors(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeOrganisation(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeAddress(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeContact(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeVersion(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeResvision(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeStatus(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeDate(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeCopyright(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeDecoration(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeHeader(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeFooter(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeSection(Element e) {
level++;
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeTopic(Element e) {
- String result = ".. topic:: ";
+ StringBuilder buffer = new StringBuilder(".. topic:: ");
level++;
- List<Element> elements = e.elements();
- for (Element element : elements){
- if (element.getName().equals(TITLE)){
+ List<?> elements = e.elements();
+ for (Object o : elements) {
+ Element element = (Element) o;
+ try {
+ if (elementEquals(TITLE, element)) {
+ log.debug("topic title : " + element.getText());
+ buffer.append(indent(element.getText()));
+ } else if (elementEquals(PARAGRAPH, element)) {
+ log.trace("topic para (from element) : " + element.getText());
+ String para = parseDocument(element);
+ log.debug("topic para (from parsing) : " + para);
+ buffer.append(indent(para));
+ }
+ } finally {
+ // always mark the node as fired
addCachedElement(element);
- result += indent(element.getText());
- } else if (element.getName().equals(PARAGRAPH)){
- Element ePara = e.element(PARAGRAPH);
- result += ePara.getText();
- addCachedElement(element);
- result += indent(parseDocument(element));
}
}
--level;
- log.debug("composeTopic : " + result);
+ String result = buffer.toString();
+ log.debug("composeTopic :\n" + result);
return result;
}
@Override
public String composeSideBar(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeTransition(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeParagraph(Element e) {
- String result = "";
- result += indent(e.getText(), level);
- log.debug("composeParagraph : " + result);
+ String result = indent(e.getText(), level);
+ log.debug("composeParagraph :\n" + result);
return result;
}
@Override
public String composeCompound(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeContainer(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeBulletList(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeEnumeratedList(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeListItem(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeDefinitionList(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeDefinitionListItem(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeTerm(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeClassifier(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeDefinition(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeFieldList(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeField(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeFieldName(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeFieldBody(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeOptionList(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeOptionListItem(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeOptionGroup(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeOption(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeOptionString(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeOptionArgument(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeDescription(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeLiteralBlock(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeLineBlock(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeLine(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeBlockQuote(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeAttribution(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeDocTestBlock(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeAttention(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeCaution(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeDanger(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeError(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeHint(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeImportant(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeNote(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeTip(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeWarning(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeAdmonition(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeFootnote(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeCitation(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeLabel(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeRubric(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeTarget(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeSubstitutionDefinition(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeComment(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composePending(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeFigure(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeImage(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeCaption(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeLegend(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeSystemMessage(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeRaw(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeTable(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeTgroup(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeColspec(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeThead(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeTbody(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeRow(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeEntry(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeEmphasis(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeStrong(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeLiteral(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeReference(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeFootnoteReference(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeCitationReference(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeSubstitutionReference(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeTitleReference(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeAbbreviation(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeAcronyme(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeSuperscipt(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeSubscript(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeInline(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeProblematic(Element e) {
- return "";
+ return EMPTY_STRING;
}
@Override
public String composeGenerated(Element e) {
- return "";
+ return EMPTY_STRING;
}
- protected String indent(String toIndent){
+ protected String indent(String toIndent) {
return indent(toIndent, level);
}
-
- protected String indent(String toIndent, int l){
- String result = "";
- for (String s : toIndent.split("\n")){
- for(int i=0;i<l;i++){
- result+=" ";
- }
- result+=s;
- result+="\n";
- }
- return result;
- }
}
Deleted: trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtilsConvertisor.java
===================================================================
--- trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtilsConvertisor.java 2009-08-16 12:05:26 UTC (rev 392)
+++ trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtilsConvertisor.java 2009-08-16 12:07:32 UTC (rev 393)
@@ -1,283 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-package org.nuiton.jrst.convertisor;
-
-import org.dom4j.Element;
-import org.nuiton.jrst.ReStructuredText;
-/**
- *
- * @author letellier
- */
-public abstract class DocUtilsConvertisor extends DocUtilsVisitor{
-
- @Override
- public void visit(Element e) {
-
- if (!cachedElements.contains(e)){
-
- addCachedElement(e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Root Element
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- if (elementEquals(ReStructuredText.DOCUMENT,e)) { rstResult += composeDocument(e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Title Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- } else if (elementEquals(ReStructuredText.TITLE,e)) { rstResult += composeTitle(e);
- } else if (elementEquals(ReStructuredText.SUBTITLE,e)) { rstResult += composeSubTitle(e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Bibliographic Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- } else if (elementEquals(ReStructuredText.DOCINFO,e)) { rstResult += composeDocInfo(e);
-
- // } else if (elementEquals(ReStructuredText.INFO,e)) { rstResult += compose
- } else if (elementEquals(ReStructuredText.AUTHOR,e)) { rstResult += composeAutor(e);
- } else if (elementEquals(ReStructuredText.AUTHORS,e)) { rstResult += composeAutors(e);
- } else if (elementEquals(ReStructuredText.ORGANIZATION,e)) { rstResult += composeOrganisation(e);
- } else if (elementEquals(ReStructuredText.ADDRESS,e)) { rstResult += composeAddress(e);
- } else if (elementEquals(ReStructuredText.CONTACT,e)) { rstResult += composeContact(e);
- } else if (elementEquals(ReStructuredText.VERSION,e)) { rstResult += composeVersion(e);
- } else if (elementEquals(ReStructuredText.REVISION,e)) { rstResult += composeResvision(e);
- } else if (elementEquals(ReStructuredText.STATUS,e)) { rstResult += composeStatus(e);
- } else if (elementEquals(ReStructuredText.DATE,e)) { rstResult += composeDate(e);
- } else if (elementEquals(ReStructuredText.COPYRIGHT,e)) { rstResult += composeCopyright(e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Decoration Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- } else if (elementEquals(ReStructuredText.DECORATION,e)) { rstResult += composeDecoration(e);
- } else if (elementEquals(ReStructuredText.HEADER,e)) { rstResult += composeHeader(e);
- } else if (elementEquals(ReStructuredText.FOOTER,e)) { rstResult += composeFooter(e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Structural Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- } else if (elementEquals(ReStructuredText.SECTION,e)) { rstResult += composeSection(e);
- } else if (elementEquals(ReStructuredText.TOPIC,e)) { rstResult += composeTopic(e);
- } else if (elementEquals(ReStructuredText.SIDEBAR,e)) { rstResult += composeSideBar(e);
- } else if (elementEquals(ReStructuredText.TRANSITION,e)) { rstResult += composeTransition(e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Body Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- } else if (elementEquals(ReStructuredText.PARAGRAPH,e)) { rstResult += composeParagraph(e);
- } else if (elementEquals(ReStructuredText.COMPOUND,e)) { rstResult += composeCompound(e);
- } else if (elementEquals(ReStructuredText.CONTAINER,e)) { rstResult += composeContainer(e);
- } else if (elementEquals(ReStructuredText.BULLET_LIST,e)) { rstResult += composeBulletList(e);
- } else if (elementEquals(ReStructuredText.ENUMERATED_LIST,e)) { rstResult += composeEnumeratedList(e);
- } else if (elementEquals(ReStructuredText.LIST_ITEM,e)) { rstResult += composeListItem(e);
- } else if (elementEquals(ReStructuredText.DEFINITION_LIST,e)) { rstResult += composeDefinitionList(e);
- } else if (elementEquals(ReStructuredText.DEFINITION_LIST_ITEM,e)) { rstResult += composeDefinitionListItem(e);
- } else if (elementEquals(ReStructuredText.TERM,e)) { rstResult += composeTerm(e);
- } else if (elementEquals(ReStructuredText.CLASSIFIER,e)) { rstResult += composeClassifier(e);
- } else if (elementEquals(ReStructuredText.DEFINITION,e)) { rstResult += composeDefinition(e);
- } else if (elementEquals(ReStructuredText.FIELD_LIST,e)) { rstResult += composeFieldList(e);
- } else if (elementEquals(ReStructuredText.FIELD,e)) { rstResult += composeField(e);
- } else if (elementEquals(ReStructuredText.FIELD_NAME,e)) { rstResult += composeFieldName(e);
- } else if (elementEquals(ReStructuredText.FIELD_BODY,e)) { rstResult += composeFieldBody(e);
- } else if (elementEquals(ReStructuredText.OPTION_LIST,e)) { rstResult += composeOptionList(e);
- } else if (elementEquals(ReStructuredText.OPTION_LIST_ITEM,e)) { rstResult += composeOptionListItem(e);
- } else if (elementEquals(ReStructuredText.OPTION_GROUP,e)) { rstResult += composeOptionGroup(e);
- } else if (elementEquals(ReStructuredText.OPTION,e)) { rstResult += composeOption(e);
- } else if (elementEquals(ReStructuredText.OPTION_STRING,e)) { rstResult += composeOptionString(e);
- } else if (elementEquals(ReStructuredText.OPTION_ARGUMENT,e)) { rstResult += composeOptionArgument(e);
- } else if (elementEquals(ReStructuredText.DESCRIPTION,e)) { rstResult += composeDescription(e);
- } else if (elementEquals(ReStructuredText.LITERAL_BLOCK,e)) { rstResult += composeLiteralBlock(e);
- } else if (elementEquals(ReStructuredText.LINE_BLOCK,e)) { rstResult += composeLineBlock(e);
- } else if (elementEquals(ReStructuredText.LINE,e)) { rstResult += composeLine(e);
- } else if (elementEquals(ReStructuredText.BLOCK_QUOTE,e)) { rstResult += composeBlockQuote(e);
- } else if (elementEquals(ReStructuredText.ATTRIBUTION,e)) { rstResult += composeAttribution(e);
- } else if (elementEquals(ReStructuredText.DOCTEST_BLOCK,e)) { rstResult += composeDocTestBlock(e);
- } else if (elementEquals(ReStructuredText.ATTENTION,e)) { rstResult += composeAttention(e);
- } else if (elementEquals(ReStructuredText.CAUTION,e)) { rstResult += composeCaution(e);
- } else if (elementEquals(ReStructuredText.DANGER,e)) { rstResult += composeDanger(e);
- } else if (elementEquals(ReStructuredText.ERROR,e)) { rstResult += composeError(e);
- } else if (elementEquals(ReStructuredText.HINT,e)) { rstResult += composeHint(e);
- } else if (elementEquals(ReStructuredText.IMPORTANT,e)) { rstResult += composeImportant(e);
- } else if (elementEquals(ReStructuredText.NOTE,e)) { rstResult += composeNote(e);
- } else if (elementEquals(ReStructuredText.TIP,e)) { rstResult += composeTip(e);
- } else if (elementEquals(ReStructuredText.WARNING,e)) { rstResult += composeWarning(e);
- } else if (elementEquals(ReStructuredText.ADMONITION,e)) { rstResult += composeAdmonition(e);
- } else if (elementEquals(ReStructuredText.FOOTNOTE,e)) { rstResult += composeFootnote(e);
- } else if (elementEquals(ReStructuredText.CITATION,e)) { rstResult += composeCitation(e);
- } else if (elementEquals(ReStructuredText.LABEL,e)) { rstResult += composeLabel(e);
- } else if (elementEquals(ReStructuredText.RUBRIC,e)) { rstResult += composeRubric(e);
- } else if (elementEquals(ReStructuredText.TARGET,e)) { rstResult += composeTarget(e);
- } else if (elementEquals(ReStructuredText.SUBSTITUTION_DEFINITION,e)) { rstResult += composeSubstitutionDefinition(e);
- } else if (elementEquals(ReStructuredText.COMMENT,e)) { rstResult += composeComment(e);
- } else if (elementEquals(ReStructuredText.PENDING,e)) { rstResult += composePending(e);
- } else if (elementEquals(ReStructuredText.FIGURE,e)) { rstResult += composeFigure(e);
- } else if (elementEquals(ReStructuredText.IMAGE,e)) { rstResult += composeImage(e);
- } else if (elementEquals(ReStructuredText.CAPTION,e)) { rstResult += composeCaption(e);
- } else if (elementEquals(ReStructuredText.LEGEND,e)) { rstResult += composeLegend(e);
- } else if (elementEquals(ReStructuredText.SYSTEM_MESSAGE,e)) { rstResult += composeSystemMessage(e);
- } else if (elementEquals(ReStructuredText.RAW,e)) { rstResult += composeRaw(e);
-
- // table
- } else if (elementEquals(ReStructuredText.TABLE,e)) { rstResult += composeTable(e);
- } else if (elementEquals(ReStructuredText.TGROUP,e)) { rstResult += composeTgroup(e);
- } else if (elementEquals(ReStructuredText.COLSPEC,e)) { rstResult += composeColspec(e);
- } else if (elementEquals(ReStructuredText.THEAD,e)) { rstResult += composeThead(e);
- } else if (elementEquals(ReStructuredText.TBODY,e)) { rstResult += composeTbody(e);
- } else if (elementEquals(ReStructuredText.ROW,e)) { rstResult += composeRow(e);
- } else if (elementEquals(ReStructuredText.ENTRY,e)) { rstResult += composeEntry(e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Inline Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- } else if (elementEquals(ReStructuredText.EMPHASIS,e)) { rstResult += composeEmphasis(e);
- } else if (elementEquals(ReStructuredText.STRONG,e)) { rstResult += composeStrong(e);
- } else if (elementEquals(ReStructuredText.LITERAL,e)) { rstResult += composeLiteral(e);
- } else if (elementEquals(ReStructuredText.REFERENCE,e)) { rstResult += composeReference(e);
- } else if (elementEquals(ReStructuredText.FOOTNOTE_REFERENCE,e)) { rstResult += composeFootnoteReference(e);
- } else if (elementEquals(ReStructuredText.CITATION_REFERENCE,e)) { rstResult += composeCitationReference(e);
- } else if (elementEquals(ReStructuredText.SUBSTITUTION_REFERENCE,e)) { rstResult += composeSubstitutionReference(e);
- } else if (elementEquals(ReStructuredText.TITLE_REFERENCE,e)) { rstResult += composeTitleReference(e);
- } else if (elementEquals(ReStructuredText.ABBREVIATION,e)) { rstResult += composeAbbreviation(e);
- } else if (elementEquals(ReStructuredText.ACRONYM,e)) { rstResult += composeAcronyme(e);
- } else if (elementEquals(ReStructuredText.SUPERSCRIPT,e)) { rstResult += composeSuperscipt(e);
- } else if (elementEquals(ReStructuredText.SUBSCRIPT,e)) { rstResult += composeSubscript(e);
- } else if (elementEquals(ReStructuredText.INLINE,e)) { rstResult += composeInline(e);
- } else if (elementEquals(ReStructuredText.PROBLEMATIC,e)) { rstResult += composeProblematic(e);
- } else if (elementEquals(ReStructuredText.GENERATED,e)) { rstResult += composeGenerated(e);
- }
-
- }
- }
-
- protected boolean elementEquals(String name, Element e) {
- return e.getName().equals(name);
- }
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Root Element
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- public abstract String composeDocument(Element e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Title Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- public abstract String composeTitle(Element e);
- public abstract String composeSubTitle(Element e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Bibliographic Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- public abstract String composeDocInfo(Element e);
-
- // public abstract String compose
- public abstract String composeAutor(Element e);
- public abstract String composeAutors(Element e);
- public abstract String composeOrganisation(Element e);
- public abstract String composeAddress(Element e);
- public abstract String composeContact(Element e);
- public abstract String composeVersion(Element e);
- public abstract String composeResvision(Element e);
- public abstract String composeStatus(Element e);
- public abstract String composeDate(Element e);
- public abstract String composeCopyright(Element e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Decoration Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- public abstract String composeDecoration(Element e);
- public abstract String composeHeader(Element e);
- public abstract String composeFooter(Element e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Structural Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- public abstract String composeSection(Element e);
- public abstract String composeTopic(Element e);
- public abstract String composeSideBar(Element e);
- public abstract String composeTransition(Element e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Body Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- public abstract String composeParagraph(Element e);
- public abstract String composeCompound(Element e);
- public abstract String composeContainer(Element e);
- public abstract String composeBulletList(Element e);
- public abstract String composeEnumeratedList(Element e);
- public abstract String composeListItem(Element e);
- public abstract String composeDefinitionList(Element e);
- public abstract String composeDefinitionListItem(Element e);
- public abstract String composeTerm(Element e);
- public abstract String composeClassifier(Element e);
- public abstract String composeDefinition(Element e);
- public abstract String composeFieldList(Element e);
- public abstract String composeField(Element e);
- public abstract String composeFieldName(Element e);
- public abstract String composeFieldBody(Element e);
- public abstract String composeOptionList(Element e);
- public abstract String composeOptionListItem(Element e);
- public abstract String composeOptionGroup(Element e);
- public abstract String composeOption(Element e);
- public abstract String composeOptionString(Element e);
- public abstract String composeOptionArgument(Element e);
- public abstract String composeDescription(Element e);
- public abstract String composeLiteralBlock(Element e);
- public abstract String composeLineBlock(Element e);
- public abstract String composeLine(Element e);
- public abstract String composeBlockQuote(Element e);
- public abstract String composeAttribution(Element e);
- public abstract String composeDocTestBlock(Element e);
- public abstract String composeAttention(Element e);
- public abstract String composeCaution(Element e);
- public abstract String composeDanger(Element e);
- public abstract String composeError(Element e);
- public abstract String composeHint(Element e);
- public abstract String composeImportant(Element e);
- public abstract String composeNote(Element e);
- public abstract String composeTip(Element e);
- public abstract String composeWarning(Element e);
- public abstract String composeAdmonition(Element e);
- public abstract String composeFootnote(Element e);
- public abstract String composeCitation(Element e);
- public abstract String composeLabel(Element e);
- public abstract String composeRubric(Element e);
- public abstract String composeTarget(Element e);
- public abstract String composeSubstitutionDefinition(Element e);
- public abstract String composeComment(Element e);
- public abstract String composePending(Element e);
- public abstract String composeFigure(Element e);
- public abstract String composeImage(Element e);
- public abstract String composeCaption(Element e);
- public abstract String composeLegend(Element e);
- public abstract String composeSystemMessage(Element e);
- public abstract String composeRaw(Element e);
-
- // table
- public abstract String composeTable(Element e);
- public abstract String composeTgroup(Element e);
- public abstract String composeColspec(Element e);
- public abstract String composeThead(Element e);
- public abstract String composeTbody(Element e);
- public abstract String composeRow(Element e);
- public abstract String composeEntry(Element e);
-
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- // Inline Elements
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- public abstract String composeEmphasis(Element e);
- public abstract String composeStrong(Element e);
- public abstract String composeLiteral(Element e);
- public abstract String composeReference(Element e);
- public abstract String composeFootnoteReference(Element e);
- public abstract String composeCitationReference(Element e);
- public abstract String composeSubstitutionReference(Element e);
- public abstract String composeTitleReference(Element e);
- public abstract String composeAbbreviation(Element e);
- public abstract String composeAcronyme(Element e);
- public abstract String composeSuperscipt(Element e);
- public abstract String composeSubscript(Element e);
- public abstract String composeInline(Element e);
- public abstract String composeProblematic(Element e);
- public abstract String composeGenerated(Element e);
-}
Modified: trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtilsVisitor.java
===================================================================
--- trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtilsVisitor.java 2009-08-16 12:05:26 UTC (rev 392)
+++ trunk/jrst/src/main/java/org/nuiton/jrst/convertisor/DocUtilsVisitor.java 2009-08-16 12:07:32 UTC (rev 393)
@@ -1,81 +1,547 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
package org.nuiton.jrst.convertisor;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.VisitorSupport;
+import org.nuiton.jrst.ReStructuredText;
/**
*
* @author letellier
*/
+public abstract class DocUtilsVisitor extends VisitorSupport {
-public class DocUtilsVisitor extends VisitorSupport{
-
+ public static final String EMPTY_STRING = "";
+ public static final String LINE_SEPARATOR = "\n";
+ public static final String SPACE = " ";
/** to use log facility, just put in your code: log.info(\"...\"); */
private static Log log = LogFactory.getLog(DocUtilsVisitor.class);
-
- // Enregistre les elements parse pour ne jamais les y repasser
+ // Enregistre les elements parse pour ne jamais les revisiter
protected List<Element> cachedElements;
+ // le resultat de la visite
+ protected StringBuilder rstResult;
- protected String rstResult = "";
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Root Element
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ public abstract String composeDocument(Element e);
- public DocUtilsVisitor(){
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Title Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ public abstract String composeTitle(Element e);
+
+ public abstract String composeSubTitle(Element e);
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Bibliographic Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ public abstract String composeDocInfo(Element e);
+
+ // public abstract String compose
+ public abstract String composeAutor(Element e);
+
+ public abstract String composeAutors(Element e);
+
+ public abstract String composeOrganisation(Element e);
+
+ public abstract String composeAddress(Element e);
+
+ public abstract String composeContact(Element e);
+
+ public abstract String composeVersion(Element e);
+
+ public abstract String composeResvision(Element e);
+
+ public abstract String composeStatus(Element e);
+
+ public abstract String composeDate(Element e);
+
+ public abstract String composeCopyright(Element e);
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Decoration Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ public abstract String composeDecoration(Element e);
+
+ public abstract String composeHeader(Element e);
+
+ public abstract String composeFooter(Element e);
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Structural Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ public abstract String composeSection(Element e);
+
+ public abstract String composeTopic(Element e);
+
+ public abstract String composeSideBar(Element e);
+
+ public abstract String composeTransition(Element e);
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Body Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ public abstract String composeParagraph(Element e);
+
+ public abstract String composeCompound(Element e);
+
+ public abstract String composeContainer(Element e);
+
+ public abstract String composeBulletList(Element e);
+
+ public abstract String composeEnumeratedList(Element e);
+
+ public abstract String composeListItem(Element e);
+
+ public abstract String composeDefinitionList(Element e);
+
+ public abstract String composeDefinitionListItem(Element e);
+
+ public abstract String composeTerm(Element e);
+
+ public abstract String composeClassifier(Element e);
+
+ public abstract String composeDefinition(Element e);
+
+ public abstract String composeFieldList(Element e);
+
+ public abstract String composeField(Element e);
+
+ public abstract String composeFieldName(Element e);
+
+ public abstract String composeFieldBody(Element e);
+
+ public abstract String composeOptionList(Element e);
+
+ public abstract String composeOptionListItem(Element e);
+
+ public abstract String composeOptionGroup(Element e);
+
+ public abstract String composeOption(Element e);
+
+ public abstract String composeOptionString(Element e);
+
+ public abstract String composeOptionArgument(Element e);
+
+ public abstract String composeDescription(Element e);
+
+ public abstract String composeLiteralBlock(Element e);
+
+ public abstract String composeLineBlock(Element e);
+
+ public abstract String composeLine(Element e);
+
+ public abstract String composeBlockQuote(Element e);
+
+ public abstract String composeAttribution(Element e);
+
+ public abstract String composeDocTestBlock(Element e);
+
+ public abstract String composeAttention(Element e);
+
+ public abstract String composeCaution(Element e);
+
+ public abstract String composeDanger(Element e);
+
+ public abstract String composeError(Element e);
+
+ public abstract String composeHint(Element e);
+
+ public abstract String composeImportant(Element e);
+
+ public abstract String composeNote(Element e);
+
+ public abstract String composeTip(Element e);
+
+ public abstract String composeWarning(Element e);
+
+ public abstract String composeAdmonition(Element e);
+
+ public abstract String composeFootnote(Element e);
+
+ public abstract String composeCitation(Element e);
+
+ public abstract String composeLabel(Element e);
+
+ public abstract String composeRubric(Element e);
+
+ public abstract String composeTarget(Element e);
+
+ public abstract String composeSubstitutionDefinition(Element e);
+
+ public abstract String composeComment(Element e);
+
+ public abstract String composePending(Element e);
+
+ public abstract String composeFigure(Element e);
+
+ public abstract String composeImage(Element e);
+
+ public abstract String composeCaption(Element e);
+
+ public abstract String composeLegend(Element e);
+
+ public abstract String composeSystemMessage(Element e);
+
+ public abstract String composeRaw(Element e);
+
+ // table
+ public abstract String composeTable(Element e);
+
+ public abstract String composeTgroup(Element e);
+
+ public abstract String composeColspec(Element e);
+
+ public abstract String composeThead(Element e);
+
+ public abstract String composeTbody(Element e);
+
+ public abstract String composeRow(Element e);
+
+ public abstract String composeEntry(Element e);
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Inline Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ public abstract String composeEmphasis(Element e);
+
+ public abstract String composeStrong(Element e);
+
+ public abstract String composeLiteral(Element e);
+
+ public abstract String composeReference(Element e);
+
+ public abstract String composeFootnoteReference(Element e);
+
+ public abstract String composeCitationReference(Element e);
+
+ public abstract String composeSubstitutionReference(Element e);
+
+ public abstract String composeTitleReference(Element e);
+
+ public abstract String composeAbbreviation(Element e);
+
+ public abstract String composeAcronyme(Element e);
+
+ public abstract String composeSuperscipt(Element e);
+
+ public abstract String composeSubscript(Element e);
+
+ public abstract String composeInline(Element e);
+
+ public abstract String composeProblematic(Element e);
+
+ public abstract String composeGenerated(Element e);
+
+ public DocUtilsVisitor() {
cachedElements = new ArrayList<Element>();
+ rstResult = new StringBuilder();
}
- public void setCachedElements(List<Element> cachedElements){
- this.cachedElements = cachedElements;
- }
+ @Override
+ public void visit(Element e) {
- public List<Element> getCachedElements(){
- return cachedElements;
- }
+ if (!cachedElements.contains(e)) {
+ log.debug("entre element " + e.getName());
+ addCachedElement(e);
- // Permet de ne jamais repasser sur ce noeud
- public void addCachedElement(Element e){
- cachedElements.add(e);
- }
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Root Element
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ if (elementEquals(ReStructuredText.DOCUMENT, e)) {
+ appendResult(composeDocument(e));
+ } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Title Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ else if (elementEquals(ReStructuredText.TITLE, e)) {
+ appendResult(composeTitle(e));
+ } else if (elementEquals(ReStructuredText.SUBTITLE, e)) {
+ appendResult(composeSubTitle(e));
+ } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Bibliographic Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ else if (elementEquals(ReStructuredText.DOCINFO, e)) {
+ appendResult(composeDocInfo(e));
- public void addCachedElements(List<Element> elements){
- cachedElements.addAll(elements);
+ // } else if (elementEquals(ReStructuredText.INFO,e)) { appendResult(composeInfo(e));
+ } else if (elementEquals(ReStructuredText.AUTHOR, e)) {
+ appendResult(composeAutor(e));
+ } else if (elementEquals(ReStructuredText.AUTHORS, e)) {
+ appendResult(composeAutors(e));
+ } else if (elementEquals(ReStructuredText.ORGANIZATION, e)) {
+ appendResult(composeOrganisation(e));
+ } else if (elementEquals(ReStructuredText.ADDRESS, e)) {
+ appendResult(composeAddress(e));
+ } else if (elementEquals(ReStructuredText.CONTACT, e)) {
+ appendResult(composeContact(e));
+ } else if (elementEquals(ReStructuredText.VERSION, e)) {
+ appendResult(composeVersion(e));
+ } else if (elementEquals(ReStructuredText.REVISION, e)) {
+ appendResult(composeResvision(e));
+ } else if (elementEquals(ReStructuredText.STATUS, e)) {
+ appendResult(composeStatus(e));
+ } else if (elementEquals(ReStructuredText.DATE, e)) {
+ appendResult(composeDate(e));
+ } else if (elementEquals(ReStructuredText.COPYRIGHT, e)) {
+ appendResult(composeCopyright(e));
+ } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Decoration Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ else if (elementEquals(ReStructuredText.DECORATION, e)) {
+ appendResult(composeDecoration(e));
+ } else if (elementEquals(ReStructuredText.HEADER, e)) {
+ appendResult(composeHeader(e));
+ } else if (elementEquals(ReStructuredText.FOOTER, e)) {
+ appendResult(composeFooter(e));
+ } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Structural Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ else if (elementEquals(ReStructuredText.SECTION, e)) {
+ appendResult(composeSection(e));
+ } else if (elementEquals(ReStructuredText.TOPIC, e)) {
+ appendResult(composeTopic(e));
+ } else if (elementEquals(ReStructuredText.SIDEBAR, e)) {
+ appendResult(composeSideBar(e));
+ } else if (elementEquals(ReStructuredText.TRANSITION, e)) {
+ appendResult(composeTransition(e));
+ } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Body Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ else if (elementEquals(ReStructuredText.PARAGRAPH, e)) {
+ appendResult(composeParagraph(e));
+ } else if (elementEquals(ReStructuredText.COMPOUND, e)) {
+ appendResult(composeCompound(e));
+ } else if (elementEquals(ReStructuredText.CONTAINER, e)) {
+ appendResult(composeContainer(e));
+ } else if (elementEquals(ReStructuredText.BULLET_LIST, e)) {
+ appendResult(composeBulletList(e));
+ } else if (elementEquals(ReStructuredText.ENUMERATED_LIST, e)) {
+ appendResult(composeEnumeratedList(e));
+ } else if (elementEquals(ReStructuredText.LIST_ITEM, e)) {
+ appendResult(composeListItem(e));
+ } else if (elementEquals(ReStructuredText.DEFINITION_LIST, e)) {
+ appendResult(composeDefinitionList(e));
+ } else if (elementEquals(ReStructuredText.DEFINITION_LIST_ITEM, e)) {
+ appendResult(composeDefinitionListItem(e));
+ } else if (elementEquals(ReStructuredText.TERM, e)) {
+ appendResult(composeTerm(e));
+ } else if (elementEquals(ReStructuredText.CLASSIFIER, e)) {
+ appendResult(composeClassifier(e));
+ } else if (elementEquals(ReStructuredText.DEFINITION, e)) {
+ appendResult(composeDefinition(e));
+ } else if (elementEquals(ReStructuredText.FIELD_LIST, e)) {
+ appendResult(composeFieldList(e));
+ } else if (elementEquals(ReStructuredText.FIELD, e)) {
+ appendResult(composeField(e));
+ } else if (elementEquals(ReStructuredText.FIELD_NAME, e)) {
+ appendResult(composeFieldName(e));
+ } else if (elementEquals(ReStructuredText.FIELD_BODY, e)) {
+ appendResult(composeFieldBody(e));
+ } else if (elementEquals(ReStructuredText.OPTION_LIST, e)) {
+ appendResult(composeOptionList(e));
+ } else if (elementEquals(ReStructuredText.OPTION_LIST_ITEM, e)) {
+ appendResult(composeOptionListItem(e));
+ } else if (elementEquals(ReStructuredText.OPTION_GROUP, e)) {
+ appendResult(composeOptionGroup(e));
+ } else if (elementEquals(ReStructuredText.OPTION, e)) {
+ appendResult(composeOption(e));
+ } else if (elementEquals(ReStructuredText.OPTION_STRING, e)) {
+ appendResult(composeOptionString(e));
+ } else if (elementEquals(ReStructuredText.OPTION_ARGUMENT, e)) {
+ appendResult(composeOptionArgument(e));
+ } else if (elementEquals(ReStructuredText.DESCRIPTION, e)) {
+ appendResult(composeDescription(e));
+ } else if (elementEquals(ReStructuredText.LITERAL_BLOCK, e)) {
+ appendResult(composeLiteralBlock(e));
+ } else if (elementEquals(ReStructuredText.LINE_BLOCK, e)) {
+ appendResult(composeLineBlock(e));
+ } else if (elementEquals(ReStructuredText.LINE, e)) {
+ appendResult(composeLine(e));
+ } else if (elementEquals(ReStructuredText.BLOCK_QUOTE, e)) {
+ appendResult(composeBlockQuote(e));
+ } else if (elementEquals(ReStructuredText.ATTRIBUTION, e)) {
+ appendResult(composeAttribution(e));
+ } else if (elementEquals(ReStructuredText.DOCTEST_BLOCK, e)) {
+ appendResult(composeDocTestBlock(e));
+ } else if (elementEquals(ReStructuredText.ATTENTION, e)) {
+ appendResult(composeAttention(e));
+ } else if (elementEquals(ReStructuredText.CAUTION, e)) {
+ appendResult(composeCaution(e));
+ } else if (elementEquals(ReStructuredText.DANGER, e)) {
+ appendResult(composeDanger(e));
+ } else if (elementEquals(ReStructuredText.ERROR, e)) {
+ appendResult(composeError(e));
+ } else if (elementEquals(ReStructuredText.HINT, e)) {
+ appendResult(composeHint(e));
+ } else if (elementEquals(ReStructuredText.IMPORTANT, e)) {
+ appendResult(composeImportant(e));
+ } else if (elementEquals(ReStructuredText.NOTE, e)) {
+ appendResult(composeNote(e));
+ } else if (elementEquals(ReStructuredText.TIP, e)) {
+ appendResult(composeTip(e));
+ } else if (elementEquals(ReStructuredText.WARNING, e)) {
+ appendResult(composeWarning(e));
+ } else if (elementEquals(ReStructuredText.ADMONITION, e)) {
+ appendResult(composeAdmonition(e));
+ } else if (elementEquals(ReStructuredText.FOOTNOTE, e)) {
+ appendResult(composeFootnote(e));
+ } else if (elementEquals(ReStructuredText.CITATION, e)) {
+ appendResult(composeCitation(e));
+ } else if (elementEquals(ReStructuredText.LABEL, e)) {
+ appendResult(composeLabel(e));
+ } else if (elementEquals(ReStructuredText.RUBRIC, e)) {
+ appendResult(composeRubric(e));
+ } else if (elementEquals(ReStructuredText.TARGET, e)) {
+ appendResult(composeTarget(e));
+ } else if (elementEquals(ReStructuredText.SUBSTITUTION_DEFINITION, e)) {
+ appendResult(composeSubstitutionDefinition(e));
+ } else if (elementEquals(ReStructuredText.COMMENT, e)) {
+ appendResult(composeComment(e));
+ } else if (elementEquals(ReStructuredText.PENDING, e)) {
+ appendResult(composePending(e));
+ } else if (elementEquals(ReStructuredText.FIGURE, e)) {
+ appendResult(composeFigure(e));
+ } else if (elementEquals(ReStructuredText.IMAGE, e)) {
+ appendResult(composeImage(e));
+ } else if (elementEquals(ReStructuredText.CAPTION, e)) {
+ appendResult(composeCaption(e));
+ } else if (elementEquals(ReStructuredText.LEGEND, e)) {
+ appendResult(composeLegend(e));
+ } else if (elementEquals(ReStructuredText.SYSTEM_MESSAGE, e)) {
+ appendResult(composeSystemMessage(e));
+ } else if (elementEquals(ReStructuredText.RAW, e)) {
+ appendResult(composeRaw(e));
+
+ // table
+ } else if (elementEquals(ReStructuredText.TABLE, e)) {
+ appendResult(composeTable(e));
+ } else if (elementEquals(ReStructuredText.TGROUP, e)) {
+ appendResult(composeTgroup(e));
+ } else if (elementEquals(ReStructuredText.COLSPEC, e)) {
+ appendResult(composeColspec(e));
+ } else if (elementEquals(ReStructuredText.THEAD, e)) {
+ appendResult(composeThead(e));
+ } else if (elementEquals(ReStructuredText.TBODY, e)) {
+ appendResult(composeTbody(e));
+ } else if (elementEquals(ReStructuredText.ROW, e)) {
+ appendResult(composeRow(e));
+ } else if (elementEquals(ReStructuredText.ENTRY, e)) {
+ appendResult(composeEntry(e));
+ } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Inline Elements
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ else if (elementEquals(ReStructuredText.EMPHASIS, e)) {
+ appendResult(composeEmphasis(e));
+ } else if (elementEquals(ReStructuredText.STRONG, e)) {
+ appendResult(composeStrong(e));
+ } else if (elementEquals(ReStructuredText.LITERAL, e)) {
+ appendResult(composeLiteral(e));
+ } else if (elementEquals(ReStructuredText.REFERENCE, e)) {
+ appendResult(composeReference(e));
+ } else if (elementEquals(ReStructuredText.FOOTNOTE_REFERENCE, e)) {
+ appendResult(composeFootnoteReference(e));
+ } else if (elementEquals(ReStructuredText.CITATION_REFERENCE, e)) {
+ appendResult(composeCitationReference(e));
+ } else if (elementEquals(ReStructuredText.SUBSTITUTION_REFERENCE, e)) {
+ appendResult(composeSubstitutionReference(e));
+ } else if (elementEquals(ReStructuredText.TITLE_REFERENCE, e)) {
+ appendResult(composeTitleReference(e));
+ } else if (elementEquals(ReStructuredText.ABBREVIATION, e)) {
+ appendResult(composeAbbreviation(e));
+ } else if (elementEquals(ReStructuredText.ACRONYM, e)) {
+ appendResult(composeAcronyme(e));
+ } else if (elementEquals(ReStructuredText.SUPERSCRIPT, e)) {
+ appendResult(composeSuperscipt(e));
+ } else if (elementEquals(ReStructuredText.SUBSCRIPT, e)) {
+ appendResult(composeSubscript(e));
+ } else if (elementEquals(ReStructuredText.INLINE, e)) {
+ appendResult(composeInline(e));
+ } else if (elementEquals(ReStructuredText.PROBLEMATIC, e)) {
+ appendResult(composeProblematic(e));
+ } else if (elementEquals(ReStructuredText.GENERATED, e)) {
+ appendResult(composeGenerated(e));
+ }
+
+ }
}
- public String parseDocument(Element el){
+ public String parseDocument(Element el) {
try {
- // FIXME : Cette partie ne marche pas corectement...
- log.info("This element : " + el.getName());
+ if (log.isDebugEnabled()) {
+ log.debug("This element : " + el.getName());
+ }
- // Creation dune nouvelle instance du visitor utilise
+ // Creation dune nouvelle instance du visitor utilise
DocUtilsVisitor visitor = this.getClass().newInstance();
- // Traitement recursif (pour parser un document dans un autre
- el.accept(visitor);
+ // Traitement recursif (pour parser un document dans un autre)
+ try {
+ el.accept(visitor);
+ String result = visitor.getResult();
+ if (log.isDebugEnabled()) {
+ log.debug("document parsing result:\n" + result);
+ }
+ return result;
+ } finally {
+ // Recuperation des elements parcourus
+ addCachedElements(visitor.getCachedElements());
+ // nettoyage du visiteur temporaire
+ visitor.clear();
+ }
- // Ajout du resultat a la suite du courant
- rstResult += visitor.getResult();
-
- // Recuperation des documents parse
- addCachedElements(visitor.getCachedElements());
-
} catch (Exception ex) {
- log.error("Cant compose document : ", ex);
+ if (log.isErrorEnabled()) {
+ log.error("Cant compose document for reason " + ex.getMessage(), ex);
+ }
+ //FIXME : TC-20090816 should deal better the exception ?
+ return EMPTY_STRING;
}
- return rstResult;
}
- public String getResult(){
- return rstResult;
+ public String getResult() {
+ return rstResult.toString();
}
+ public void clear() {
+ cachedElements.clear();
+ rstResult = null;
+ }
+
+ protected void appendResult(String result) {
+ rstResult.append(result);
+ }
+
+ protected boolean elementEquals(String name, Element e) {
+ return e.getName().equals(name);
+ }
+
+ protected List<Element> getCachedElements() {
+ return cachedElements;
+ }
+
+ // Permet de ne jamais repasser sur ce noeud
+ protected void addCachedElement(Element e) {
+ cachedElements.add(e);
+ }
+
+ protected void addCachedElements(List<Element> elements) {
+ cachedElements.addAll(elements);
+ }
+
+ protected String indent(String toIndent, int l) {
+ String prefix = EMPTY_STRING;
+ for (int i = 0; i < l; i++) {
+ prefix += SPACE;
+ }
+ StringBuilder buffer = new StringBuilder();
+ for (String s : toIndent.split(LINE_SEPARATOR)) {
+ buffer.append(prefix).append(s).append(LINE_SEPARATOR);
+ }
+ return buffer.toString();
+ }
}
Added: trunk/jrst/src/test/java/org/nuiton/jrst/JRSTTest.java
===================================================================
--- trunk/jrst/src/test/java/org/nuiton/jrst/JRSTTest.java (rev 0)
+++ trunk/jrst/src/test/java/org/nuiton/jrst/JRSTTest.java 2009-08-16 12:07:32 UTC (rev 393)
@@ -0,0 +1,95 @@
+package org.nuiton.jrst;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ * @author chemit
+ */
+public class JRSTTest {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ protected static Log log = LogFactory.getLog(JRSTTest.class);
+ static File basedir;
+ static File testBasedir;
+
+ @BeforeClass
+ public static void beforeClass() {
+ String tmp = System.getProperty("basedir");
+ if (tmp == null || tmp.isEmpty()) {
+ tmp = new File("").getAbsolutePath();
+ }
+ basedir = new File(tmp);
+ testBasedir = new File(basedir,
+ "target" + File.separator +
+ "tests" + File.separator +
+ // "tests-" + System.nanoTime() + File.separator +
+ JRSTTest.class.getName());
+ testBasedir.mkdirs();
+ log.info("test basedir : " + testBasedir);
+ }
+
+ @Test
+ public void testToRst() throws IOException {
+ File in = new File(testBasedir, "toRst1-in.rst");
+
+ List<String> IN_LINES = Arrays.asList(new String[]{
+ "=====",
+ "Title",
+ "=====",
+ // "",
+ "SubTitle",
+ "--------",
+ // "",
+ ".. topic:: TopicTitle",
+ // "",
+ " TopicBody.",
+ // "",
+ // "",
+ "Another body outside of the topic :)"
+ });
+ List<String> OUT_LINES = Arrays.asList(new String[]{
+ "Title",
+ "-----",
+ // "",
+ "SubTitle",
+ "--------",
+ // "",
+ ".. topic:: TopicTitle",
+ // "",
+ " TopicBody.",
+ // "",
+ // "",
+ "Another body outside of the topic :)"
+ });
+
+ FileUtils.writeLines(in, IN_LINES);
+
+ File out = new File(testBasedir, "toRst1-out.rst");
+ try {
+ JRST.generate(JRST.TYPE_RST, in, out, JRST.Overwrite.ALLTIME);
+
+ } catch (Exception e) {
+ log.error(e);
+ Assert.fail(e.getMessage());
+ }
+ List<?> readLines = FileUtils.readLines(out);
+ // the title == Title === is transformed in Title ----
+ Assert.assertEquals(OUT_LINES.size(), readLines.size());
+ for (int i = 0, j = OUT_LINES.size(); i < j; i++) {
+ String inLine = OUT_LINES.get(i);
+ String outLine = (String) readLines.get(i);
+ Assert.assertEquals(inLine, outLine);
+
+ }
+ }
+}