Class StringMatcher

java.lang.Object
io.toro.martini.util.StringMatcher

public final class StringMatcher extends Object
Based on org.eclipse.ui.internal.misc.StringMatcher.
  • Field Details

    • pattern

      protected String pattern
    • length

      protected int length
    • ignoreWildCards

      protected boolean ignoreWildCards
    • ignoreCase

      protected boolean ignoreCase
    • hasLeadingStar

      protected boolean hasLeadingStar
    • hasTrailingStar

      protected boolean hasTrailingStar
    • segments

      protected String[] segments
    • bound

      protected int bound
    • singleWildCard

      protected static final char singleWildCard
      See Also:
  • Constructor Details

    • StringMatcher

      public StringMatcher(String pattern, boolean ignoreCase, boolean ignoreWildCards)
      StringMatcher constructor takes in a String object that is a simple pattern which may contain '*' for 0 and many characters and '?' for exactly one character. Literal '*' and '?' characters must be escaped in the pattern e.g., "\*" means literal "*", etc. Escaping any other character (including the escape character itself), just results in that character in the pattern. e.g., "\a" means "a" and "\\" means "\" If invoking the StringMatcher with string literals in Java, don't forget escape characters are represented by "\\".
      Parameters:
      pattern - the pattern to match text against
      ignoreCase - if true, case is ignored
      ignoreWildCards - if true, wild cards and their escape sequences are ignored (everything is taken literally).
  • Method Details

    • fuzzy

      public static Predicate<String> fuzzy(String query)
      Parameters:
      query - a raw query
      Returns:
      a fuzzy matcher
    • find

      public StringMatcher.Position find(String text, int start, int end)
      Find the first occurrence of the pattern between startinvalid input: '<'/code )(inclusive) and end(exclusive).
      Parameters:
      text - the String object to search in
      start - the starting index of the search range, inclusive
      end - the ending index of the search range, exclusive
      Returns:
      an StringMatcher.Position object that keeps the starting (inclusive) and ending positions (exclusive) of the first occurrence of the pattern in the specified range of the text; return null if not found or subtext is empty (start==end). A pair of zeros is returned if pattern is empty string Note that for pattern like "*abc*" with leading and trailing stars, position of "abc" is returned. For a pattern like"*??*" in text "abcdf", (1,3) is returned
    • match

      public boolean match(String text)
      match the given text with the pattern
      Parameters:
      text - a String object
      Returns:
      true if matched otherwise false
    • match

      public boolean match(String text, int start, int end)
      Given the starting (inclusive) and the ending (exclusive) positions in the text, determine if the given substring matches with aPattern
      Parameters:
      text - a String object that contains the substring to match
      start - marks the starting position (inclusive) of the substring
      end - marks the ending index (exclusive) of the substring
      Returns:
      true if the specified portion of the text matches the pattern
    • posIn

      protected int posIn(String text, int start, int end)
      Parameters:
      text - a string which contains no wildcard
      start - the starting index in the text for search, inclusive
      end - the stopping point of search, exclusive
      Returns:
      the starting index in the text of the pattern , or -1 if not found
    • regExpPosIn

      protected int regExpPosIn(String text, int start, int end, String p)
      Parameters:
      text - a simple regular expression that may only contain '?'(s)
      start - the starting index in the text for search, inclusive
      end - the stopping point of search, exclusive
      p - a simple regular expression that may contains '?'
      Returns:
      the starting index in the text of the pattern , or -1 if not found
    • regExpRegionMatches

      protected boolean regExpRegionMatches(String text, int tstart, String p, int pstart, int len)
      Parameters:
      text - a String to match
      p - String, String, a simple regular expression that may contain '?'
      pstart - int that indicates the starting index of match, inclusive
      end - int that indicates the ending index of match, exclusive
      ignoreCase - boolean indicating wether code>p is case sensitive
      Returns:
      boolean
    • textPosIn

      protected int textPosIn(String text, int start, int end, String p)
      Parameters:
      text - the string to match
      start - the starting index in the text for search, inclusive
      end - the stopping point of search, exclusive
      p - a pattern string that has no wildcard
      Returns:
      the starting index in the text of the pattern , or -1 if not found