Class HtmlRenderer.MainNodeRenderer

java.lang.Object
com.vladsch.flexmark.html.NodeRendererSubContext
com.vladsch.flexmark.html.HtmlRenderer.MainNodeRenderer
All Implemented Interfaces:
Disposable, LinkResolverBasicContext, LinkResolverContext, NodeRendererContext
Enclosing class:
HtmlRenderer

private class HtmlRenderer.MainNodeRenderer extends NodeRendererSubContext implements NodeRendererContext, Disposable
  • Field Details

  • Constructor Details

  • Method Details

    • dispose

      public void dispose()
      Specified by:
      dispose in interface Disposable
    • getCurrentNode

      @NotNull public @NotNull Node getCurrentNode()
      Specified by:
      getCurrentNode in interface LinkResolverContext
      Returns:
      the current node being rendered
    • resolveLink

      @NotNull public @NotNull ResolvedLink resolveLink(@NotNull @NotNull LinkType linkType, @NotNull @NotNull CharSequence url, Attributes attributes, Boolean urlEncode)
      Description copied from interface: LinkResolverContext
      Resolve link for rendering. Link Resolvers are going to be called until one returns ResolvedLink with getStatus() != LinkStatus.Unknown

      A resolver can replace the url but not change the status letting downstream resolvers handle the rest. This is useful when a resolver does partial processing like macro expansion but does not know how to handle the rest.

      Core processing will simply pass the link as is. It is up to extension LinkResolvers and AttributeProviders to make sense of the link and applicable attributes based on status.

      Specified by:
      resolveLink in interface LinkResolverContext
      Parameters:
      linkType - type of link being rendered. Core defined links are Link, Image. Extensions can define their own
      url - link url text
      attributes - link attributes
      urlEncode - whether the link should be url encoded, if null then the value of HtmlRenderer.PERCENT_ENCODE_URLS will be used to determine whether the resolved URL is to be encoded.
      Returns:
      resolved link url for this link and its resolved status
    • getNodeId

      public String getNodeId(@NotNull @NotNull Node node)
      Description copied from interface: NodeRendererContext
      Get the id attribute for the given node.
      Specified by:
      getNodeId in interface NodeRendererContext
      Parameters:
      node - node for which to get an id, depends on the HtmlIdGenerator assigned for the context. Default generator only creates ids for Heading nodes or custom nodes that implement AnchorRefTarget interface.
      Returns:
      id string or null
    • getOptions

      @NotNull public @NotNull DataHolder getOptions()
      Description copied from interface: LinkResolverContext
      Get the current rendering context DataHolder. These are the options passed or set on the HtmlRenderer.builder() or passed to HtmlRenderer.builder(DataHolder). To get the document options you should use LinkResolverContext.getDocument() as the data holder.
      Specified by:
      getOptions in interface LinkResolverBasicContext
      Specified by:
      getOptions in interface LinkResolverContext
      Returns:
      the current renderer options DataHolder
    • getHtmlOptions

      @NotNull public @NotNull HtmlRendererOptions getHtmlOptions()
      Specified by:
      getHtmlOptions in interface NodeRendererContext
      Returns:
      the HtmlRendererOptions for the context.
    • getDocument

      @NotNull public @NotNull Document getDocument()
      Specified by:
      getDocument in interface LinkResolverBasicContext
      Specified by:
      getDocument in interface LinkResolverContext
      Returns:
      the Document node of the current context
    • getRenderingPhase

      @NotNull public @NotNull RenderingPhase getRenderingPhase()
      Specified by:
      getRenderingPhase in interface NodeRendererContext
      Returns:
      current rendering phase
    • encodeUrl

      @NotNull public @NotNull String encodeUrl(@NotNull @NotNull CharSequence url)
      Specified by:
      encodeUrl in interface LinkResolverContext
      Parameters:
      url - to be encoded
      Returns:
      an encoded URL (depending on the configuration)
    • extendRenderingNodeAttributes

      @NotNull public @NotNull MutableAttributes extendRenderingNodeAttributes(@NotNull @NotNull AttributablePart part, Attributes attributes)
      Description copied from interface: NodeRendererContext
      Extend the attributes by extensions for the node being currently rendered.
      Specified by:
      extendRenderingNodeAttributes in interface NodeRendererContext
      Parameters:
      part - the tag of the node being rendered, some nodes render multiple tags with attributes
      attributes - the attributes that were calculated by the renderer or null, these may be modified. To preserve originals pass a copy.
      Returns:
      the extended attributes with added/updated/removed entries
    • extendRenderingNodeAttributes

      @NotNull public @NotNull MutableAttributes extendRenderingNodeAttributes(@NotNull @NotNull Node node, @NotNull @NotNull AttributablePart part, Attributes attributes)
      Description copied from interface: NodeRendererContext
      Extend the attributes by extensions for the node being currently rendered.
      Specified by:
      extendRenderingNodeAttributes in interface NodeRendererContext
      Parameters:
      node - node for which to get attributes
      part - the tag of the node being rendered, some nodes render multiple tags with attributes
      attributes - the attributes that were calculated by the renderer or null, these may be modified. To preserve originals pass a copy.
      Returns:
      the extended attributes with added/updated/removed entries
    • render

      public void render(@NotNull @NotNull Node node)
      Description copied from interface: LinkResolverContext
      Render the specified node and its children using the configured renderers. This should be used to render child nodes; be careful not to pass the node that is being rendered, that would result in an endless loop.
      Specified by:
      render in interface LinkResolverContext
      Parameters:
      node - the node to render
    • delegateRender

      public void delegateRender()
      Description copied from interface: NodeRendererContext
      pass node rendering to previously registered handler
      Specified by:
      delegateRender in interface NodeRendererContext
    • renderByPreviousHandler

      void renderByPreviousHandler(NodeRendererSubContext subContext)
    • getSubContext

      @NotNull public @NotNull NodeRendererContext getSubContext(boolean inheritIndent)
      Description copied from interface: NodeRendererContext
      Creates a child rendering context that can be used to collect rendered html text. The child context inherits everything but the HtmlRenderer, renderedNode, renderingHandler and doNotRenderLinksNesting from the parent.
      Specified by:
      getSubContext in interface NodeRendererContext
      Parameters:
      inheritIndent - whether the html writer of the sub-context should inherit the current context's indentation level or start with 0 indentation
      Returns:
      a new rendering context with a given appendable for its output
    • getDelegatedSubContext

      @NotNull public @NotNull NodeRendererContext getDelegatedSubContext(boolean inheritIndent)
      Description copied from interface: NodeRendererContext
      Creates a child rendering context that can be used to collect rendered html text of the previously registered node renderer. The child context inherits everything but the HtmlRenderer and doNotRenderLinksNesting from the parent.
      Specified by:
      getDelegatedSubContext in interface NodeRendererContext
      Parameters:
      inheritIndent - whether the html writer of the sub-context should inherit the current context's indentation level or start with 0 indentation
      Returns:
      a new rendering context with a given appendable for its output
    • renderNode

      void renderNode(Node node, NodeRendererSubContext subContext)
    • renderChildren

      public void renderChildren(@NotNull @NotNull Node parent)
      Description copied from interface: LinkResolverContext
      Render the children of the node, used by custom renderers
      Specified by:
      renderChildren in interface LinkResolverContext
      Parameters:
      parent - node the children of which are to be rendered
    • renderChildrenNode

      protected void renderChildrenNode(Node parent, NodeRendererSubContext subContext)