All Known Subinterfaces:
TagResolver.Single, TagResolver.WithoutArguments

public interface TagResolver
A collection of known tags.

A resolver can handle anywhere from a single tag, to a dynamically generated set of tags, returning a tag based on the provided name and arguments.

Since:
4.10.0
See Also:
  • Method Details

    • builder

      static TagResolver.Builder builder()
      Create a new builder for a tag resolver.
      Returns:
      the tag resolver builder
      Since:
      4.10.0
    • standard

      static TagResolver standard()
      Get the tag resolver that resolves all standard tags.

      This is the default resolver used by parsers.

      Returns:
      the default resolver
      Since:
      4.10.0
    • empty

      static TagResolver empty()
      An empty tag resolver that will return null for all resolve attempts.
      Returns:
      the tag resolver
      Since:
      4.10.0
    • resolver

      static TagResolver.Single resolver(@TagPattern String name, Tag tag)
      A tag resolver that will resolve a single tag by a case-insensitive key.
      Parameters:
      name - the name of the tag to resolve
      tag - the tag logic to return
      Returns:
      a new tag resolver
      Since:
      4.10.0
    • resolver

      static TagResolver resolver(@TagPattern String name, BiFunction<ArgumentQueue,Context,Tag> handler)
      Create a tag resolver that only responds to a single tag name, and whose value does not depend on that name.
      Parameters:
      name - the name to respond to
      handler - the tag handler, may throw ParsingException if provided arguments are in an invalid format
      Returns:
      a resolver that creates tags using the provided handler
      Since:
      4.10.0
    • resolver

      static TagResolver resolver(Set<String> names, BiFunction<ArgumentQueue,Context,Tag> handler)
      Create a tag resolver that only responds to certain tag names, and whose value does not depend on that name.
      Parameters:
      names - the names to respond to
      handler - the tag handler, may throw ParsingException if provided arguments are in an invalid format
      Returns:
      a resolver that creates tags using the provided handler
      Since:
      4.10.0
    • resolver

      static TagResolver resolver(TagResolver... resolvers)
      Constructs a tag resolver capable of resolving from multiple sources.

      The last specified resolver takes priority.

      Parameters:
      resolvers - the tag resolvers
      Returns:
      the tag resolver
      Since:
      4.10.0
    • resolver

      static TagResolver resolver(Iterable<? extends TagResolver> resolvers)
      Constructs a tag resolver capable of resolving from multiple sources.

      The last specified resolver takes priority.

      The provided iterable is copied. This means changes to the iterable will not reflect in the returned resolver.

      Parameters:
      resolvers - the tag resolvers
      Returns:
      the tag resolver
      Since:
      4.10.0
    • caching

      static TagResolver caching(TagResolver.WithoutArguments resolver)
      Constructs a tag resolver capable of caching resolved tags.

      The resolver can return null to indicate it cannot resolve a placeholder. Once a string to replacement mapping has been created, it will be cached to avoid the cost of recreating the replacement.

      Due to the complexity of handling lookups for tags with arguments, the built-in cache does not support anything but tags without arguments.

      Parameters:
      resolver - the resolver
      Returns:
      the caching tag resolver
      Since:
      4.10.0
    • toTagResolver

      static Collector<TagResolver,?,TagResolver> toTagResolver()
      A collector that will combine a stream of resolvers into one joined resolver.
      Returns:
      a collector for tag resolvers
      Since:
      4.10.0
    • resolve

      @Nullable Tag resolve(@TagPattern String name, ArgumentQueue arguments, Context ctx) throws ParsingException
      Gets a tag from this resolver based on the current state.
      Parameters:
      name - the tag name
      arguments - the arguments passed to the tag
      ctx - the parse context
      Returns:
      a possible tag
      Throws:
      ParsingException - if the provided arguments are invalid
      Since:
      4.10.0
    • has

      boolean has(String name)
      Get whether this resolver handles tags with a certain name.

      This does not allow validating arguments.

      Parameters:
      name - the tag name
      Returns:
      whether this resolver has a tag with this name
      Since:
      4.10.0