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