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)