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