use of org.eclipse.mylyn.wikitext.parser.outline.OutlineItem 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.outline.OutlineItem in project mylyn.docs by eclipse.
the class OutlineItemWorkbenchAdapterTest method setUp.
@Override
protected void setUp() throws Exception {
super.setUp();
outline = new OutlineItem(null, 0, "<root>", 0, 100, "<root>");
child1 = new OutlineItem(outline, 1, "id1", 0, 10, "one");
child2 = new OutlineItem(outline, 1, "id2", 11, 50, "two");
adapter = new OutlineItemWorkbenchAdapter();
}
use of org.eclipse.mylyn.wikitext.parser.outline.OutlineItem in project mylyn.docs by eclipse.
the class WikiTextContextStructureBridge method getOutline.
private OutlineItem getOutline(IFile file) {
// FIXME: is editor integration the way to go?? we probably need some kind of core model
IEditorPart editorPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if (editorPart != null) {
OutlineItem outline = (OutlineItem) editorPart.getAdapter(OutlineItem.class);
if (outline != null) {
return outline;
}
}
MarkupLanguage markupLanguage = WikiText.getMarkupLanguageForFilename(file.getName());
if (markupLanguage != null) {
OutlineParser parser = new OutlineParser(markupLanguage);
try {
String contents = getContents(file);
OutlineItem outline = parser.parse(contents);
outline.setResourcePath(file.getFullPath().toString());
return outline;
} catch (Exception e) {
// ignore
return null;
}
}
return null;
}
use of org.eclipse.mylyn.wikitext.parser.outline.OutlineItem in project mylyn.docs by eclipse.
the class WikiTextUserInteractionMonitor method handleWorkbenchPartSelection.
@Override
protected void handleWorkbenchPartSelection(IWorkbenchPart part, ISelection selection, boolean contributeToContext) {
if (selection instanceof ITextSelection) {
OutlineItem item = (OutlineItem) part.getAdapter(OutlineItem.class);
if (item != null) {
OutlineItem relevantItem = item.findNearestMatchingOffset(((ITextSelection) selection).getOffset());
if (relevantItem == null) {
relevantItem = item;
}
handleElementSelection(part, relevantItem, contributeToContext);
}
} else if (selection instanceof IStructuredSelection) {
for (Object element : ((IStructuredSelection) selection).toArray()) {
if (element instanceof OutlineItem) {
handleElementSelection(part, element, contributeToContext);
}
}
}
}
use of org.eclipse.mylyn.wikitext.parser.outline.OutlineItem in project mylyn.docs by eclipse.
the class OutlineItemTest method testGetSectionLength.
public void testGetSectionLength() {
OutlineParser outlineParser = new OutlineParser(new TextileLanguage());
String markup = "h1. First Header\n\nh2. First Header First Child\n\nh1. Third Header\n";
OutlineItem outline = outlineParser.parse(markup);
OutlineItem firstHeader = outline.getChildren().get(0);
OutlineItem secondHeader = outline.getChildren().get(1);
OutlineItem firstHeaderFirstChild = firstHeader.getChildren().get(0);
assertEquals(markup.length(), outline.getSectionLength());
assertEquals(48, firstHeader.getSectionLength());
assertEquals(17, secondHeader.getSectionLength());
assertEquals(30, firstHeaderFirstChild.getSectionLength());
}
Aggregations