Sha256: bf4fb91df363fb0e3225101e8afd6e08e5187c5af5a42bd89d290f75693a2143
Contents?: true
Size: 1.01 KB
Versions: 1
Compression:
Stored size: 1.01 KB
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 attr_reader :matcher def method_missing(*a, &b) @matcher.__send__(*a, &b) rescue ArgumentError => e raise e unless e.message.include?('invalid byte sequence in UTF-8') end end class FuzzyPattern < Pattern def initialize(opts ={}) super r = @pattern.split(//).grep(/[0-9a-z]/).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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
utils-0.9.0 | lib/utils/patterns.rb |