Class LinkUtilities

java.lang.Object
com.ibm.icu.util.LinkUtilities

public class LinkUtilities extends Object
Utility class for assisting with detecting links (URLs or emails) in text, and formatting them for display, implementing the algorithms in https://www.unicode.org/reports/tr58/ to handle Unicode characters properly. It supplies lower level APIs for use in augmenting existing scanners and formatters.
  • Constructor Details

    • LinkUtilities

      public LinkUtilities()
  • Method Details

    • scanPathQueryFragment

      public static int scanPathQueryFragment(CharSequence source, int start, int limit)
      Lower level utility for finding the end of a PathQueryFragment (PQF) in text. It assumes that the start position is immediately after an identified domain name. The purpose of this routine is for fitting into algorithms that are already in use, just taking over for the PQF scanning. For more information, see https://www.unicode.org/reports/tr58/.
      Parameters:
      source - the text to be scanned
      start - the position in the text to be scanned from. It should be immediately after a domain name.
      Returns:
      the end position of the PQF, or the start value if there is none.
    • scanBackEmailLocalPart

      public static int scanBackEmailLocalPart(CharSequence source, int start, int limit)
      Lower level utility for finding the start of an email address in text. It assumes that the limit position is immediately before an '@' + identified domain name. The purpose of this routine is for fitting into algorithms that are already in use, just handling for the email `local-part`. It does not scan back through "mailto:".
      Parameters:
      source - the text to be scanned
      start - the position that is the earliest that should be considered in a backwards scan
      limit - the position to start scanning backwards from — should be just after @ and just before the domain_name.
      Returns:
      the start of the email locale part, or limit if no email local part is found
    • escapePathQueryFragment

      public static String escapePathQueryFragment(String source, LinkUtilities.Extent extent)
      Escapes a URL according to the Extent parameter
      Parameters:
      source - In the source, it is assumed that ASCII syntax characters requiring escaping have already been escaped. For example, a literal / in a path segment would already be percent-escaped. For more information, see https://www.unicode.org/reports/tr58/.
      extent - either MINIMAL or MAXIMAL
      Returns:
      an escaped string according to the extent parameter.
    • getSafeCharacters

      @Deprecated public static UnicodeSet getSafeCharacters()
      Deprecated.
      Returns a frozen set of Unicode characters that are guaranteed to never be part of a URL or email address. This allows implementations to make various optimizations because URLs and email addresses can never span these characters. For example, a span of characters between safe characters that doesn't have a sequence of domain-character + . + domain-character can be skipped in processing.
      Status:
      Internal. This API is ICU internal only.
    • getDomainCharacters

      @Deprecated public static UnicodeSet getDomainCharacters()
      Deprecated.
      Returns a frozen set of Unicode characters that are possible characters in a domain name (pre-mapping) This allows implementations to make various optimizations because URLs and email addresses must contain a sequence of domain-character + . + domain-character. It is the same as the set of IDNA Mapping Table character with values ≠ disallowed
      Status:
      Internal. This API is ICU internal only.