Sha256: a26b4726694ff43c147dc7b425e79d4211e803889899b4ef4ab45dee7e6e00b2

Contents?: true

Size: 1.04 KB

Versions: 9

Compression:

Stored size: 1.04 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

9 entries across 9 versions & 1 rubygems

Version Path
object_attorney-3.2.0 lib/object_attorney/accusation.rb
object_attorney-3.1.2 lib/object_attorney/accusation.rb
object_attorney-3.1.1 lib/object_attorney/accusation.rb
object_attorney-3.1.0 lib/object_attorney/accusation.rb
object_attorney-3.0.7 lib/object_attorney/accusation.rb
object_attorney-3.0.6 lib/object_attorney/accusation.rb
object_attorney-3.0.5 lib/object_attorney/accusation.rb
object_attorney-3.0.4 lib/object_attorney/accusation.rb
object_attorney-3.0.3 lib/object_attorney/accusation.rb