Sha256: e1a3c3a2284a19b8865a5774f3d451a11977c40098d843c4e2eab104227e90b4

Contents?: true

Size: 1.05 KB

Versions: 2

Compression:

Stored size: 1.05 KB

Contents

module ObjectAttorney

  class Accusation

    def initialize(validation, attorney, defendant)
      @attorney = attorney
      @defendant = defendant
      @validation = validation
    end

    def sustained?
      @validation.attorney = @attorney if @validation.respond_to?(:attorney=)

      # expected to be an ActiveModel::Validations::<Class> instance
      @validation.validate(@defendant)
    end

    def founded
      return true if options[:if].nil? && options[:unless].nil?

      if_condition_true || unless_condition_true
    end

    protected ######################## PROTECTED ###############################

    def if_condition_true
      return nil if options[:if].nil?

      Helpers.call_proc_or_method(@attorney, options[:if], @defendant)
    end

    def unless_condition_true
      return nil if options[:unless].nil?

      !Helpers.call_proc_or_method(@attorney, options[:unless], @defendant)
    end

    private ########################### PRIVATE ################################

    def options
      @validation.options
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
object_attorney-3.0.2 lib/object_attorney/accusation.rb
object_attorney-3.0.0 lib/object_attorney/accusation.rb