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