package org.eclipse.xtext.xdoc.generator; import com.google.inject.Inject; import java.util.List; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; import org.eclipse.xtend2.lib.StringConcatenation; import org.eclipse.xtext.xbase.lib.Extension; import org.eclipse.xtext.xdoc.generator.AbstractSectionExtension; import org.eclipse.xtext.xdoc.generator.EclipseHelpUriUtil; import org.eclipse.xtext.xdoc.generator.PlainText; import org.eclipse.xtext.xdoc.generator.util.EclipseNamingExtensions; import org.eclipse.xtext.xdoc.xdoc.AbstractSection; import org.eclipse.xtext.xdoc.xdoc.Chapter; import org.eclipse.xtext.xdoc.xdoc.Document; import org.eclipse.xtext.xdoc.xdoc.Part; import org.eclipse.xtext.xdoc.xdoc.Section; import org.eclipse.xtext.xdoc.xdoc.TextOrMarkup; @SuppressWarnings("all") public class TocGenerator { @Inject @Extension private AbstractSectionExtension sectionExtension; @Inject @Extension private EclipseNamingExtensions eclipseNamingExtensions; @Inject @Extension private PlainText plainText; public CharSequence generateToc(final Document doc, final EclipseHelpUriUtil uriUtil) { StringConcatenation _builder = new StringConcatenation(); _builder.append("<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>"); _builder.newLine(); _builder.append("<toc topic=\"contents/"); String _fullURL = this.eclipseNamingExtensions.getFullURL(doc); _builder.append(_fullURL, ""); _builder.append("\" label=\""); TextOrMarkup _title = doc.getTitle(); CharSequence _genPlainText = this.plainText.genPlainText(_title); _builder.append(_genPlainText, ""); _builder.append("\" >"); _builder.newLineIfNotEmpty(); { EList<Chapter> _chapters = doc.getChapters(); for(final Chapter c : _chapters) { _builder.append("\t"); CharSequence _genTocEntry = this.genTocEntry(c, uriUtil); _builder.append(_genTocEntry, "\t"); _builder.newLineIfNotEmpty(); } } { EList<Part> _parts = doc.getParts(); for(final Part p : _parts) { _builder.append("\t"); CharSequence _genTocEntry_1 = this.genTocEntry(p, uriUtil); _builder.append(_genTocEntry_1, "\t"); _builder.newLineIfNotEmpty(); } } _builder.append("</toc>"); _builder.newLine(); return _builder; } public CharSequence genTocEntry(final Chapter c, final EclipseHelpUriUtil uriUtil) { StringConcatenation _builder = new StringConcatenation(); _builder.append("<topic href=\"contents/"); URI _targetURI = uriUtil.getTargetURI(c); _builder.append(_targetURI, ""); _builder.append("\" label=\""); TextOrMarkup _title = c.getTitle(); CharSequence _genPlainText = this.plainText.genPlainText(_title); _builder.append(_genPlainText, ""); _builder.append("\" >"); _builder.newLineIfNotEmpty(); { EList<Section> _subSections = c.getSubSections(); for(final Section ss : _subSections) { _builder.append("\t"); CharSequence _genTocEntry = this.genTocEntry(ss, uriUtil); _builder.append(_genTocEntry, "\t"); _builder.newLineIfNotEmpty(); } } _builder.append("</topic>"); _builder.newLine(); return _builder; } public CharSequence genTocEntry(final AbstractSection section, final EclipseHelpUriUtil uriUtil) { StringConcatenation _builder = new StringConcatenation(); _builder.append("<topic href=\"contents/"); URI _targetURI = uriUtil.getTargetURI(section); _builder.append(_targetURI, ""); _builder.append("\" label=\""); TextOrMarkup _title = section.getTitle(); CharSequence _genPlainText = this.plainText.genPlainText(_title); _builder.append(_genPlainText, ""); _builder.append("\" >"); _builder.newLineIfNotEmpty(); { List<? extends AbstractSection> _sections = this.sectionExtension.sections(section); for(final AbstractSection ss : _sections) { _builder.append("\t"); CharSequence _genTocEntry = this.genTocEntry(ss, uriUtil); _builder.append(_genTocEntry, "\t"); _builder.newLineIfNotEmpty(); } } _builder.append("</topic>"); _builder.newLine(); return _builder; } }