jugyo-termtter 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,8 +3,8 @@ Termtter::Client.add_hook do |statuses, event|
3
3
  max = 10
4
4
 
5
5
  text = statuses[0..(max - 1)].map{|s|
6
- status_text = s['text'].gsub(%r{https?://[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+},'<a href="\0">\0</a>')
7
- "<b>#{s['user/screen_name']}</b> <span font=\"9.0\">#{status_text}</span>"
6
+ status_text = s.text.gsub(%r{https?://[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+},'<a href="\0">\0</a>')
7
+ "<b>#{s.user_screen_name}</b> <span font=\"9.0\">#{status_text}</span>"
8
8
  }.join("\n")
9
9
 
10
10
  text += "\n<a href=\"http://twitter.com/\">more…</a>" if statuses.size > max
@@ -12,4 +12,3 @@ Termtter::Client.add_hook do |statuses, event|
12
12
  system 'notify-send', 'Termtter', text, '-t', '60000'
13
13
  end
14
14
  end
15
-
@@ -10,11 +10,11 @@ Termtter::Client.add_hook do |statuses, event|
10
10
  unless statuses.empty?
11
11
  if event == :update_friends_timeline then statuses = statuses.reverse end
12
12
  statuses.each do |s|
13
- text = s['text'].gsub("\n", '')
14
- color_num = colors[s['user/screen_name'].hash % colors.size]
15
- status = "#{s['user/screen_name']}: #{text}"
16
- unless s['in_reply_to_status_id'] && s['in_reply_to_status_id'].empty?
17
- status += " (reply to #{s['in_reply_to_status_id']})"
13
+ text = s.text.gsub("\n", '')
14
+ color_num = colors[s.user_screen_name.hash % colors.size]
15
+ status = "#{s.user_screen_name}: #{text}"
16
+ unless s.in_reply_to_status_id && s.in_reply_to_status_id.empty?
17
+ status += " (reply to #{s.in_reply_to_status_id})"
18
18
  end
19
19
 
20
20
  case event
@@ -23,20 +23,19 @@ Termtter::Client.add_hook do |statuses, event|
23
23
  else
24
24
  time_format = '%m-%d %H:%d'
25
25
  end
26
- time_str = "(#{s['created_at'].strftime(time_format)})"
26
+ time_str = "(#{s.created_at.strftime(time_format)})"
27
27
 
28
28
  puts "#{color(time_str, 90)} #{color(status, color_num)}"
29
29
  end
30
30
  end
31
31
  when :search
32
32
  statuses.each do |s|
33
- text = s['text'].gsub("\n", '')
34
- color_num = colors[s['user/screen_name'].hash % colors.size]
35
- status = "#{s['user/screen_name']}: #{text}"
36
- time_str = "(#{s['created_at'].strftime('%m-%d %H:%d')})"
33
+ text = s.text.gsub("\n", '')
34
+ color_num = colors[s.user_screen_name.hash % colors.size]
35
+ status = "#{s.user_screen_name}: #{text}"
36
+ time_str = "(#{s.created_at.strftime('%m-%d %H:%d')})"
37
37
 
38
38
  puts "#{color(time_str, 90)} #{color(status, color_num)}"
39
39
  end
40
40
  end
41
41
  end
42
-
data/lib/termtter.rb CHANGED
@@ -10,7 +10,7 @@ $:.unshift(File.dirname(__FILE__)) unless
10
10
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
11
11
 
12
12
  module Termtter
13
- VERSION = '0.2.0'
13
+ VERSION = '0.2.1'
14
14
 
15
15
  class Client
16
16
 
@@ -73,13 +73,13 @@ module Termtter
73
73
  statuses = []
74
74
  ns = {'atom' => 'http://www.w3.org/2005/Atom'}
75
75
  doc.xpath('//atom:entry', ns).each do |node|
76
- status = {}
76
+ status = Status.new
77
77
  published = node.xpath('atom:published', ns).text
78
- status['created_at'] = Time.utc(*ParseDate::parsedate(published)).localtime
79
- status['text'] = CGI.unescapeHTML(node.xpath('atom:content', ns).text.gsub(/<\/?[^>]*>/, ''))
78
+ status.created_at = Time.utc(*ParseDate::parsedate(published)).localtime
79
+ status.text = CGI.unescapeHTML(node.xpath('atom:content', ns).text.gsub(/<\/?[^>]*>/, ''))
80
80
  name = node.xpath('atom:author/atom:name', ns).text
81
- status['user/screen_name'] = name.scan(/^([^\s]+) /).flatten[0]
82
- status['user/name'] = name.scan(/\((.*)\)/).flatten[0]
81
+ status.user_screen_name = name.scan(/^([^\s]+) /).flatten[0]
82
+ status.user_name = name.scan(/\((.*)\)/).flatten[0]
83
83
  statuses << status
84
84
  end
85
85
 
@@ -112,20 +112,21 @@ module Termtter
112
112
  doc = Nokogiri::XML(open(uri, :http_basic_authentication => [@user_name, @password]))
113
113
 
114
114
  statuses = []
115
- doc.xpath('//status').each do |s|
116
- status = {}
115
+ doc.xpath('//status').each do |node|
116
+ status = Status.new
117
117
  %w(
118
118
  id text created_at truncated in_reply_to_status_id in_reply_to_user_id
119
119
  user/id user/name user/screen_name
120
120
  ).each do |key|
121
- status[key] = CGI.unescapeHTML(s.xpath(key).text)
121
+ method = "#{key.gsub('/', '_')}=".to_sym
122
+ status.send(method, node.xpath(key).text)
122
123
  end
123
- status['created_at'] = Time.utc(*ParseDate::parsedate(status['created_at'])).localtime
124
+ status.created_at = Time.utc(*ParseDate::parsedate(status.created_at)).localtime
124
125
  statuses << status
125
126
  end
126
127
 
127
128
  if update_since_id && !statuses.empty?
128
- @since_id = statuses[0]['id']
129
+ @since_id = statuses[0].id
129
130
  end
130
131
 
131
132
  return statuses
@@ -213,5 +214,14 @@ Enter "help" for instructions
213
214
  end
214
215
 
215
216
  end
216
- end
217
+
218
+ class Status
219
+ %w(
220
+ id text created_at truncated in_reply_to_status_id in_reply_to_user_id
221
+ user_id user_name user_screen_name
222
+ ).each do |attr|
223
+ attr_accessor attr.to_sym
224
+ end
225
+ end
217
226
 
227
+ end
@@ -23,16 +23,16 @@ class TestTermtter < Test::Unit::TestCase
23
23
  statuses = @termtter.get_timeline('')
24
24
 
25
25
  assert_equal 3, statuses.size
26
- assert_equal '102', statuses[0]['user/id']
27
- assert_equal 'test2', statuses[0]['user/screen_name']
28
- assert_equal 'Test User 2', statuses[0]['user/name']
29
- assert_equal 'texttext 2', statuses[0]['text']
30
- assert_equal 'Thu Dec 25 22:19:57 +0900 2008', statuses[0]['created_at'].to_s
31
- assert_equal '100', statuses[2]['user/id']
32
- assert_equal 'test0', statuses[2]['user/screen_name']
33
- assert_equal 'Test User 0', statuses[2]['user/name']
34
- assert_equal 'texttext 0', statuses[2]['text']
35
- assert_equal 'Thu Dec 25 22:10:57 +0900 2008', statuses[2]['created_at'].to_s
26
+ assert_equal '102', statuses[0].user_id
27
+ assert_equal 'test2', statuses[0].user_screen_name
28
+ assert_equal 'Test User 2', statuses[0].user_name
29
+ assert_equal 'texttext 2', statuses[0].text
30
+ assert_equal 'Thu Dec 25 22:19:57 +0900 2008', statuses[0].created_at.to_s
31
+ assert_equal '100', statuses[2].user_id
32
+ assert_equal 'test0', statuses[2].user_screen_name
33
+ assert_equal 'Test User 0', statuses[2].user_name
34
+ assert_equal 'texttext 0', statuses[2].text
35
+ assert_equal 'Thu Dec 25 22:10:57 +0900 2008', statuses[2].created_at.to_s
36
36
  end
37
37
 
38
38
  def test_get_timeline_with_update_since_id
@@ -51,14 +51,14 @@ class TestTermtter < Test::Unit::TestCase
51
51
 
52
52
  statuses = @termtter.search('')
53
53
  assert_equal 3, statuses.size
54
- assert_equal 'test2', statuses[0]['user/screen_name']
55
- assert_equal 'Test User 2', statuses[0]['user/name']
56
- assert_equal 'texttext 2', statuses[0]['text']
57
- assert_equal 'Thu Dec 25 22:52:36 +0900 2008', statuses[0]['created_at'].to_s
58
- assert_equal 'test0', statuses[2]['user/screen_name']
59
- assert_equal 'Test User 0', statuses[2]['user/name']
60
- assert_equal 'texttext 0', statuses[2]['text']
61
- assert_equal 'Thu Dec 25 22:42:36 +0900 2008', statuses[2]['created_at'].to_s
54
+ assert_equal 'test2', statuses[0].user_screen_name
55
+ assert_equal 'Test User 2', statuses[0].user_name
56
+ assert_equal 'texttext 2', statuses[0].text
57
+ assert_equal 'Thu Dec 25 22:52:36 +0900 2008', statuses[0].created_at.to_s
58
+ assert_equal 'test0', statuses[2].user_screen_name
59
+ assert_equal 'Test User 0', statuses[2].user_name
60
+ assert_equal 'texttext 0', statuses[2].text
61
+ assert_equal 'Thu Dec 25 22:42:36 +0900 2008', statuses[2].created_at.to_s
62
62
  end
63
63
 
64
64
  def test_add_hook
@@ -80,4 +80,3 @@ class TestTermtter < Test::Unit::TestCase
80
80
  assert_equal false, call_hook
81
81
  end
82
82
  end
83
-
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jugyo-termtter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - jugyo