Sha256: 2b25384dbfbf15620d6e79d269804b362d342d3c81327d660030783046e51518
Contents?: true
Size: 867 Bytes
Versions: 105
Compression:
Stored size: 867 Bytes
Contents
module Utils module Patterns class Pattern def initialize(opts = {}) @cset = opts[:cset] @icase = opts[:icase] @pattern = opts[:pattern] or raise ArgumentError, "pattern option required" @pattern = @pattern.gsub(/[^#{@cset}]/, '') if @cset end def method_missing(*a, &b) @matcher.__send__(*a, &b) end end class FuzzyPattern < Pattern def initialize(opts ={}) super r = @pattern.split(//).map { |x| "(#{Regexp.quote(x)})" } * '.*?' @matcher = Regexp.new( "\\A(?:.*/.*?#{r}|.*#{r})", @icase ? Regexp::IGNORECASE : 0) end end class RegexpPattern < Pattern def initialize(opts = {}) super @matcher = Regexp.new(@pattern, @icase ? Regexp::IGNORECASE : 0) end end end end
Version data entries
105 entries across 105 versions & 1 rubygems