dry-logic Join the chat at https://gitter.im/dryrb/chat

Gem Version
Build Status
Dependency Status
Code Climate
Test Coverage
Inline docs

Predicate logic and rule composition used by:

Synopsis

require 'dry/logic'
require 'dry/logic/predicates'

include Dry::Logic

user_present = Rule::Key.new(:user, Predicates[:key?])
has_min_age = Rule::Key.new(:age, Predicates[:key?]) & Rule::Value.new(:age, Predicates[:gt?].curry(18))

user_rule = user_present & has_min_age

user_rule.(user: { age: 19 })
# #>>

user_rule.(user: { age: 18 })
# #>>

License

See LICENSE file.