Sha256: b26af7509e59fdc43741f6473e8a40ede249020c99b94918d075a32357d7918a
Contents?: true
Size: 784 Bytes
Versions: 4
Compression:
Stored size: 784 Bytes
Contents
require "trailblazer/operation/policy" require "uber/option" class Trailblazer::Operation module Policy module Guard def self.import!(operation, import, user_proc, options={}, insert_options={}) Policy.add!(operation, import, options, insert_options) { Guard.build(user_proc) } end def self.build(callable) value = Uber::Option[callable] # call'ing the Uber::Option will run either proc or block. # this gets wrapped in a Operation::Result object. ->(options) { Result.new( !!value.(options), {} ) } end end # Guard def self.Guard(proc, name: :default, &block) options = { name: name, path: "policy.#{name}.eval", } [Guard, [proc, options], block] end end end
Version data entries
4 entries across 4 versions & 1 rubygems