module FactChecker::ClassMethods
Public Instance Methods
define_fact(arg, &block)
click to toggle source
# File lib/fact_checker/mixin.rb, line 9 def define_fact(arg, &block) fail ArgumentError, 'block not supplied' unless block name, dependencies = arg.is_a?(Hash) ? arg.to_a.flatten(1) : [arg, []] (@fact_checker_facts ||= []) << name.to_sym define_method(name) do dependencies_satisfied = [*dependencies].all?{ |dep_name| send(dep_name).valid? } Result.new(dependencies_satisfied, instance_eval(&block)) end define_method("#{name}?") do send(name).valid? end private name, "#{name}?" if name[0] == '_' end
facts()
click to toggle source
# File lib/fact_checker/mixin.rb, line 28 def facts ancestors.reverse.map{ |klass| klass.instance_eval{ @fact_checker_facts } }.compact.flatten(1) end