2016-01-12 19:35:12 +01:00
|
|
|
require 'contracts'
|
|
|
|
require 'hamster'
|
2014-07-03 04:04:34 +02:00
|
|
|
|
2016-01-12 19:35:12 +01:00
|
|
|
module Contracts
|
|
|
|
class IsA
|
|
|
|
def self.[](val)
|
|
|
|
@lookup ||= {}
|
|
|
|
@lookup[val] ||= new(val)
|
2014-07-10 21:35:47 +02:00
|
|
|
end
|
2014-07-14 22:19:34 +02:00
|
|
|
|
2016-01-12 19:35:12 +01:00
|
|
|
def initialize(val)
|
|
|
|
@val = val
|
2014-07-14 22:19:34 +02:00
|
|
|
end
|
2014-06-29 00:07:43 +02:00
|
|
|
|
2016-01-12 19:35:12 +01:00
|
|
|
def valid?(val)
|
|
|
|
val.is_a? @val.constantize
|
2015-05-04 02:11:49 +02:00
|
|
|
end
|
2014-07-03 04:04:34 +02:00
|
|
|
end
|
2014-07-10 21:35:47 +02:00
|
|
|
|
2016-01-12 19:35:12 +01:00
|
|
|
VectorOf = ::Contracts::CollectionOf::Factory.new(::Hamster::Vector)
|
|
|
|
ResourceList = ::Contracts::ArrayOf[IsA['Middleman::Sitemap::Resource']]
|
2014-07-10 21:35:47 +02:00
|
|
|
PATH_MATCHER = Or[String, RespondTo[:match], RespondTo[:call], RespondTo[:to_s]]
|
|
|
|
end
|