package org.eclipse.xtext.xdoc.generator; import com.google.common.base.Objects; import java.util.Arrays; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtend2.lib.StringConcatenation; import org.eclipse.xtext.common.types.JvmDeclaredType; import org.eclipse.xtext.xbase.lib.Functions.Function2; import org.eclipse.xtext.xbase.lib.IterableExtensions; import org.eclipse.xtext.xdoc.xdoc.CodeBlock; import org.eclipse.xtext.xdoc.xdoc.CodeRef; import org.eclipse.xtext.xdoc.xdoc.Emphasize; import org.eclipse.xtext.xdoc.xdoc.Identifiable; import org.eclipse.xtext.xdoc.xdoc.Link; import org.eclipse.xtext.xdoc.xdoc.Ref; import org.eclipse.xtext.xdoc.xdoc.TextOrMarkup; import org.eclipse.xtext.xdoc.xdoc.TextPart; @SuppressWarnings("all") public class PlainText { protected CharSequence _genPlainText(final TextOrMarkup tom) { EList<EObject> _contents = tom.getContents(); StringConcatenation _builder = new StringConcatenation(); final Function2<String, EObject, String> _function = new Function2<String, EObject, String>() { public String apply(final String e1, final EObject e2) { StringConcatenation _builder = new StringConcatenation(); _builder.append(e1, ""); CharSequence _genPlainText = PlainText.this.genPlainText(e2); _builder.append(_genPlainText, ""); return _builder.toString(); } }; return IterableExtensions.<EObject, String>fold(_contents, _builder.toString(), _function); } protected CharSequence _genPlainText(final TextPart tp) { return tp.getText(); } protected CharSequence _genPlainText(final Emphasize em) { EList<TextOrMarkup> _contents = em.getContents(); StringConcatenation _builder = new StringConcatenation(); final Function2<String, TextOrMarkup, String> _function = new Function2<String, TextOrMarkup, String>() { public String apply(final String e1, final TextOrMarkup e2) { StringConcatenation _builder = new StringConcatenation(); _builder.append(e1, ""); CharSequence _genPlainText = PlainText.this.genPlainText(e2); _builder.append(_genPlainText, ""); return _builder.toString(); } }; return IterableExtensions.<TextOrMarkup, String>fold(_contents, _builder.toString(), _function); } protected CharSequence _genPlainText(final Link l) { CharSequence _xblockexpression = null; { StringConcatenation _builder = new StringConcatenation(); String _text = l.getText(); _builder.append(_text, ""); final String text = _builder.toString(); CharSequence _xifexpression = null; String _string = text.toString(); boolean _notEquals = (!Objects.equal(_string, text)); if (_notEquals) { _xifexpression = text; } else { StringConcatenation _builder_1 = new StringConcatenation(); _builder_1.append("\""); String _url = l.getUrl(); _builder_1.append(_url, ""); _builder_1.append("\""); _xifexpression = _builder_1; } _xblockexpression = _xifexpression; } return _xblockexpression; } protected CharSequence _genPlainText(final Ref ref) { StringConcatenation _builder = new StringConcatenation(); { EList<TextOrMarkup> _contents = ref.getContents(); boolean _isEmpty = _contents.isEmpty(); boolean _not = (!_isEmpty); if (_not) { { EList<TextOrMarkup> _contents_1 = ref.getContents(); for(final TextOrMarkup e : _contents_1) { CharSequence _genPlainText = this.genPlainText(e); _builder.append(_genPlainText, ""); _builder.newLineIfNotEmpty(); } } } else { Identifiable _ref = ref.getRef(); String _name = _ref.getName(); _builder.append(_name, ""); _builder.newLineIfNotEmpty(); } } return _builder; } protected CharSequence _genPlainText(final CodeRef cRef) { StringConcatenation _builder = new StringConcatenation(); JvmDeclaredType _element = cRef.getElement(); String _qualifiedName = _element.getQualifiedName(); _builder.append(_qualifiedName, ""); return _builder; } protected CharSequence _genPlainText(final CodeBlock cb) { StringConcatenation _builder = new StringConcatenation(); { EList<EObject> _contents = cb.getContents(); for(final EObject c : _contents) { CharSequence _genPlainText = this.genPlainText(c); _builder.append(_genPlainText, ""); _builder.newLineIfNotEmpty(); } } return _builder; } protected CharSequence _genPlainText(final Object o) { StringConcatenation _builder = new StringConcatenation(); return _builder; } protected CharSequence _genPlainText(final Void v) { StringConcatenation _builder = new StringConcatenation(); return _builder; } public CharSequence genPlainText(final Object cb) { if (cb instanceof CodeBlock) { return _genPlainText((CodeBlock)cb); } else if (cb instanceof CodeRef) { return _genPlainText((CodeRef)cb); } else if (cb instanceof Emphasize) { return _genPlainText((Emphasize)cb); } else if (cb instanceof Link) { return _genPlainText((Link)cb); } else if (cb instanceof Ref) { return _genPlainText((Ref)cb); } else if (cb instanceof TextOrMarkup) { return _genPlainText((TextOrMarkup)cb); } else if (cb instanceof TextPart) { return _genPlainText((TextPart)cb); } else if (cb == null) { return _genPlainText((Void)null); } else if (cb != null) { return _genPlainText(cb); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(cb).toString()); } } }