package org.openntf.xpt.oneui.renderkit.html_extended;
import java.io.IOException;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import org.markdown4j.Markdown4jProcessor;
import org.openntf.xpt.core.utils.logging.LoggerFactory;
import com.ibm.xsp.renderkit.html_basic.TextAreaRenderer;
import com.ibm.xsp.util.FacesUtil;
public class MarkdownRenderer extends TextAreaRenderer {
@Override
protected void writeTag(FacesContext context, UIInput uiinput, ResponseWriter writer, String value) throws IOException {
if (!uiinput.isRendered()) {
return;
}
if (FacesUtil.isComponentReadOnly(context, uiinput)) {
writeMarkdown(context, writer, value);
} else {
super.writeTag(context, uiinput, writer, value);
}
}
private void writeMarkdown(FacesContext context, ResponseWriter writer, String value) {
try {
String md = new Markdown4jProcessor().process(value);
writer.write(md);
} catch (Exception ex) {
LoggerFactory.logError(getClass(), "Error during write MD", ex);
}
}
}