pidgin2adium 3.2.2 → 3.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +6 -0
- data/lib/pidgin2adium/parsers/basic_parser.rb +47 -18
- data/lib/version.rb +1 -1
- data/pidgin2adium.gemspec +1 -1
- metadata +2 -2
data/ChangeLog
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== 3.2.3 / 2010-11-08
|
2
|
+
* Be more liberal in what Pidgin2Adium accepts when parsing the date and
|
3
|
+
getting basic time info for the first line. Thanks to Matthew Jakubowski for
|
4
|
+
helping me fix this bug.
|
5
|
+
|
1
6
|
=== 3.2.2 / 2010-11-08
|
2
7
|
* Use DateTime#strftime to get dates in xmlschema format. DateTime#xmlschema
|
3
8
|
doesn't exist in Ruby 1.8, and Ruby 1.9 has DateTime#iso8601, not
|
@@ -20,6 +25,7 @@ both work in 3.2.0.
|
|
20
25
|
* Moved Message and its subclasses into messages/ subdir
|
21
26
|
- You can now do "require 'pidgin2adium/messages/all'",
|
22
27
|
though the old "require 'pidgin2adium/message" will still work
|
28
|
+
|
23
29
|
=== 3.1.0 / 2010-08-13
|
24
30
|
* Compatible with Ruby 1.9!
|
25
31
|
- removed dependency on "parsedate" library, which 1.9 doesn't have
|
@@ -28,6 +28,13 @@ module Pidgin2Adium
|
|
28
28
|
# Minimal times don't have a date
|
29
29
|
MINIMAL_TIME_REGEX = /^\d{1,2}:\d{1,2}:\d{1,2}(?: [AP]M)?$/
|
30
30
|
|
31
|
+
# Time regexes must be set before pre_parse!().
|
32
|
+
# "4/18/2007 11:02:00 AM" => %w{4, 18, 2007}
|
33
|
+
# ONLY used (if at all) in first line of chat ("Conversation with...at...")
|
34
|
+
TIME_REGEX_FIRST_LINE = %r{^(\d{1,2})/(\d{1,2})/(\d{4}) \d{1,2}:\d{2}:\d{2} [AP]M$}
|
35
|
+
# "2007-04-17 12:33:13" => %w{2007, 04, 17}
|
36
|
+
TIME_REGEX = /^(\d{4})-(\d{2})-(\d{2}) \d{2}:\d{2}:\d{2}$/
|
37
|
+
|
31
38
|
def initialize(src_path, user_aliases)
|
32
39
|
@src_path = src_path
|
33
40
|
# Whitespace is removed for easy matching later on.
|
@@ -50,13 +57,6 @@ module Pidgin2Adium
|
|
50
57
|
return nil
|
51
58
|
end
|
52
59
|
|
53
|
-
# Time regexes must be set before pre_parse!().
|
54
|
-
# "4/18/2007 11:02:00 AM" => %w{4, 18, 2007}
|
55
|
-
# ONLY used (if at all) in first line of chat ("Conversation with...at...")
|
56
|
-
@time_regex_first_line = %r{^(\d{1,2})/(\d{1,2})/(\d{4}) \d{1,2}:\d{2}:\d{2} [AP]M$}
|
57
|
-
# "2007-04-17 12:33:13" => %w{2007, 04, 17}
|
58
|
-
@time_regex = /^(\d{4})-(\d{2})-(\d{2}) \d{2}:\d{2}:\d{2}$/
|
59
|
-
|
60
60
|
begin
|
61
61
|
successfully_set_variables = pre_parse!
|
62
62
|
if not successfully_set_variables
|
@@ -286,23 +286,52 @@ module Pidgin2Adium
|
|
286
286
|
# You should be able to fill everything else in. If you can't,
|
287
287
|
# something's wrong.
|
288
288
|
@basic_time_info = case pidgin_chat_time_start
|
289
|
-
when
|
289
|
+
when TIME_REGEX
|
290
290
|
{:year => $1.to_i,
|
291
291
|
:mon => $2.to_i,
|
292
292
|
:mday => $3.to_i}
|
293
|
-
when
|
293
|
+
when TIME_REGEX_FIRST_LINE
|
294
294
|
{:year => $3.to_i,
|
295
295
|
:mon => $1.to_i,
|
296
296
|
:mday => $2.to_i}
|
297
|
+
else
|
298
|
+
nil
|
297
299
|
end
|
298
|
-
|
300
|
+
if @basic_time_info.nil?
|
301
|
+
begin
|
302
|
+
parsed_time = DateTime.parse(pidgin_chat_time_start)
|
303
|
+
@basic_time_info = {:year => parsed_time.year,
|
304
|
+
:mon => parsed_time.mon,
|
305
|
+
:mday => parsed_time.mday}
|
306
|
+
rescue ArgumentError
|
307
|
+
# Couldn't parse the date
|
308
|
+
Pidgin2Adium.oops("#{@src_path}: couldn't parse the date in the first line.")
|
309
|
+
@basic_time_info = nil
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
313
|
+
# Note: need @basic_time_info set for create_adium_time
|
299
314
|
# When the chat started, in Adium's format
|
300
315
|
@adium_chat_time_start = create_adium_time(pidgin_chat_time_start)
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
316
|
+
|
317
|
+
first_line_variables = [@service,
|
318
|
+
@user_SN,
|
319
|
+
@partner_SN,
|
320
|
+
@basic_time_info,
|
321
|
+
@adium_chat_time_start]
|
322
|
+
if first_line_variables.all?
|
323
|
+
true
|
324
|
+
else
|
325
|
+
# Print an informative error message
|
326
|
+
unset_variable_names = []
|
327
|
+
unset_variable_names << 'service' if @service.nil?
|
328
|
+
unset_variable_names << 'user_SN' if @user_SN.nil?
|
329
|
+
unset_variable_names << 'partner_SN' if @partner_SN.nil?
|
330
|
+
unset_variable_names << 'basic_time_info' if @basic_time_info.nil?
|
331
|
+
unset_variable_names << 'adium_chat_time_start' if @adium_chat_time_start.nil?
|
332
|
+
Pidgin2Adium.oops("Couldn't set these variables: #{unset_variable_names.join(', ')}")
|
333
|
+
false
|
334
|
+
end
|
306
335
|
end
|
307
336
|
end
|
308
337
|
|
@@ -357,7 +386,7 @@ module Pidgin2Adium
|
|
357
386
|
# Return nil, which will get compact'ed out
|
358
387
|
return nil if @ignore_events.detect{|regex| str =~ regex }
|
359
388
|
|
360
|
-
regex, status = @status_map.detect{|
|
389
|
+
regex, status = @status_map.detect{|rxp, stat| str =~ rxp}
|
361
390
|
if regex and status
|
362
391
|
# Status message
|
363
392
|
buddy_alias = regex.match(str)[1]
|
@@ -365,11 +394,11 @@ module Pidgin2Adium
|
|
365
394
|
msg = StatusMessage.new(sender, time, buddy_alias, status)
|
366
395
|
else
|
367
396
|
# Test for event
|
368
|
-
regex = @lib_purple_events.detect{|
|
397
|
+
regex = @lib_purple_events.detect{|rxp| str =~ rxp }
|
369
398
|
event_type = 'libpurpleEvent' if regex
|
370
399
|
unless regex and event_type
|
371
400
|
# not a libpurple event, try others
|
372
|
-
regex, event_type = @event_map.detect{|
|
401
|
+
regex, event_type = @event_map.detect{|rxp,ev_type| str =~ rxp}
|
373
402
|
unless regex and event_type
|
374
403
|
error(sprintf("Error parsing status or event message, no status or event found: %p", str))
|
375
404
|
return false
|
data/lib/version.rb
CHANGED
data/pidgin2adium.gemspec
CHANGED