class TodoFilter

Public Class Methods

new(todos) click to toggle source
# File lib/todo_filter.rb, line 4
def initialize(todos)
  @todos = todos.dup
  @todos.reject! { |todo| todo.status == :deleted }
end

Public Instance Methods

execute() click to toggle source
# File lib/todo_filter.rb, line 33
def execute
  TodoList.new(@todos)
end
recent() click to toggle source
# File lib/todo_filter.rb, line 25
def recent
  @todos.reject! do |todo|
    todo.status == :finished &&
      todo.finished_at < (Time.now - 86400)
  end
  self
end
with_hash(search) click to toggle source
# File lib/todo_filter.rb, line 9
def with_hash(search)
  @todos.reject! { |todo| not /^#{search}/.match(todo.id) }
  self
end
with_status(statuses) click to toggle source
# File lib/todo_filter.rb, line 14
def with_status(statuses)
  result = []
  statuses.each do |status|
    todos_with_status(status).each do |todo|
      result << todo
    end
  end
  @todos = result
  self
end

Private Instance Methods

todos_with_status(status) click to toggle source
# File lib/todo_filter.rb, line 39
def todos_with_status(status)
  @todos.reject { |todo| todo.status != status }
end