Sha256: ccb1de54e1e49c2e73d4e04ad5b2f542958a57913f64548febc4b794f58bb7a8

Contents?: true

Size: 1.89 KB

Versions: 1

Compression:

Stored size: 1.89 KB

Contents

require 'active_support/core_ext/module/delegation'
require 'todo-txt/task'
require 'redpomo/tracker'

module Todo
  class Task

    def self.projects_regex
       /(?:\s+|^)\+[\w\-]+/
    end

  end
end

module Redpomo
  class Task

    delegate :orig, to: :@task
    delegate :priority, to: :@task
    delegate :date, to: :@task

    ISSUES_REGEXP = /(?:\s+|^)#[0-9]+/

    def initialize(list, text)
      @task = Todo::Task.new(text)
      @list = list
    end

    def context
      @task.contexts.map do |context|
        context.gsub /^@/, ''
      end.first
    end

    def project
      @task.projects.map do |context|
        context.gsub /^\+/, ''
      end.first
    end

    def issue
      orig.scan(ISSUES_REGEXP).map(&:strip).map do |issue|
        issue.gsub(/^#/, '').to_i
      end.first
    end

    def text
      @task.text.gsub(ISSUES_REGEXP, '').strip
    end

    def close_issue!(message = nil)
      tracker.close_issue!(issue, message)
    end

    def done!
      @list.remove!(self)
    end

    def add!
      TaskList.add!(self)
    end

    def open_in_browser!
      require 'launchy'
      Launchy.open(url)
    end

    def start_pomodoro!
      require 'applescript'
      command = 'tell application "Pomodoro" to start "'
      command << orig
      command << '"'
      AppleScript.execute(command)
    end

    def url
      return nil unless tracker.present?
      if issue.present?
        "#{tracker.base_url}/issues/#{issue}"
      elsif project.present?
        "#{tracker.base_url}/projects/#{project}"
      else
        "#{tracker.base_url}/projects/#{tracker.default_project}"
      end
    end

    def tracker
      Tracker.find(context)
    end

    def to_issue
      issue = Issue.new(tracker)
      issue.subject = text
      issue.project_id = project
      issue.due_date = date
      issue.priority_id = tracker.issue_priority_id(priority)
      issue
    end

  end
end


Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
redpomo-0.0.6 lib/redpomo/task.rb