lib/dry/validation/schema/value.rb in dry-validation-0.1.0 vs lib/dry/validation/schema/value.rb in dry-validation-0.2.0

- old
+ new

@@ -11,16 +11,28 @@ @rules = [] end def each(&block) rule = yield(self).to_ary - Definition::Rule.new([:each, [name, rule]]) + Schema::Rule.new([:each, [name, rule]]) end private def method_missing(meth, *args, &block) - Definition::Rule.new([:val, [name, [:predicate, [meth, args]]]]) + rule = Schema::Rule.new([:val, [name, [:predicate, [meth, args]]]]) + + if block + val_rule = yield + + if val_rule.is_a?(Schema::Rule) + rule & val_rule + else + Schema::Rule.new([:and, [rule.to_ary, [:set, [name, rules.map(&:to_ary)]]]]) + end + else + rule + end end def respond_to_missing?(meth, _include_private = false) true end