
com.g2forge.enigma.document.convert.md.MDRenderer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of en-document Show documentation
Show all versions of en-document Show documentation
Models, parsers and renderers for common documentation formats. This library is helpful for generating documentation and translating formats like MD, wikitext and office documents.
package com.g2forge.enigma.document.convert.md;
import java.lang.reflect.Type;
import java.util.Stack;
import com.g2forge.alexandria.java.close.ICloseable;
import com.g2forge.alexandria.java.core.error.NotYetImplementedError;
import com.g2forge.alexandria.java.enums.EnumException;
import com.g2forge.alexandria.java.function.IFunction1;
import com.g2forge.alexandria.java.typeswitch.TypeSwitch1;
import com.g2forge.enigma.document.Block;
import com.g2forge.enigma.document.Definition;
import com.g2forge.enigma.document.DocList;
import com.g2forge.enigma.document.Emphasis;
import com.g2forge.enigma.document.IBlock;
import com.g2forge.enigma.document.IDocListItem;
import com.g2forge.enigma.document.ISpan;
import com.g2forge.enigma.document.Image;
import com.g2forge.enigma.document.Link;
import com.g2forge.enigma.document.Section;
import com.g2forge.enigma.document.Span;
import com.g2forge.enigma.document.Text;
import lombok.Data;
public class MDRenderer {
protected enum LineBreakStrategy {
None,
Item {
@Override
public void beforeItem(IMDRenderContext context, boolean first) {
if (!first) {
final String newline = context.getNewline();
context.getBuilder().append(newline).append(newline);
}
}
},
Period {
@Override
public void text(IMDRenderContext context, String text) {
final String broken = text.replaceAll("\\.\\s+", "." + context.getNewline());
context.getBuilder().append(broken);
}
};
public static LineBreakStrategy fromBlockType(Block.Type type) {
switch (type) {
case Document:
case Block:
return Item;
case Paragraph:
case ListItem:
return Period;
default:
throw new EnumException(Block.Type.class, type);
}
}
public void beforeItem(IMDRenderContext context, boolean first) {}
public void text(IMDRenderContext context, String text) {
context.getBuilder().append(text);
}
}
@Data
protected static class MDRenderContext implements IMDRenderContext {
protected static final IFunction1
© 2015 - 2025 Weber Informatics LLC | Privacy Policy