Sha256: 20f05ee2dddaf4b0cb083474a91cf678e550f7e452183b905fb5498f616b9eb7

Contents?: true

Size: 1.26 KB

Versions: 4

Compression:

Stored size: 1.26 KB

Contents

module RegexpExamples
  class BaseRepeater
    attr_reader :group
    def initialize(group)
      @group = group
    end

    def result(min_repeats, max_repeats)
      group_results = @group.result[0 .. MaxGroupResults-1]
      results = []
      min_repeats.upto(max_repeats) do |repeats|
        group_results.each do |group_result|
          results << group_result * repeats
        end
      end
      results.uniq
    end
  end

  class OneTimeRepeater < BaseRepeater
    def initialize(group)
      super
    end

    def result
      super(1, 1)
    end
  end

  class StarRepeater < BaseRepeater
    def initialize(group)
      super
    end

    def result
      super(0, TIMES)
    end
  end

  class PlusRepeater < BaseRepeater
    def initialize(group)
      super
    end

    def result
      super(1, TIMES)
    end
  end

  class QuestionMarkRepeater < BaseRepeater
    def initialize(group)
      super
    end

    def result
      super(0, 1)
    end
  end

  class RangeRepeater < BaseRepeater
    def initialize(group, min, has_comma, max)
      super(group)
      @min = min || 0
      if max
        @max = max
      elsif has_comma
        @max = min + TIMES
      else
        @max = min
      end
    end

    def result
      super(@min, @max)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
regexp-examples-0.3.1 lib/regexp-examples/repeaters.rb
regexp-examples-0.3.0 lib/regexp-examples/repeaters.rb
regexp-examples-0.2.4 lib/regexp-examples/repeaters.rb
regexp-examples-0.2.3 lib/regexp-examples/repeaters.rb