Search in sources :

Example 1 with OutlineItem

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);
            }
        }
    }
}
Also used : DitaBookMapDocumentBuilder(org.eclipse.mylyn.wikitext.parser.builder.DitaBookMapDocumentBuilder) FormattingXMLStreamWriter(org.eclipse.mylyn.wikitext.util.FormattingXMLStreamWriter) DitaTopicDocumentBuilder(org.eclipse.mylyn.wikitext.parser.builder.DitaTopicDocumentBuilder) DefaultXmlStreamWriter(org.eclipse.mylyn.wikitext.util.DefaultXmlStreamWriter) IOException(java.io.IOException) IOException(java.io.IOException) BuildException(org.apache.tools.ant.BuildException) OutlineItem(org.eclipse.mylyn.wikitext.parser.outline.OutlineItem) OutlineParser(org.eclipse.mylyn.wikitext.parser.outline.OutlineParser) FileOutputStream(java.io.FileOutputStream) OutputStreamWriter(java.io.OutputStreamWriter) BuildException(org.apache.tools.ant.BuildException) File(java.io.File) BufferedOutputStream(java.io.BufferedOutputStream) FormattingXMLStreamWriter(org.eclipse.mylyn.wikitext.util.FormattingXMLStreamWriter) Writer(java.io.Writer) OutputStreamWriter(java.io.OutputStreamWriter) DefaultXmlStreamWriter(org.eclipse.mylyn.wikitext.util.DefaultXmlStreamWriter) MarkupParser(org.eclipse.mylyn.wikitext.parser.MarkupParser)

Example 2 with OutlineItem

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();
}
Also used : OutlineItem(org.eclipse.mylyn.wikitext.parser.outline.OutlineItem)

Example 3 with OutlineItem

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;
}
Also used : OutlineParser(org.eclipse.mylyn.wikitext.parser.outline.OutlineParser) IEditorPart(org.eclipse.ui.IEditorPart) MarkupLanguage(org.eclipse.mylyn.wikitext.parser.markup.MarkupLanguage) CoreException(org.eclipse.core.runtime.CoreException) OutlineItem(org.eclipse.mylyn.wikitext.parser.outline.OutlineItem)

Example 4 with OutlineItem

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);
            }
        }
    }
}
Also used : IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) ITextSelection(org.eclipse.jface.text.ITextSelection) OutlineItem(org.eclipse.mylyn.wikitext.parser.outline.OutlineItem)

Example 5 with OutlineItem

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());
}
Also used : TextileLanguage(org.eclipse.mylyn.wikitext.textile.TextileLanguage) OutlineParser(org.eclipse.mylyn.wikitext.parser.outline.OutlineParser) OutlineItem(org.eclipse.mylyn.wikitext.parser.outline.OutlineItem)

Aggregations

OutlineItem (org.eclipse.mylyn.wikitext.parser.outline.OutlineItem)58 OutlineParser (org.eclipse.mylyn.wikitext.parser.outline.OutlineParser)18 MediaWikiLanguage (org.eclipse.mylyn.wikitext.mediawiki.MediaWikiLanguage)9 Point (org.eclipse.swt.graphics.Point)8 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)7 ITextSelection (org.eclipse.jface.text.ITextSelection)5 Attributes (org.eclipse.mylyn.wikitext.parser.Attributes)5 MarkupLanguage (org.eclipse.mylyn.wikitext.parser.markup.MarkupLanguage)5 BufferedOutputStream (java.io.BufferedOutputStream)4 FileOutputStream (java.io.FileOutputStream)4 OutputStreamWriter (java.io.OutputStreamWriter)4 Writer (java.io.Writer)4 BuildException (org.apache.tools.ant.BuildException)4 ISelection (org.eclipse.jface.viewers.ISelection)4 AbstractMarkupLanguage (org.eclipse.mylyn.wikitext.parser.markup.AbstractMarkupLanguage)4 File (java.io.File)3 IOException (java.io.IOException)3 ArrayList (java.util.ArrayList)3 IMenuManager (org.eclipse.jface.action.IMenuManager)3 MenuManager (org.eclipse.jface.action.MenuManager)3