Interface LinkRefProcessor

All Known Implementing Classes:
EnumeratedReferenceLinkRefProcessor, FootnoteLinkRefProcessor, WikiLinkLinkRefProcessor, ZzzzzzLinkRefProcessor

public interface LinkRefProcessor
Processing of elements which are based on a link ref: [] or ![] This includes footnote references [^...] and wiki links [[...]]
  • Method Summary

    Modifier and Type
    Method
    Description
    @NotNull BasedSequence
    adjustInlineText(@NotNull Document document, @NotNull Node node)
    Adjust child nodes' text as needed when some of the link ref text was used in the opening or closing sequence of the node or if the children are not desired then removeIndex them.
    boolean
    allowDelimiters(@NotNull BasedSequence chars, @NotNull Document document, @NotNull Node node)
    Allows the delimiter processor to allow/disallow other delimiters in its inline text
    @NotNull Node
    createNode(@NotNull BasedSequence nodeChars)
    Create the desired element that was previously matched with isMatch
    int
    Whether the element consists of nested [] inside the link ref.
    boolean
    Whether the image ref is desired, if not then ! will be stripped off the prefix and treated as plain text
    boolean
    isMatch(@NotNull BasedSequence nodeChars)
    Test whether the element matches desired one.
    void
    updateNodeElements(@NotNull Document document, @NotNull Node node)
    Allows the processor to adjust nodes' elements after all delimiters have been processed inside the inlined text
  • Method Details

    • getWantExclamationPrefix

      boolean getWantExclamationPrefix()
      Whether the image ref is desired, if not then ! will be stripped off the prefix and treated as plain text
      Returns:
      true if ! is part of the desired element, false otherwise
    • getBracketNestingLevel

      int getBracketNestingLevel()
      Whether the element consists of nested [] inside the link ref. For example Wiki link [[]] processor would return 1 Only immediately nested [] are considered. [[ ]] is nesting 1, [ [ ]] is not considered

      When >0 then preview of next characters is used and if they will match then inner reference will not be created to allow outer one to match the desired element

      Returns:
      desired nesting level for references, >0 for nested, 0 for not nested
    • isMatch

      boolean isMatch(@NotNull @NotNull BasedSequence nodeChars)
      Test whether the element matches desired one. For processors that allow nesting this will be called one additional. time for each nesting level. Last call for the actual match, all others to pre-match to prevent a non-nested element from being created.
      Parameters:
      nodeChars - text to match, including [] or ![]
      Returns:
      true if it is a match
    • createNode

      @NotNull @NotNull Node createNode(@NotNull @NotNull BasedSequence nodeChars)
      Create the desired element that was previously matched with isMatch
      Parameters:
      nodeChars - char sequence from which to create the node
      Returns:
      Node element to be inserted into the tree
    • adjustInlineText

      @NotNull @NotNull BasedSequence adjustInlineText(@NotNull @NotNull Document document, @NotNull @NotNull Node node)
      Adjust child nodes' text as needed when some of the link ref text was used in the opening or closing sequence of the node or if the children are not desired then removeIndex them.
      Parameters:
      document - document, can be used to get parsing options
      node - node whose inline text is to be adjusted to reflect some of the text having been used as part of the opener and/or closer sequence.
      Returns:
      adjusted sequence to use for this node's child text
    • allowDelimiters

      boolean allowDelimiters(@NotNull @NotNull BasedSequence chars, @NotNull @NotNull Document document, @NotNull @NotNull Node node)
      Allows the delimiter processor to allow/disallow other delimiters in its inline text
      Parameters:
      chars - character sub-sequence to test
      document - document, can be used to get options
      node - delimited node created by this processor @return true if delimiters are allowed in this part of the node's text
    • updateNodeElements

      void updateNodeElements(@NotNull @NotNull Document document, @NotNull @NotNull Node node)
      Allows the processor to adjust nodes' elements after all delimiters have been processed inside the inlined text
      Parameters:
      document - document, can be used to get parsing options
      node - node whose elements can be adjusted