# class MatchData

### Public Instance Methods

match(index=0) click to toggle source

Return the primary match string. This is equivalent to +md+.

    md = /123/.match "123456"
    md.match  #=> "123"

CREDIT: Martin DeMello

    # File lib/facets/matchdata/match.rb, line 10
    def match(index=0)
      self[index]
    end

matchset() click to toggle source

Returns [ pre_match, matchtree, post_match ]. (see matchtree)

    md = /(bb)(cc(dd))(ee)/.match "XXaabbccddeeffXX"
    md.to_a      #=> ["bbccddee", "bb", "ccdd", "dd", "ee"]
    md.matchset  #=> ["XXaa", [["bb"], ["cc", ["dd"]], ["ee"]], "ffXX"]

CREDIT: Trans

    # File lib/facets/matchdata/matchset.rb, line 11
    def matchset
       [pre_match, matchtree, post_match]
    end

matchtree(index=0) click to toggle source

An alternate to to_a which returns the matches in order corresponding with the regular expression.

    md = /(bb)(cc(dd))(ee)/.match "XXaabbccddeeffXX"
    md.to_a       #=> ["bbccddee", "bb", "ccdd", "dd", "ee"]
    md.matchtree  #=> [["bb"], ["cc", ["dd"]], ["ee"]]

CREDIT: Trans

    # File lib/facets/matchdata/matchset.rb, line 24
    def matchtree(index=0)
      ret=[]
      b, e=self.begin(index), self.end(index)
      while (index+=1)<=length
        if index==length || (bi=self.begin(index))>=e
          # we are finished, if something is left, then add it
          ret << string[b, e-b] if e>b
          break
        else
          if bi>=b
            ret << string[b, bi-b] if bi>b
            ret << matchtree(index)
            b=self.end(index)
          end
        end
      end
      return ret
    end