middleman/middleman-core/lib/middleman-core/contracts.rb
2016-01-12 10:38:53 -08:00

24 lines
502 B
Ruby

require 'contracts'
require 'hamster'
module Contracts
class IsA
def self.[](val)
@lookup ||= {}
@lookup[val] ||= new(val)
end
def initialize(val)
@val = val
end
def valid?(val)
val.is_a? @val.constantize
end
end
VectorOf = ::Contracts::CollectionOf::Factory.new(::Hamster::Vector)
ResourceList = ::Contracts::ArrayOf[IsA['Middleman::Sitemap::Resource']]
PATH_MATCHER = Or[String, RespondTo[:match], RespondTo[:call], RespondTo[:to_s]]
end