Sha256: eda69bf0400b01cb4de839a533a8635c7efcedcd0d5754656a8fe3369c2f82f8

Contents?: true

Size: 1.12 KB

Versions: 28

Compression:

Stored size: 1.12 KB

Contents

class GMatch
  
  attr_accessor :offset
  attr_accessor :match
  
  
end

class Regexp
  def global_match(input_str,overlap_group_no = 0)
    res = []
    
    str=input_str
    
    last_end = 0
    
    loop do
      str = input_str.slice(last_end,input_str.length-last_end)
      if str.nil? or str.empty?
        break
      end
      
      m = self.match(str)
      # puts "find in: #{str}"
      
      if !m.nil?
        # puts m.inspect
        
        
        new_match=GMatch.new()
        new_match.offset = last_end
        new_match.match = m
        
        res.push new_match
        
        if overlap_group_no == 0
          last_end += m.end(overlap_group_no)
        else
          last_end += m.begin(overlap_group_no)
        end
        
      else
        break
      end
      
    end
    
    
    return res
  end
    
  
  # def global_match(str, &proc)
  #     retval = nil
  #     loop do
  #       res = str.sub(self) do |m|
  #         proc.call($~) # pass MatchData obj
  #         ''
  #       end
  #       break retval if res == str
  #       str = res
  #       retval ||= true
  #     end
  #   end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
seqtrimnext-2.0.68 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.66 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.62 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.61 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.60 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.59 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.57 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.56 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.55 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.54 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.52 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.51 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.50 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.49 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.48 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.46 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.45 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.42 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.41 lib/seqtrimnext/utils/global_match.rb
seqtrimnext-2.0.39 lib/seqtrimnext/utils/global_match.rb