Sha256: 7ea1978ae1e30deff4012a0a1278da176820075899009366a33ed9f40c79a2bb

Contents?: true

Size: 785 Bytes

Versions: 7

Compression:

Stored size: 785 Bytes

Contents

module QueryFilter::Rules
  class SplitterRange < Scope
    class RangeParam
      SPLITTER = /[;-]/

      def initialize(value)
        @value = value
      end

      def valid?
        @value.present? && items.size == 2
      end

      def range
        ::Range.new(*items)
      end

      def items
        @items ||= @value.split(SPLITTER).map(&:strip).map(&:to_i)
      end
    end

    def name
      'splitter_range'.freeze
    end

    def valid?(values)
      period = build_period_from_params(values)
      !period.nil?
    end

    def normalize_params(values)
      build_period_from_params(values)
    end

    protected

    def build_period_from_params(values)
      param = RangeParam.new(values[key])
      return unless param.valid?
      param
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
query_filter-0.1.8 lib/query_filter/rules/splitter_range.rb
query_filter-0.1.7 lib/query_filter/rules/splitter_range.rb
query_filter-0.1.6 lib/query_filter/rules/splitter_range.rb
query_filter-0.1.5 lib/query_filter/rules/splitter_range.rb
query_filter-0.1.4 lib/query_filter/rules/splitter_range.rb
query_filter-0.1.3 lib/query_filter/rules/splitter_range.rb
query_filter-0.1.2 lib/query_filter/rules/splitter_range.rb