Sha256: a8d79353540e196f0763799fe6d6cd39597d391bb9e411801f5e8cdfd1cf5df4

Contents?: true

Size: 1.15 KB

Versions: 8

Compression:

Stored size: 1.15 KB

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 self.add!(task)
      list = TaskList.new(Config.todo_path)
      list.add!(task)
    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 add!(task)
      push 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!
      Redpomo.ui.info "Pulled #{issue_tasks.count} issues."
    end

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

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
redpomo-0.0.13 lib/redpomo/task_list.rb
redpomo-0.0.12 lib/redpomo/task_list.rb
redpomo-0.0.11 lib/redpomo/task_list.rb
redpomo-0.0.10 lib/redpomo/task_list.rb
redpomo-0.0.9 lib/redpomo/task_list.rb
redpomo-0.0.8 lib/redpomo/task_list.rb
redpomo-0.0.7 lib/redpomo/task_list.rb
redpomo-0.0.6 lib/redpomo/task_list.rb