parse-matches.d.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { Match } from '../match/match';
  2. import { HashtagService } from './hashtag-utils';
  3. import { MentionService } from './mention-utils';
  4. import { AnchorTagBuilder } from '../anchor-tag-builder';
  5. import type { StripPrefixConfigObj } from '../autolinker';
  6. /**
  7. * Parses URL, email, twitter, mention, and hashtag matches from the given
  8. * `text`.
  9. */
  10. export declare function parseMatches(text: string, args: ParseMatchesArgs): Match[];
  11. export interface ParseMatchesArgs {
  12. tagBuilder: AnchorTagBuilder;
  13. stripPrefix: Required<StripPrefixConfigObj>;
  14. stripTrailingSlash: boolean;
  15. decodePercentEncoding: boolean;
  16. hashtagServiceName: HashtagService;
  17. mentionServiceName: MentionService;
  18. }
  19. /**
  20. * Determines if a match found has unmatched closing parenthesis,
  21. * square brackets or curly brackets. If so, these unbalanced symbol(s) will be
  22. * removed from the URL match itself.
  23. *
  24. * A match may have an extra closing parenthesis/square brackets/curly brackets
  25. * at the end of the match because these are valid URL path characters. For
  26. * example, "wikipedia.com/something_(disambiguation)" should be auto-linked.
  27. *
  28. * However, an extra parenthesis *will* be included when the URL itself is
  29. * wrapped in parenthesis, such as in the case of:
  30. *
  31. * "(wikipedia.com/something_(disambiguation))"
  32. *
  33. * In this case, the last closing parenthesis should *not* be part of the
  34. * URL itself, and this method will exclude it from the returned URL.
  35. *
  36. * For square brackets in URLs such as in PHP arrays, the same behavior as
  37. * parenthesis discussed above should happen:
  38. *
  39. * "[http://www.example.com/foo.php?bar[]=1&bar[]=2&bar[]=3]"
  40. *
  41. * The very last closing square bracket should not be part of the URL itself,
  42. * and therefore this method will remove it.
  43. *
  44. * @param matchedText The full matched URL/email/hashtag/etc. from the state
  45. * machine parser.
  46. * @return The updated matched text with extraneous suffix characters removed.
  47. */
  48. export declare function excludeUnbalancedTrailingBracesAndPunctuation(matchedText: string): string;