class Xpect::Pred
Attributes
default[R]
Public Class Methods
new(pred:, error_msg: nil, default: nil)
click to toggle source
# File lib/xpect/pred.rb, line 7 def initialize(pred:, error_msg: nil, default: nil) unless pred.is_a?(Proc) raise "pred must be a Proc" end @pred = pred @error_msg = error_msg @default = default end
Public Instance Methods
conform!(value:, path: nil)
click to toggle source
# File lib/xpect/pred.rb, line 17 def conform!(value:, path: nil) return @default if @default && value.nil? if value.nil? raise FailedSpec, "the value at path '#{ path }' is missing" end unless @pred.call(value) error_msg = if @error_msg "'#{ value }' does not meet spec for '#{ path }': '#{ @error_msg }'" else "'#{ value }' does not meet spec for '#{ path }'" end raise FailedSpec, error_msg end value end