class Todo::Data::List
Attributes
max_id[RW]
Public Class Methods
new(*)
click to toggle source
Calls superclass method
# File lib/todo/data/list.rb, line 23 def initialize(*) super @max_id = items.map(&:id).map(&:to_i).max || 0 end
parse(lines)
click to toggle source
# File lib/todo/data/list.rb, line 11 def parse(lines) List.new(lines.map { |line| Item.new(Parser.new(line).parse) }) end
Public Instance Methods
find(data)
click to toggle source
# File lib/todo/data/list.rb, line 44 def find(data) select(data).tap { |list| validate(data, list) }.first end
ids()
click to toggle source
# File lib/todo/data/list.rb, line 48 def ids items.map(&:id).compact end
next_id()
click to toggle source
# File lib/todo/data/list.rb, line 52 def next_id @max_id += 1 end
reject(&block)
click to toggle source
# File lib/todo/data/list.rb, line 36 def reject(&block) self.class.new(items.reject(&block)) end
select(data)
click to toggle source
# File lib/todo/data/list.rb, line 32 def select(data) self.class.new(items.select { |item| item.matches?(data) }) end
sort_by(&block)
click to toggle source
# File lib/todo/data/list.rb, line 40 def sort_by(&block) self.class.new(items.sort_by(&block)) end
toggle(data)
click to toggle source
# File lib/todo/data/list.rb, line 28 def toggle(data) find(data).toggle end
Private Instance Methods
validate(data, list)
click to toggle source
# File lib/todo/data/list.rb, line 58 def validate(data, list) raise Error.new(MSGS[:item_not_found] % to_pairs(data).join(' ')) if list.size == 0 raise Error.new(MSGS[:multiple_items] % to_pairs(data).join(' ')) if list.size > 1 end