class Milkmaid

Public Class Methods

new() click to toggle source
# File lib/milkmaid.rb, line 4
def initialize
  @rtm = RTM::RTM.new(RTM::Endpoint.new('31308536ffed80061df846c3a4564a27', 'c1476318e3483441'))
  @auth = @rtm.auth
  begin
    @config_file = File.join(ENV['HOME'], '.milkmaid')
    @config = YAML.load_file(@config_file)
    @auth.frob = @config[:frob]
    @rtm.token = @config[:token]
    @timeline = @rtm.timelines.create['timeline'] unless @config[:token].nil?
  rescue Errno::ENOENT
    @config = {}
  end
end

Private Class Methods

last_task(taskseries) click to toggle source
# File lib/milkmaid.rb, line 115
def self.last_task(taskseries)
  taskseries['task'].as_array.last
end

Public Instance Methods

add_task(name) click to toggle source
# File lib/milkmaid.rb, line 87
def add_task(name)
  @rtm.tasks.add :name=>name, :parse=>'1', :timeline=>@timeline
end
auth_finish() click to toggle source
# File lib/milkmaid.rb, line 98
def auth_finish
  @config[:token] = @auth.get_token
  save_config
end
auth_start() click to toggle source
# File lib/milkmaid.rb, line 91
def auth_start
  url = @auth.url
  @config[:frob] = @auth.frob
  save_config
  url
end
clean() click to toggle source
# File lib/milkmaid.rb, line 103
def clean
  @config.delete_if { |k| k != :token }
  save_config
end
complete_task(tasknum) click to toggle source
# File lib/milkmaid.rb, line 72
def complete_task(tasknum)
  check_task_ids tasknum
  call_rtm_api :complete, tasknum
end
delete_task(tasknum) click to toggle source
# File lib/milkmaid.rb, line 82
def delete_task(tasknum)
  check_task_ids tasknum
  call_rtm_api :delete, tasknum
end
incomplete_tasks(list=nil) click to toggle source
# File lib/milkmaid.rb, line 26
def incomplete_tasks(list=nil)
  params = {}
  unless list.nil?
    if @config[:lists]
      list = @config[:lists][list-1]
      params[:list_id] = list unless list.nil?
    end
    raise ListNotFound if params.empty?
  end
  entries = []
  list_id = nil
  @rtm.tasks.get_list(params)['tasks']['list'].
    as_array.each do |items|
    list_id = items['id']
    if !items['taskseries'].nil?
      items['taskseries'].as_array.each do |taskseries|
        taskseries['list_id'] = list_id
        entries << taskseries if Milkmaid::last_task(taskseries)['completed'].empty?
      end
    end
  end
  entries.sort! do |a, b|
    taska = Milkmaid::last_task a
    taskb = Milkmaid::last_task b
    result = taska['priority'] <=> taskb['priority']
    if result == 0
      if taska['due'].empty?
        1
      elsif taskb['due'].empty?
        -1
      else
        Time.parse(taska['due']) <=> Time.parse(taskb['due'])
      end
    else
      result
    end
  end
  @config[:tasks] = entries.map do |taskseries|
    {:list_id => taskseries['list_id'], 
    :taskseries_id => taskseries['id'],
    :task_id => Milkmaid::last_task(taskseries)['id']}
  end
  save_config
  entries
end
lists() click to toggle source
# File lib/milkmaid.rb, line 18
def lists
  entries = @rtm.lists.get_list['lists']['list'].as_array
  list_ids = entries.map { |list| list['id'] }
  @config[:lists] = list_ids
  save_config
  entries
end
postpone_task(tasknum) click to toggle source
# File lib/milkmaid.rb, line 77
def postpone_task(tasknum)
  check_task_ids tasknum
  call_rtm_api :postpone, tasknum
end

Private Instance Methods

call_rtm_api(method, tasknum) click to toggle source
# File lib/milkmaid.rb, line 127
def call_rtm_api(method, tasknum)
  @rtm.tasks.send method, @config[:tasks][tasknum-1].merge(:timeline=>@timeline)
end
check_task_ids(tasknum) click to toggle source
# File lib/milkmaid.rb, line 123
def check_task_ids(tasknum)
  raise TaskNotFound if @config[:tasks].nil? || @config[:tasks][tasknum-1].nil? 
end
save_config() click to toggle source
# File lib/milkmaid.rb, line 119
def save_config
  File.open(@config_file, 'w') { |f| YAML.dump(@config, f) }
end