Sha256: 32148db42bde210e69428d171b1ea5364b9c1a7d0518ed38b259204f48be69d3

Contents?: true

Size: 777 Bytes

Versions: 20

Compression:

Stored size: 777 Bytes

Contents

module MotionPrime
  module FilterMixin
    def filter_array(data, find_options = {}, sort_options = nil)
      data = data.select do |entity|
        find_options.all? { |field, value| entity.info[field] == value }
      end if find_options.present?

      data.sort! do |a, b|
        left_part = []
        right_part = []

        sort_options[:sort].each do |(k,v)|
          left = a.send(k)
          right = b.send(k)
          if left.class != right.class
            left = left.to_s
            right = right.to_s
          end
          left, right = right, left if v.to_s == 'desc'
          left_part << left
          right_part << right
        end
        left_part <=> right_part
      end if sort_options.try(:[], :sort).present?
      data
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
motion-prime-0.9.8 motion-prime/models/_filter_mixin.rb
motion-prime-0.9.7 motion-prime/models/_filter_mixin.rb
motion-prime-0.9.6 motion-prime/models/_filter_mixin.rb
motion-prime-0.9.5 motion-prime/models/_filter_mixin.rb
motion-prime-0.9.4 motion-prime/models/_filter_mixin.rb
motion-prime-0.9.3 motion-prime/models/_filter_mixin.rb
motion-prime-0.9.2 motion-prime/models/_filter_mixin.rb
motion-prime-0.9.1 motion-prime/models/_filter_mixin.rb
motion-prime-0.9.0 motion-prime/models/_filter_mixin.rb
motion-prime-0.8.12 motion-prime/models/_filter_mixin.rb
motion-prime-0.8.11 motion-prime/models/_filter_mixin.rb
motion-prime-0.8.10 motion-prime/models/_filter_mixin.rb
motion-prime-0.8.9 motion-prime/models/_filter_mixin.rb
motion-prime-0.8.8 motion-prime/models/_filter_mixin.rb
motion-prime-0.8.7 motion-prime/models/_filter_mixin.rb
motion-prime-0.8.6 motion-prime/models/_filter_mixin.rb
motion-prime-0.8.5 motion-prime/models/_filter_mixin.rb
motion-prime-0.8.4 motion-prime/models/_filter_mixin.rb
motion-prime-0.8.3 motion-prime/models/_filter_mixin.rb
motion-prime-0.8.2 motion-prime/models/_filter_mixin.rb