lib/dry/validation/schema_compiler.rb in dry-validation-0.8.0 vs lib/dry/validation/schema_compiler.rb in dry-validation-0.9.0

- old
+ new

@@ -27,11 +27,30 @@ end end end class SchemaCompiler < Logic::RuleCompiler + attr_reader :schema, :options + + def initialize(*args, options) + super(*args) + @options = options + @schema = predicates.schema + end + + def visit_predicate(node) + super.evaluate_args!(schema) + end + def visit_schema(klass) - klass.new + opt_keys = klass.config.options.keys + opt_vals = options.values_at(*opt_keys).compact + + if opt_vals.empty? + klass.new + else + klass.new(klass.config.rules, Hash[opt_keys.zip(opt_vals)]) + end end def visit_guard(node) deps, other = node Guard.new(visit(other), deps)