lib/nanoc/base/contracts_support.rb in nanoc-4.9.4 vs lib/nanoc/base/contracts_support.rb in nanoc-4.9.5
- old
+ new
@@ -29,10 +29,11 @@
Func = Ignorer.instance
RespondTo = Ignorer.instance
Named = Ignorer.instance
IterOf = Ignorer.instance
HashOf = Ignorer.instance
+ AbsolutePathString = Ignorer.instance
def contract(*args); end
end
module EnabledContracts
@@ -68,18 +69,25 @@
def inspect
"#{self.class}(#{@contract})"
end
end
+ class AbsolutePathString < AbstractContract
+ def self.valid?(val)
+ val.is_a?(String) && Pathname.new(val).absolute?
+ end
+ end
+
def contract(*args)
Contract(*args)
end
end
def self.setup_once
@_contracts_support__setup ||= false
return @_contracts_support__should_enable if @_contracts_support__setup
+
@_contracts_support__setup = true
contracts_loadable =
begin
require 'contracts'
@@ -92,9 +100,10 @@
if @_contracts_support__should_enable
# FIXME: ugly
::Contracts.const_set('Named', EnabledContracts::Named)
::Contracts.const_set('IterOf', EnabledContracts::IterOf)
+ ::Contracts.const_set('AbsolutePathString', EnabledContracts::AbsolutePathString)
end
@_contracts_support__should_enable
end