docs: def match_function_pattern(self, first, rest=None, least=1, offset=0):
          """Match each char sequentially from current SourceString position
          until the pattern doesnt match and return all maches.
  
          Integer argument least defines and minimum amount of chars that can
          be matched.
  
          This version takes functions instead of string patterns.
          Each function must take one argument, a string, and return a
          value that can be evauluated as True or False.
  
          If rest is defined then first is used only to match the first arg
          and the rest of the chars are matched against rest.
          """
          if not self.has_space(offset=offset):
              return ''
          firstchar = self.string[self.pos + offset]
          if not first(firstchar):
              return ''
  
          output = [firstchar]
          pattern = first if rest is None else rest
  
          for char in self.string[self.pos + offset + 1:]:
              if pattern(char):
                  output.append(char)
              else:
                  break
  
          if len(output) < least:
              return ''
  
          return ''.join(output)