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

Version Path
utils-0.2.4 lib/utils/patterns.rb
utils-0.2.3 lib/utils/patterns.rb
utils-0.2.2 lib/utils/patterns.rb
utils-0.2.1 lib/utils/patterns.rb
utils-0.2.0 lib/utils/patterns.rb
utils-0.1.1 lib/utils/patterns.rb
utils-0.1.0 lib/utils/patterns.rb
utils-0.0.100 lib/utils/patterns.rb
utils-0.0.99 lib/utils/patterns.rb
utils-0.0.98 lib/utils/patterns.rb
utils-0.0.97 lib/utils/patterns.rb
utils-0.0.96 lib/utils/patterns.rb
utils-0.0.95 lib/utils/patterns.rb
utils-0.0.94 lib/utils/patterns.rb
utils-0.0.93 lib/utils/patterns.rb
utils-0.0.92 lib/utils/patterns.rb
utils-0.0.91 lib/utils/patterns.rb
utils-0.0.90 lib/utils/patterns.rb
utils-0.0.89 lib/utils/patterns.rb
utils-0.0.88 lib/utils/patterns.rb