Sha256: d08f60e6a08e312a4792983c843b99e93ca91ca1c148ff030cb9e069ebbaf572

Contents?: true

Size: 959 Bytes

Versions: 5

Compression:

Stored size: 959 Bytes

Contents

require 'todo-txt/list'
require 'redpomo/task'

module Redpomo
  class TaskList < Array

    def self.find(task_number)
      list = TaskList.new(Config.todo_path)
      list.find(task_number)
    end

    def self.pull_from_trackers!
      list = TaskList.new(Config.todo_path)
      list.pull_from_trackers!
    end

    def initialize(path)
      @path = path
      File.read(path).split("\n").each do |line|
        push Task.new(self, line)
      end
    end

    def find(task_number)
      slice(task_number.to_i - 1)
    end

    def remove!(task)
      delete(task)
      write!
    end

    def pull_from_trackers!
      issue_tasks = Tracker.all.map(&:issues).flatten.map(&:to_task)
      delete_if do |task|
        task.tracker.present?
      end
      self << issue_tasks
      self.flatten!
      write!
    end

    def write!
      File.open(@path, 'w') do |file|
        file.write map(&:orig).join("\n") + "\n"
      end
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
redpomo-0.0.5 lib/redpomo/task_list.rb
redpomo-0.0.4 lib/redpomo/task_list.rb
redpomo-0.0.3 lib/redpomo/task_list.rb
redpomo-0.0.2 lib/redpomo/task_list.rb
redpomo-0.0.1 lib/redpomo/task_list.rb