vpim 0.602 → 0.604

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,6 +1,14 @@
1
+ 0.604 - 2008-03-13
2
+
3
+ - Fixed a bug with lower-case UTF-16 encoded cards not being detected properly.
4
+
5
+ - Skip over invalidly encoded vCard fields when enumerating them.
6
+
7
+
1
8
  0.602 - 2008-03-12
2
9
 
3
10
  - Updated reminder utility to work with iCal 3.
11
+
4
12
  - Reworked gem to include tests, samples, and binaries.
5
13
 
6
14
 
data/lib/vpim/vcard.rb CHANGED
@@ -586,7 +586,7 @@ module Vpim
586
586
 
587
587
  # Return line for a field
588
588
  def f2l(field) #:nodoc:
589
- Line.decode(@@decode, self, field)
589
+ Line.decode(@@decode, self, field) rescue nil
590
590
  end
591
591
 
592
592
  # With no block, returns an Array of Line. If +name+ is specified, the
@@ -662,7 +662,7 @@ module Vpim
662
662
  def Vcard.decode(card)
663
663
  if card.respond_to? :to_str
664
664
  string = card.to_str
665
- elsif card.kind_of? IO
665
+ elsif card.respond_to? :read
666
666
  string = card.read(nil)
667
667
  else
668
668
  raise ArgumentError, "Vcard.decode cannot be called with a #{card.type}"
@@ -679,9 +679,9 @@ module Vpim
679
679
  arr = string.unpack('v*')
680
680
  arr.shift
681
681
  string = arr.pack('U*')
682
- when /^\x00\x62/i
682
+ when /^\x00B/i
683
683
  string = string.unpack('n*').pack('U*')
684
- when /^\x62\x00/i
684
+ when /^B\x00/i
685
685
  string = string.unpack('v*').pack('U*')
686
686
  end
687
687
 
@@ -769,11 +769,11 @@ module Vpim
769
769
  end
770
770
 
771
771
  if fields.first
772
- line = Line.decode(@@decode, self, fields.first)
772
+ line = Line.decode(@@decode, self, fields.first) rescue nil
773
773
 
774
- if line
775
- return line.value
776
- end
774
+ if line
775
+ return line.value
776
+ end
777
777
  end
778
778
 
779
779
  nil
data/lib/vpim/version.rb CHANGED
@@ -7,9 +7,9 @@
7
7
  =end
8
8
 
9
9
  module Vpim
10
- PRODID = '-//Ensemble Independent//vPim 0.602//EN'
10
+ PRODID = '-//Ensemble Independent//vPim 0.604//EN'
11
11
 
12
- VERSION = '0.602'
12
+ VERSION = '0.604'
13
13
 
14
14
  # Return the API version as a string.
15
15
  def Vpim.version
data/test/test_vcard.rb CHANGED
@@ -729,5 +729,57 @@ END:VCARD
729
729
  assert_equal(note, card.note)
730
730
  end
731
731
 
732
+ def test_empty_tel
733
+ cin = <<___
734
+ BEGIN:VCARD
735
+ TEL;HOME;FAX:
736
+ END:VCARD
737
+ ___
738
+
739
+ card = Vpim::Vcard.decode(cin).first
740
+ assert_equal(card.telephone, nil)
741
+ assert_equal(card.telephone('HOME'), nil)
742
+ assert_equal([], card.telephones)
743
+
744
+ end
745
+
746
+
747
+ def utf_name_test(c)
748
+
749
+ begin
750
+ card = Vpim::Vcard.decode(c).first
751
+ assert_equal("name", card.name.family)
752
+ rescue
753
+ $!.message << " #{c.inspect}"
754
+ raise
755
+ end
756
+ end
757
+
758
+ def be(s)
759
+ s.unpack('U*').pack('n*')
760
+ end
761
+ def le(s)
762
+ s.unpack('U*').pack('v*')
763
+ end
764
+
765
+ def test_utf_heuristics
766
+ bom = "\xEF\xBB\xBF"
767
+ dat = "BEGIN:VCARD\nN:name\nEND:VCARD\n"
768
+ utf_name_test(bom+dat)
769
+ utf_name_test(bom+dat.downcase)
770
+ utf_name_test(dat)
771
+ utf_name_test(dat.downcase)
772
+
773
+ utf_name_test(be(bom+dat))
774
+ utf_name_test(be(bom+dat.downcase))
775
+ utf_name_test(be(dat))
776
+ utf_name_test(be(dat.downcase))
777
+
778
+ utf_name_test(le(bom+dat))
779
+ utf_name_test(le(bom+dat.downcase))
780
+ utf_name_test(le(dat))
781
+ utf_name_test(le(dat.downcase))
782
+ end
783
+
732
784
  end
733
785
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vpim
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.602"
4
+ version: "0.604"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Roberts
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-03-12 00:00:00 -07:00
12
+ date: 2008-03-13 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency