use of org.eclipse.mylyn.wikitext.parser.builder.DitaTopicDocumentBuilder in project mylyn.docs by eclipse.
the class MarkupToDitaTask method processFile.
private void processFile(MarkupLanguage markupLanguage, final File baseDir, final File source) throws BuildException {
// $NON-NLS-1$
log(MessageFormat.format(Messages.getString("MarkupToDitaTask.8"), source), Project.MSG_VERBOSE);
String markupContent = null;
String name = source.getName();
if (name.lastIndexOf('.') != -1) {
name = name.substring(0, name.lastIndexOf('.'));
}
// $NON-NLS-1$
File outputFile = new File(source.getParentFile(), filenameFormat.replace("$1", name));
if (!outputFile.exists() || overwrite || outputFile.lastModified() < source.lastModified()) {
if (markupContent == null) {
markupContent = readFully(source);
}
performValidation(source, markupContent);
OutlineItem outline = new OutlineParser(markupLanguage).parse(markupContent);
Writer writer;
try {
// $NON-NLS-1$
writer = new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(outputFile)), "utf-8");
} catch (Exception e) {
throw new BuildException(// $NON-NLS-1$
MessageFormat.format(// $NON-NLS-1$
Messages.getString("MarkupToDitaTask.11"), // $NON-NLS-1$
outputFile, e.getMessage()), e);
}
try {
if (topicStrategy == BreakStrategy.NONE) {
DitaTopicDocumentBuilder builder = new DitaTopicDocumentBuilder(new DefaultXmlStreamWriter(writer), formatting);
builder.setRootTopicTitle(bookTitle);
MarkupParser parser = new MarkupParser();
parser.setMarkupLanguage(markupLanguage);
parser.setBuilder(builder);
if (topicDoctype != null) {
builder.setDoctype(topicDoctype);
}
builder.setFilename(outputFile.getName());
builder.setOutline(outline);
parser.parse(markupContent);
} else {
DitaBookMapDocumentBuilder builder = new DitaBookMapDocumentBuilder(formatting ? new FormattingXMLStreamWriter(new DefaultXmlStreamWriter(writer)) : new DefaultXmlStreamWriter(writer));
try {
builder.setFormattingDependencies(formatting);
MarkupParser parser = new MarkupParser();
parser.setMarkupLanguage(markupLanguage);
parser.setBuilder(builder);
builder.setBookTitle(bookTitle == null ? name : bookTitle);
if (doctype != null) {
builder.setDoctype(doctype);
}
if (topicDoctype != null) {
builder.setTopicDoctype(topicDoctype);
}
builder.setTargetFile(outputFile);
builder.setTopicFolder(topicFolder);
builder.setOutline(outline);
switch(topicStrategy) {
case FIRST:
if (!outline.getChildren().isEmpty()) {
builder.setTopicBreakLevel(outline.getChildren().get(0).getLevel());
} else {
builder.setTopicBreakLevel(1);
}
break;
case LEVEL1:
builder.setTopicBreakLevel(1);
break;
}
parser.parse(markupContent);
} finally {
try {
builder.close();
} catch (IOException e) {
throw new BuildException(MessageFormat.format(// $NON-NLS-1$
Messages.getString("MarkupToDitaTask.12"), // $NON-NLS-1$
outputFile, e.getMessage()), e);
}
}
}
} finally {
try {
writer.close();
} catch (Exception e) {
throw new BuildException(MessageFormat.format(// $NON-NLS-1$
Messages.getString("MarkupToDitaTask.12"), // $NON-NLS-1$
outputFile, e.getMessage()), e);
}
}
}
}
use of org.eclipse.mylyn.wikitext.parser.builder.DitaTopicDocumentBuilder in project mylyn.docs by eclipse.
the class DitaTopicDocumentBuilderTest method testNoFormatting.
public void testNoFormatting() {
parser = new MarkupParser();
parser.setMarkupLanguage(new TextileLanguage());
out = new StringWriter();
DefaultXmlStreamWriter xmlStreamWriter = new DefaultXmlStreamWriter(out);
builder = new DitaTopicDocumentBuilder(xmlStreamWriter, false);
parser.setBuilder(builder);
parser.parse("h1. Title1\n\nsome content in a para");
xmlStreamWriter.close();
String dita = out.toString();
assertTrue(dita.contains("<topic id=\"Title1\"><title>Title1</title><body><p>some content in a para</p></body></topic>"));
}
use of org.eclipse.mylyn.wikitext.parser.builder.DitaTopicDocumentBuilder in project mylyn.docs by eclipse.
the class DitaTopicDocumentBuilderTest method setUp.
@Override
public void setUp() {
parser = new MarkupParser();
parser.setMarkupLanguage(new TextileLanguage());
out = new StringWriter();
builder = new DitaTopicDocumentBuilder(out);
parser.setBuilder(builder);
}
Aggregations