Class: MatchData

Class | MatchData
In: | lib/core/facets/matchdata/match.rb lib/core/facets/matchdata/matchset.rb
Parent: | Object

### Methods

match matchset matchtree

### Public Instance methods

match(index=0)

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

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

CREDIT: Martin DeMello

[Source]

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

matchset()

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

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

CREDIT: Trans

[Source]

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

matchtree(index=0)

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       #=> ["XXaabbccddeeffXX", "bb", "ccdd", "dd", "ee"]
      md.matchtree  #=> [["bb"], ["cc", ["dd"]], "ee"]

CREDIT: Trans

[Source]

    # File lib/core/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

[Validate]