Sha256: 6804f4bab8fa4b6667f92bb3e7644ca9b9a349bc58516d1eef1781c6a09f5dfb

Contents?: true

Size: 796 Bytes

Versions: 1

Compression:

Stored size: 796 Bytes

Contents

require 'seory'
require 'seory/page_condition/block_condition'
require 'seory/page_condition/default_condition'
require 'seory/page_condition/params_condition'
require 'seory/page_condition/path_condition'
require 'seory/page_condition/slug_condition'

module Seory
  module PageCondition
    class SupposionFailed < Seory::Error; end
    extend self

    def [](condition)
      if condition == :default
        DefaultCondition.new
      elsif condition.respond_to?(:match?)
        condition
      else
        suppose(condition)
      end
    end

    private

    def suppose(condition)
      klass = [ParamsCondition, SlugCondition].detect {|klass| klass.supposable?(condition) }
      raise SupposionFailed.new(condition.inspect) unless klass

      klass.new(condition)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
seory-0.0.4 lib/seory/page_condition.rb