middleman/middleman-core/lib/middleman-core/contracts.rb

113 lines
1.5 KiB
Ruby
Raw Normal View History

if ENV['CONTRACTS'] != 'false'
require 'contracts'
require 'hamster'
2014-07-03 04:04:34 +02:00
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']]
end
else
module Contracts
def self.included(base)
base.extend self
end
# rubocop:disable MethodName
def Contract(*)
end
class Callable
def self.[](*)
end
end
class Bool
end
class Num
end
class Pos
end
class Neg
end
class Any
end
class None
end
class Or < Callable
end
class Xor < Callable
end
class And < Callable
end
class Not < Callable
end
class RespondTo < Callable
end
class Send < Callable
2014-07-10 21:35:47 +02:00
end
2014-07-14 22:19:34 +02:00
class Exactly < Callable
2014-07-14 22:19:34 +02:00
end
2014-06-29 00:07:43 +02:00
class ArrayOf < Callable
end
class ResourceList < Callable
end
class Args < Callable
end
class HashOf < Callable
end
class Bool
end
class Maybe < Callable
end
class IsA < Callable
end
class SetOf < Callable
end
class Frozen < Callable
end
class VectorOf < Callable
2015-05-04 02:11:49 +02:00
end
2014-07-03 04:04:34 +02:00
end
end
2014-07-10 21:35:47 +02:00
module Contracts
2014-07-10 21:35:47 +02:00
PATH_MATCHER = Or[String, RespondTo[:match], RespondTo[:call], RespondTo[:to_s]]
end