Module: ImsgHandler

Defined in:
lib/imsg.rb

Constant Summary collapse

CHAT_DISPLAY_LIMIT =
15

Class Method Summary collapse

Class Method Details

.ask_for_buddy_with_msg(msg) ⇒ Object

Shows the chat list along with their participants



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/imsg.rb', line 35

def self.ask_for_buddy_with_msg msg
	chats = sort_by_updated(Chat.fetch_all)
	puts "\nTo whom would you like to send your message?"
	puts "(You can choose a number or type a buddy name/email)\n\n"
	puts display_chats(chats) + "\e[1;35m"
	response = gets.chomp
	chat = is_i?(response) ? chats[response.to_i - 1] : nil
	response = chat ? chat.chat_number.to_s : response
	
	send_message(msg, response, chat)
end

.display_chats(chats) ⇒ Object



8
9
10
# File 'lib/imsg.rb', line 8

def self.display_chats(chats)
	chats.first(CHAT_DISPLAY_LIMIT).map.with_index{ |x, i| "\e[1;32m#{i + 1} \e[1;31m- \e[1;36m#{x.to_s}\e[0m"}.join("\n")
end

.is_i?(str) ⇒ Boolean

Check if a String is a integer number

Returns:

  • (Boolean)


17
18
19
# File 'lib/imsg.rb', line 17

def self.is_i?(str)
	str =~ /\A\d+\z/
end

.send_message(message, buddy, chat) ⇒ Object

Calls Applescript in order to trigger an iMessage message to a buddy The buddy parameter accepts a String with either a chat number or a Buddy name



23
24
25
26
27
28
29
30
31
32
# File 'lib/imsg.rb', line 23

def self.send_message message, buddy, chat
	script_path = File.expand_path('../applescript', __FILE__)
	if (chat)
		puts "\e[0mSending \e[1;32m\"#{message}\"\e[0m to chat with \e[1;36m\"#{chat.to_s}\"\e[0m"
		`osascript #{script_path}/sendToChat.scpt \"#{message}\" \"#{buddy}\"`
	else
		puts "\e[0mSending \e[1;32m\"#{message}\"\e[0mm to buddy \e[1;36m\"#{buddy}\"\e[0m"
		`osascript #{script_path}/sendToBuddy.scpt \"#{message}\" \"#{buddy}\"`
	end
end

.sort_by_updated(chats) ⇒ Object



12
13
14
# File 'lib/imsg.rb', line 12

def self.sort_by_updated(chats)
	chats.sort{ |a, b| b.updated <=> a.updated }
end