Module: Risky::CronList::ClassMethods

Defined in:
lib/risky/cron_list.rb

Overview

Provides methods which allow a Risky model to act as a chronological list of references to some other model.

Instance Method Summary collapse

Instance Method Details

#item_class(klass = nil) ⇒ Object



6
7
8
9
10
11
12
# File 'lib/risky/cron_list.rb', line 6

def item_class(klass = nil)
  if klass
    @item_class = klass
  else
    @item_class or raise "no item class defined for #{self}"
  end
end

#limit(limit = nil) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/risky/cron_list.rb', line 14

def limit(limit = nil)
  if limit
    @limit = limit
  else
    @limit
  end
end

#merge(versions) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/risky/cron_list.rb', line 22

def merge(versions)
  # Order versions chronologically
  p = super(versions)
  items = sort_items(
    versions.inject([]) do |list, version|
      list |= version.items.reverse
    end.reverse
  )

  p.trim
  p
end

#sort_items(items) ⇒ Object

Sorts a list of items into the appropriate order.



36
37
38
# File 'lib/risky/cron_list.rb', line 36

def sort_items(items)
  items.sort { |a,b| b <=> a }
end