package org.erlide.engine.services.text; import java.util.Collection; import org.erlide.engine.model.ErlModelException; import org.erlide.engine.model.erlang.IErlComment; import org.erlide.engine.model.erlang.IErlTypespec; import org.erlide.util.ErlLogger; public class DocumentationFormatter { public static String getDocumentationString(final Collection<IErlComment> comments, final IErlTypespec typespec) { final StringBuilder stringBuilder = new StringBuilder(); if (!comments.isEmpty()) { stringBuilder.append("<pre class='edoc'>"); for (final IErlComment member : comments) { try { final String source = "\n" + member.getSource(); stringBuilder.append(source.replaceAll("\n%%%", "\n") .replaceAll("\n%%", "\n").replaceAll("\n%", "\n").substring(1) .replaceAll("\n( *([-=] *)+\n)+", "\n<hr/>\n") .replaceAll("^ *([-=] *)+\n", "\n") .replaceAll("\n *([-=] *)+$", "\n")); if (!source.endsWith("\n")) { stringBuilder.append('\n'); } stringBuilder.append('\n'); } catch (final ErlModelException e) { ErlLogger.warn(e); } } stringBuilder.append("</pre>"); } if (typespec != null) { try { stringBuilder.append("<hr/><pre class='typespec'>") .append(typespec.getSource()).append("</pre>"); } catch (final ErlModelException e) { ErlLogger.warn(e); } } return stringBuilder.toString().replace("\n", "<br/>"); } }