Class HtmlRenderer.Builder
- java.lang.Object
-
- com.vladsch.flexmark.util.data.DataSet
-
- com.vladsch.flexmark.util.data.MutableDataSet
-
- com.vladsch.flexmark.util.builder.BuilderBase<HtmlRenderer.Builder>
-
- com.vladsch.flexmark.html.HtmlRenderer.Builder
-
- All Implemented Interfaces:
RendererBuilder
,DataHolder
,MutableDataHolder
,MutableDataSetter
- Enclosing class:
- HtmlRenderer
public static class HtmlRenderer.Builder extends BuilderBase<HtmlRenderer.Builder> implements RendererBuilder
Builder for configuring anHtmlRenderer
. See methods for default configuration.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) java.util.Map<java.lang.Class<?>,AttributeProviderFactory>
attributeProviderFactories
(package private) HeaderIdGeneratorFactory
htmlIdGeneratorFactory
(package private) java.util.List<LinkResolverFactory>
linkResolverFactories
(package private) java.util.List<NodeRendererFactory>
nodeRendererFactories
-
Fields inherited from interface com.vladsch.flexmark.util.data.DataHolder
NULL
-
-
Constructor Summary
Constructors Constructor Description Builder()
Builder(@Nullable DataHolder options)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description @NotNull HtmlRenderer.Builder
attributeProviderFactory(@NotNull AttributeProviderFactory attributeProviderFactory)
Add an attribute provider for adding/changing HTML attributes to the rendered tags.@NotNull HtmlRenderer
build()
@NotNull HtmlRenderer.Builder
contentResolverFactory(@NotNull UriContentResolverFactory contentResolverFactory)
Add a factory for resolving URI to content@NotNull HtmlRenderer.Builder
escapeHtml(boolean escapeHtml)
@NotNull HtmlRenderer.Builder
htmlIdGeneratorFactory(@NotNull HeaderIdGeneratorFactory htmlIdGeneratorFactory)
Add a factory for generating the header id attribute from the header's text@NotNull HtmlRenderer.Builder
indentSize(int indentSize)
The size of the indent to use for hierarchical elements, default 0, means no indent, also fastest renderingboolean
isRendererType(@NotNull java.lang.String supportedRendererType)
@NotNull HtmlRenderer.Builder
linkResolverFactory(@NotNull LinkResolverFactory linkResolverFactory)
Add a factory for instantiating a node renderer (done when rendering).protected boolean
loadExtension(@NotNull Extension extension)
Load extension if it is valid@NotNull HtmlRenderer.Builder
nodeRendererFactory(@NotNull NodeRendererFactory nodeRendererFactory)
Add a factory for instantiating a node renderer (done when rendering).@NotNull HtmlRenderer.Builder
percentEncodeUrls(boolean percentEncodeUrls)
Whether URLs of link or images should be percent-encoded, defaults tofalse
.protected void
preloadExtension(@NotNull Extension extension)
Preload operation for extension, perform any data config and other operation needed for loading extensionprotected void
removeApiPoint(@NotNull java.lang.Object apiPoint)
Remove apiPoint from state information@NotNull HtmlRenderer.Builder
softBreak(@NotNull java.lang.String softBreak)
The HTML to use for rendering a softbreak, defaults to"\n"
(meaning the rendered result doesn't have a line break).-
Methods inherited from class com.vladsch.flexmark.util.builder.BuilderBase
addExtensionApiPoint, extensions, get, loadExtensions, removeExtensions, set, set
-
Methods inherited from class com.vladsch.flexmark.util.data.MutableDataSet
clear, getOrCompute, merge, remove, setAll, setFrom, setIn, toDataSet, toImmutable, toMutable
-
Methods inherited from class com.vladsch.flexmark.util.data.DataSet
aggregate, aggregate, aggregateActions, contains, equals, getAll, getKeys, hashCode, registerDataKeyAggregator, toString
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.vladsch.flexmark.util.data.DataHolder
contains, getAll, getKeys, toDataSet, toImmutable, toMutable
-
-
-
-
Field Detail
-
attributeProviderFactories
java.util.Map<java.lang.Class<?>,AttributeProviderFactory> attributeProviderFactories
-
nodeRendererFactories
java.util.List<NodeRendererFactory> nodeRendererFactories
-
linkResolverFactories
java.util.List<LinkResolverFactory> linkResolverFactories
-
htmlIdGeneratorFactory
HeaderIdGeneratorFactory htmlIdGeneratorFactory
-
-
Constructor Detail
-
Builder
public Builder()
-
Builder
public Builder(@Nullable @Nullable DataHolder options)
-
-
Method Detail
-
removeApiPoint
protected void removeApiPoint(@NotNull @NotNull java.lang.Object apiPoint)
Description copied from class:BuilderBase
Remove apiPoint from state information- Specified by:
removeApiPoint
in classBuilderBase<HtmlRenderer.Builder>
- Parameters:
apiPoint
- api point object
-
preloadExtension
protected void preloadExtension(@NotNull @NotNull Extension extension)
Description copied from class:BuilderBase
Preload operation for extension, perform any data config and other operation needed for loading extension- Specified by:
preloadExtension
in classBuilderBase<HtmlRenderer.Builder>
- Parameters:
extension
- to preload
-
loadExtension
protected boolean loadExtension(@NotNull @NotNull Extension extension)
Description copied from class:BuilderBase
Load extension if it is valid- Specified by:
loadExtension
in classBuilderBase<HtmlRenderer.Builder>
- Parameters:
extension
- to load- Returns:
- true if extension was loaded
-
build
@NotNull public @NotNull HtmlRenderer build()
- Specified by:
build
in classBuilderBase<HtmlRenderer.Builder>
- Returns:
- the configured
HtmlRenderer
-
softBreak
@NotNull public @NotNull HtmlRenderer.Builder softBreak(@NotNull @NotNull java.lang.String softBreak)
The HTML to use for rendering a softbreak, defaults to"\n"
(meaning the rendered result doesn't have a line break).Set it to
"<br>"
(or"<br />"
to make them hard breaks.Set it to
" "
to ignore line wrapping in the source.- Parameters:
softBreak
- HTML for softbreak- Returns:
this
-
indentSize
@NotNull public @NotNull HtmlRenderer.Builder indentSize(int indentSize)
The size of the indent to use for hierarchical elements, default 0, means no indent, also fastest rendering- Parameters:
indentSize
- number of spaces per indent- Returns:
this
-
escapeHtml
@NotNull public @NotNull HtmlRenderer.Builder escapeHtml(boolean escapeHtml)
WhetherHtmlInline
andHtmlBlock
should be escaped, defaults tofalse
.Note that
HtmlInline
is only a tag itself, not the text between an opening tag and a closing tag. So markup in the text will be parsed as normal and is not affected by this option.- Parameters:
escapeHtml
- true for escaping, false for preserving raw HTML- Returns:
this
-
isRendererType
public boolean isRendererType(@NotNull @NotNull java.lang.String supportedRendererType)
-
percentEncodeUrls
@NotNull public @NotNull HtmlRenderer.Builder percentEncodeUrls(boolean percentEncodeUrls)
Whether URLs of link or images should be percent-encoded, defaults tofalse
.If enabled, the following is done:
- Existing percent-encoded parts are preserved (e.g. "%20" is kept as "%20")
- Reserved characters such as "/" are preserved, except for "[" and "]" (see encodeURI in JS)
- Unreserved characters such as "a" are preserved
- Other characters such umlauts are percent-encoded
- Parameters:
percentEncodeUrls
- true to percent-encode, false for leaving as-is- Returns:
this
-
attributeProviderFactory
@NotNull public @NotNull HtmlRenderer.Builder attributeProviderFactory(@NotNull @NotNull AttributeProviderFactory attributeProviderFactory)
Add an attribute provider for adding/changing HTML attributes to the rendered tags.- Specified by:
attributeProviderFactory
in interfaceRendererBuilder
- Parameters:
attributeProviderFactory
- the attribute provider factory to add- Returns:
this
-
nodeRendererFactory
@NotNull public @NotNull HtmlRenderer.Builder nodeRendererFactory(@NotNull @NotNull NodeRendererFactory nodeRendererFactory)
Add a factory for instantiating a node renderer (done when rendering). This allows to override the rendering of node types or define rendering for custom node types.If multiple node renderers for the same node type are created, the one from the factory that was added first "wins". (This is how the rendering for core node types can be overridden; the default rendering comes last.)
- Parameters:
nodeRendererFactory
- the factory for creating a node renderer- Returns:
this
-
linkResolverFactory
@NotNull public @NotNull HtmlRenderer.Builder linkResolverFactory(@NotNull @NotNull LinkResolverFactory linkResolverFactory)
Add a factory for instantiating a node renderer (done when rendering). This allows to override the rendering of node types or define rendering for custom node types.If multiple node renderers for the same node type are created, the one from the factory that was added first "wins". (This is how the rendering for core node types can be overridden; the default rendering comes last.)
- Specified by:
linkResolverFactory
in interfaceRendererBuilder
- Parameters:
linkResolverFactory
- the factory for creating a node renderer- Returns:
this
-
contentResolverFactory
@NotNull public @NotNull HtmlRenderer.Builder contentResolverFactory(@NotNull @NotNull UriContentResolverFactory contentResolverFactory)
Add a factory for resolving URI to content- Specified by:
contentResolverFactory
in interfaceRendererBuilder
- Parameters:
contentResolverFactory
- the factory for creating a node renderer- Returns:
this
-
htmlIdGeneratorFactory
@NotNull public @NotNull HtmlRenderer.Builder htmlIdGeneratorFactory(@NotNull @NotNull HeaderIdGeneratorFactory htmlIdGeneratorFactory)
Add a factory for generating the header id attribute from the header's text- Specified by:
htmlIdGeneratorFactory
in interfaceRendererBuilder
- Parameters:
htmlIdGeneratorFactory
- the factory for generating header tag id attributes- Returns:
this
-
-