Module aya.pretty
Package org.aya.pretty.backend.string
Class StringPrinter<Config extends StringPrinterConfig<?>>
java.lang.Object
org.aya.pretty.backend.string.StringPrinter<Config>
- Direct Known Subclasses:
DocHtmlPrinter,DocTermPrinter,DocTeXPrinter
public class StringPrinter<Config extends StringPrinterConfig<?>>
extends Object
implements Printer<String,Config>
The class for all string-output printers.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Configstatic final @NotNull EnumSet<StringPrinter.Outer> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected @NotNull StringescapePlainText(@NotNull String content, EnumSet<StringPrinter.Outer> outer) protected @NotNull DocfitsBetter(@NotNull Cursor cursor, @NotNull Doc a, @NotNull Doc b) protected voidformatBlock(@NotNull Cursor cursor, @NotNull String begin, @NotNull String end, EnumSet<StringPrinter.Outer> outer, @NotNull Runnable inside) Render the resulting document as:protected voidformatBlock(@NotNull Cursor cursor, @NotNull Doc doc, @NotNull String begin, @NotNull String end, EnumSet<StringPrinter.Outer> outer) protected voidformatInline(@NotNull Cursor cursor, @NotNull Doc doc, @NotNull String begin, @NotNull String end, EnumSet<StringPrinter.Outer> outer) Render the resulting document as:protected voidformatList(@NotNull Cursor cursor, Doc.List list, EnumSet<StringPrinter.Outer> outer) protected voidformatList(@NotNull Cursor cursor, Doc.List list, @NotNull IntFunction<String> itemBegin, EnumSet<StringPrinter.Outer> outer) protected @NotNull StringmakeIndent(int indent) protected intpredictWidth(@NotNull Cursor cursor, @NotNull Doc doc) protected @NotNull StringStylist@NotNull StringRender aDocobject with a config.protected voidrenderBlockSeparator(@NotNull Cursor cursor, EnumSet<StringPrinter.Outer> outer) This line break makes target source code beautiful (like .tex or .md generated from Doc).protected voidrenderCodeBlock(@NotNull Cursor cursor, Doc.CodeBlock block, EnumSet<StringPrinter.Outer> outer) protected voidrenderDoc(@NotNull Cursor cursor, @NotNull Doc doc, EnumSet<StringPrinter.Outer> outer) protected voidrenderFlatAlt(@NotNull Cursor cursor, Doc.FlatAlt alt, EnumSet<StringPrinter.Outer> outer) protected voidrenderFooter(@NotNull Cursor cursor) protected voidrenderHardLineBreak(@NotNull Cursor cursor, EnumSet<StringPrinter.Outer> outer) This line break is printed in the resulting document (like .pdf generated from .tex or .md).protected voidrenderHeader(@NotNull Cursor cursor) protected voidrenderHyperLinked(@NotNull Cursor cursor, Doc.HyperLinked text, EnumSet<StringPrinter.Outer> outer) protected voidrenderImage(@NotNull Cursor cursor, Doc.Image image, EnumSet<StringPrinter.Outer> outer) protected voidrenderInlineCode(@NotNull Cursor cursor, Doc.InlineCode code, EnumSet<StringPrinter.Outer> outer) protected voidrenderInlineMath(@NotNull Cursor cursor, Doc.InlineMath code, EnumSet<StringPrinter.Outer> outer) protected voidrenderList(@NotNull Cursor cursor, Doc.List list, EnumSet<StringPrinter.Outer> outer) protected voidrenderMathBlock(@NotNull Cursor cursor, Doc.MathBlock block, EnumSet<StringPrinter.Outer> outer) protected voidrenderNest(@NotNull Cursor cursor, Doc.Nest nest, EnumSet<StringPrinter.Outer> outer) protected voidrenderPlainText(@NotNull Cursor cursor, @NotNull String content, EnumSet<StringPrinter.Outer> outer) protected voidrenderSpecialSymbol(@NotNull Cursor cursor, @NotNull String text, EnumSet<StringPrinter.Outer> outer) protected voidrenderStyled(@NotNull Cursor cursor, Doc.Styled styled, EnumSet<StringPrinter.Outer> outer) protected voidrenderTooltip(@NotNull Cursor cursor, Doc.Tooltip tooltip, EnumSet<StringPrinter.Outer> outer) protected voidrenderUnionDoc(@NotNull Cursor cursor, Doc.Union union, EnumSet<StringPrinter.Outer> outer) protected voidseparateBlockIfNeeded(@NotNull Cursor cursor, EnumSet<StringPrinter.Outer> outer) renderBlockSeparator if not line start
-
Field Details
-
FREE
-
config
-
-
Constructor Details
-
StringPrinter
public StringPrinter()
-
-
Method Details
-
makeIndent
-
render
Description copied from interface:PrinterRender aDocobject with a config.- Specified by:
renderin interfacePrinter<String,Config extends StringPrinterConfig<?>> - Parameters:
config- printer configdoc- doc object- Returns:
- rendered content
-
predictWidth
-
fitsBetter
-
renderHeader
-
renderDoc
protected void renderDoc(@NotNull @NotNull Cursor cursor, @NotNull @NotNull Doc doc, EnumSet<StringPrinter.Outer> outer) -
renderSpecialSymbol
protected void renderSpecialSymbol(@NotNull @NotNull Cursor cursor, @NotNull @NotNull String text, EnumSet<StringPrinter.Outer> outer) -
renderNest
protected void renderNest(@NotNull @NotNull Cursor cursor, @NotNull Doc.Nest nest, EnumSet<StringPrinter.Outer> outer) -
renderUnionDoc
protected void renderUnionDoc(@NotNull @NotNull Cursor cursor, @NotNull Doc.Union union, EnumSet<StringPrinter.Outer> outer) -
renderFlatAlt
protected void renderFlatAlt(@NotNull @NotNull Cursor cursor, @NotNull Doc.FlatAlt alt, EnumSet<StringPrinter.Outer> outer) -
renderHyperLinked
protected void renderHyperLinked(@NotNull @NotNull Cursor cursor, @NotNull Doc.HyperLinked text, EnumSet<StringPrinter.Outer> outer) -
renderImage
protected void renderImage(@NotNull @NotNull Cursor cursor, @NotNull Doc.Image image, EnumSet<StringPrinter.Outer> outer) -
renderStyled
protected void renderStyled(@NotNull @NotNull Cursor cursor, @NotNull Doc.Styled styled, EnumSet<StringPrinter.Outer> outer) -
prepareStylist
-
renderPlainText
protected void renderPlainText(@NotNull @NotNull Cursor cursor, @NotNull @NotNull String content, EnumSet<StringPrinter.Outer> outer) -
escapePlainText
@NotNull protected @NotNull String escapePlainText(@NotNull @NotNull String content, EnumSet<StringPrinter.Outer> outer) -
renderBlockSeparator
protected void renderBlockSeparator(@NotNull @NotNull Cursor cursor, EnumSet<StringPrinter.Outer> outer) This line break makes target source code beautiful (like .tex or .md generated from Doc). It is not printed in the resulting document (like .pdf generated from .tex or .md), since it only separates different block elements (list, code block, etc.) in generated source files.The default implementation is to print a single `\n` character and move to new line.
- API Note:
- This is called by
renderCodeBlock(org.aya.pretty.backend.string.Cursor, org.aya.pretty.doc.Doc.CodeBlock, java.util.EnumSet<org.aya.pretty.backend.string.StringPrinter.Outer>),renderMathBlock(org.aya.pretty.backend.string.Cursor, org.aya.pretty.doc.Doc.MathBlock, java.util.EnumSet<org.aya.pretty.backend.string.StringPrinter.Outer>),formatList(org.aya.pretty.backend.string.Cursor, org.aya.pretty.doc.Doc.List, java.util.EnumSet<org.aya.pretty.backend.string.StringPrinter.Outer>), and other block rendering methods to separate the current block from the previous one.
-
renderHardLineBreak
protected void renderHardLineBreak(@NotNull @NotNull Cursor cursor, EnumSet<StringPrinter.Outer> outer) This line break is printed in the resulting document (like .pdf generated from .tex or .md). The default implementation is same asrenderBlockSeparator(org.aya.pretty.backend.string.Cursor, java.util.EnumSet<org.aya.pretty.backend.string.StringPrinter.Outer>). Backends may override this method if the source code line break is different from the printed line break, (like LaTeX use '\\' for new line in the printed document). -
renderTooltip
protected void renderTooltip(@NotNull @NotNull Cursor cursor, @NotNull Doc.Tooltip tooltip, EnumSet<StringPrinter.Outer> outer) -
renderCodeBlock
protected void renderCodeBlock(@NotNull @NotNull Cursor cursor, @NotNull Doc.CodeBlock block, EnumSet<StringPrinter.Outer> outer) -
renderInlineCode
protected void renderInlineCode(@NotNull @NotNull Cursor cursor, @NotNull Doc.InlineCode code, EnumSet<StringPrinter.Outer> outer) -
renderMathBlock
protected void renderMathBlock(@NotNull @NotNull Cursor cursor, @NotNull Doc.MathBlock block, EnumSet<StringPrinter.Outer> outer) -
renderInlineMath
protected void renderInlineMath(@NotNull @NotNull Cursor cursor, @NotNull Doc.InlineMath code, EnumSet<StringPrinter.Outer> outer) -
renderList
protected void renderList(@NotNull @NotNull Cursor cursor, @NotNull Doc.List list, EnumSet<StringPrinter.Outer> outer) -
formatList
protected void formatList(@NotNull @NotNull Cursor cursor, @NotNull Doc.List list, EnumSet<StringPrinter.Outer> outer) -
formatList
protected void formatList(@NotNull @NotNull Cursor cursor, @NotNull Doc.List list, @NotNull @NotNull IntFunction<String> itemBegin, EnumSet<StringPrinter.Outer> outer) -
separateBlockIfNeeded
protected void separateBlockIfNeeded(@NotNull @NotNull Cursor cursor, EnumSet<StringPrinter.Outer> outer) renderBlockSeparator if not line start -
formatBlock
-
formatBlock
protected void formatBlock(@NotNull @NotNull Cursor cursor, @NotNull @NotNull String begin, @NotNull @NotNull String end, EnumSet<StringPrinter.Outer> outer, @NotNull @NotNull Runnable inside) Render the resulting document as:begin\n inside()\n end\n
-
formatInline
protected void formatInline(@NotNull @NotNull Cursor cursor, @NotNull @NotNull Doc doc, @NotNull @NotNull String begin, @NotNull @NotNull String end, EnumSet<StringPrinter.Outer> outer) Render the resulting document as:beginĀ·docĀ·end
-