Sha256: f43acf50e274d9a9b777638c308fb5e77f58bd233acd23bec6d82a35905c9ac2

Contents?: true

Size: 1.39 KB

Versions: 10

Compression:

Stored size: 1.39 KB

Contents

require 'transcoding_machine/media_format'
require 'transcoding_machine/server/media_file_attributes'

module TranscodingMachine
  class MediaFormatCriterium
    TYPE_OPERATORS = {
      :boolean => [:equals, :not_equals],
      :string  => [:equals, :not_equals],
      :integer => [:equals, :not_equals, :lt, :lte, :gt, :gte],
      :float   => [:equals, :not_equals, :lt, :lte, :gt, :gte],
      :codec   => [:equals, :not_equals]
    }

    attr_reader :key, :operator, :value
    def initialize(args)
      @key = args[:key].to_sym
      
      @operator = (args[:operator] || :equals).to_sym
      
      @value = MediaFormat.type_cast_attribute_value(@key, args[:value])
      
      unless MediaFormatCriterium::TYPE_OPERATORS[value_type].include?(@operator)
        raise "invalid operator (#{@operator}) for MediaFormatCriterium with key #{@key}"
      end
    end
    
    def value_type
      Server::MediaFileAttributes::FIELD_TYPES[@key]
    end
    
    def matches(media_file_attributes)
      attr_value = MediaFormat.type_cast_attribute_value(@key, media_file_attributes[@key])
      case @operator
      when :equals
        attr_value == @value
      when :lt
        attr_value < @value
      when :gt
        attr_value > @value
      when :lte
        attr_value <= @value
      when :gte
        attr_value >= @value
      when :not_equals
        attr_value != @value
      end
    end
    
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
staugaard-transcoding_machine-0.0.2 lib/transcoding_machine/media_format_criterium.rb
staugaard-transcoding_machine-0.1.0 lib/transcoding_machine/media_format_criterium.rb
staugaard-transcoding_machine-0.1.1 lib/transcoding_machine/media_format_criterium.rb
staugaard-transcoding_machine-0.1.2 lib/transcoding_machine/media_format_criterium.rb
staugaard-transcoding_machine-0.1.3 lib/transcoding_machine/media_format_criterium.rb
staugaard-transcoding_machine-0.1.4 lib/transcoding_machine/media_format_criterium.rb
staugaard-transcoding_machine-0.1.5 lib/transcoding_machine/media_format_criterium.rb
staugaard-transcoding_machine-0.2.2 lib/transcoding_machine/media_format_criterium.rb
staugaard-transcoding_machine-0.2.3 lib/transcoding_machine/media_format_criterium.rb
staugaard-transcoding_machine-0.2.4 lib/transcoding_machine/media_format_criterium.rb