module Endymion::Memory::Helper
Public Class Methods
apply_filters(filters, records)
click to toggle source
# File lib/endymion/memory/helper.rb, line 4 def self.apply_filters(filters, records) records.select do |record| filters.all? do |filter| value = record[filter.field] case filter.operator when '<'; value && value < filter.value when '<='; value && value <= filter.value when '>'; value && value > filter.value when '>='; value && value >= filter.value when '='; value == filter.value when '!='; value != filter.value when 'contains?'; filter.value.include?(value) end end end end
apply_limit(limit, records)
click to toggle source
# File lib/endymion/memory/helper.rb, line 45 def self.apply_limit(limit, records) return records unless limit records.take(limit) end
apply_offset(offset, records)
click to toggle source
# File lib/endymion/memory/helper.rb, line 40 def self.apply_offset(offset, records) return records unless offset records.drop offset end
apply_sorts(sorts, records)
click to toggle source
# File lib/endymion/memory/helper.rb, line 21 def self.apply_sorts(sorts, records) records.sort { |record1, record2| compare_records record1, record2, sorts } end
compare_record(record1, record2, sort)
click to toggle source
# File lib/endymion/memory/helper.rb, line 33 def self.compare_record(record1, record2, sort) field1, field2 = record1[sort.field], record2[sort.field] field1 == field2 ? nil : field1 < field2 && sort.ascending? ? -1 : field1 > field2 && sort.descending? ? -1 : 1 end
compare_records(record1, record2, sorts)
click to toggle source
# File lib/endymion/memory/helper.rb, line 25 def self.compare_records(record1, record2, sorts) sorts.each do |sort| result = compare_record record1, record2, sort return result if result end 0 end