vcardigan 0.0.2 → 0.0.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/lib/vcardigan/vcard.rb +48 -13
 - data/lib/vcardigan/version.rb +1 -1
 - data/spec/examples/property_spec.rb +36 -0
 - data/spec/examples/vcard_spec.rb +17 -1
 - metadata +60 -41
 
    
        data/lib/vcardigan/vcard.rb
    CHANGED
    
    | 
         @@ -2,7 +2,9 @@ module VCardigan 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
              class VCard
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
      
 5 
     | 
    
         
            +
                # A quoted-printable encoded string with a trailing '=', indicating that
         
     | 
| 
      
 6 
     | 
    
         
            +
                # it's not terminated
         
     | 
| 
      
 7 
     | 
    
         
            +
                UNTERMINATED_QUOTED_PRINTABLE = /ENCODING=QUOTED-PRINTABLE:.*=$/
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
       7 
9 
     | 
    
         
             
                attr_accessor :version
         
     | 
| 
       8 
10 
     | 
    
         
             
                attr_accessor :chars
         
     | 
| 
         @@ -23,18 +25,18 @@ module VCardigan 
     | 
|
| 
       23 
25 
     | 
    
         
             
                end
         
     | 
| 
       24 
26 
     | 
    
         | 
| 
       25 
27 
     | 
    
         
             
                def parse(data)
         
     | 
| 
       26 
     | 
    
         
            -
                   
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                     
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                    # Add the parsed properties to this vCard
         
     | 
| 
       33 
     | 
    
         
            -
                    lines.each_line do |line|
         
     | 
| 
       34 
     | 
    
         
            -
                      property = VCardigan::Property.parse(self, line)
         
     | 
| 
       35 
     | 
    
         
            -
                      add_prop(property)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  lines = unfold(data)
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                  # Add the parsed properties to this vCard
         
     | 
| 
      
 31 
     | 
    
         
            +
                  lines.each do |line|
         
     | 
| 
      
 32 
     | 
    
         
            +
                    if line =~ /^VERSION:(.+)/
         
     | 
| 
      
 33 
     | 
    
         
            +
                      @version = $1
         
     | 
| 
       36 
34 
     | 
    
         
             
                    end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                    property = VCardigan::Property.parse(self, line)
         
     | 
| 
      
 37 
     | 
    
         
            +
                    add_prop(property)
         
     | 
| 
       37 
38 
     | 
    
         
             
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
       38 
40 
     | 
    
         
             
                  self
         
     | 
| 
       39 
41 
     | 
    
         
             
                end
         
     | 
| 
       40 
42 
     | 
    
         | 
| 
         @@ -57,7 +59,7 @@ module VCardigan 
     | 
|
| 
       57 
59 
     | 
    
         
             
                  if @group
         
     | 
| 
       58 
60 
     | 
    
         
             
                    # If there's a group, add it to the name
         
     | 
| 
       59 
61 
     | 
    
         
             
                    name = "#{@group}.#{name}"
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
       61 
63 
     | 
    
         
             
                    # Reset group to nil
         
     | 
| 
       62 
64 
     | 
    
         
             
                    @group = nil
         
     | 
| 
       63 
65 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -124,6 +126,39 @@ module VCardigan 
     | 
|
| 
       124 
126 
     | 
    
         
             
                # Private ##########
         
     | 
| 
       125 
127 
     | 
    
         
             
                private
         
     | 
| 
       126 
128 
     | 
    
         | 
| 
      
 129 
     | 
    
         
            +
                # Split on \r\n or \n to get the lines, unfold continued lines (they
         
     | 
| 
      
 130 
     | 
    
         
            +
                # start with " " or \t), and return the array of unfolded lines.
         
     | 
| 
      
 131 
     | 
    
         
            +
                #
         
     | 
| 
      
 132 
     | 
    
         
            +
                # Strip away BEGIN:VCARD and END:VCARD
         
     | 
| 
      
 133 
     | 
    
         
            +
                #
         
     | 
| 
      
 134 
     | 
    
         
            +
                # This also supports the (invalid) encoding convention of allowing empty
         
     | 
| 
      
 135 
     | 
    
         
            +
                # lines to be inserted for readability - it does this by dropping zero-length
         
     | 
| 
      
 136 
     | 
    
         
            +
                # lines.
         
     | 
| 
      
 137 
     | 
    
         
            +
                # Borrowed from https://github.com/qoobaa/vcard
         
     | 
| 
      
 138 
     | 
    
         
            +
                def unfold(card)
         
     | 
| 
      
 139 
     | 
    
         
            +
                  unfolded = []
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
                  prior_line = nil
         
     | 
| 
      
 142 
     | 
    
         
            +
                  card.lines do |line|
         
     | 
| 
      
 143 
     | 
    
         
            +
                    line.chomp!
         
     | 
| 
      
 144 
     | 
    
         
            +
                    # If it's a continuation line, add it to the last.
         
     | 
| 
      
 145 
     | 
    
         
            +
                    # If it's an empty line, drop it from the input.
         
     | 
| 
      
 146 
     | 
    
         
            +
                    if line =~ /^[ \t]/
         
     | 
| 
      
 147 
     | 
    
         
            +
                      unfolded[-1] << line[1, line.size-1]
         
     | 
| 
      
 148 
     | 
    
         
            +
                    elsif line =~ /(^BEGIN:VCARD$)|(^END:VCARD$)/
         
     | 
| 
      
 149 
     | 
    
         
            +
                    elsif prior_line && (prior_line =~ UNTERMINATED_QUOTED_PRINTABLE)
         
     | 
| 
      
 150 
     | 
    
         
            +
                      # Strip the trailing = off prior line, then append current line
         
     | 
| 
      
 151 
     | 
    
         
            +
                      unfolded[-1] = prior_line[0, prior_line.length-1] + line
         
     | 
| 
      
 152 
     | 
    
         
            +
                    elsif line =~ /^$/
         
     | 
| 
      
 153 
     | 
    
         
            +
                    else
         
     | 
| 
      
 154 
     | 
    
         
            +
                      unfolded << line
         
     | 
| 
      
 155 
     | 
    
         
            +
                    end
         
     | 
| 
      
 156 
     | 
    
         
            +
                    prior_line = unfolded[-1]
         
     | 
| 
      
 157 
     | 
    
         
            +
                  end
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
                  unfolded
         
     | 
| 
      
 160 
     | 
    
         
            +
                end
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
       127 
162 
     | 
    
         
             
                def build_prop(name, *args)
         
     | 
| 
       128 
163 
     | 
    
         
             
                  VCardigan::Property.create(self, name, *args)
         
     | 
| 
       129 
164 
     | 
    
         
             
                end
         
     | 
| 
         @@ -137,7 +172,7 @@ module VCardigan 
     | 
|
| 
       137 
172 
     | 
    
         
             
                  unless @fields.has_key? name
         
     | 
| 
       138 
173 
     | 
    
         
             
                    @fields[name] = []
         
     | 
| 
       139 
174 
     | 
    
         
             
                  end
         
     | 
| 
       140 
     | 
    
         
            -
             
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
       141 
176 
     | 
    
         
             
                  # Add the property to the field array
         
     | 
| 
       142 
177 
     | 
    
         
             
                  @fields[name].push(property)
         
     | 
| 
       143 
178 
     | 
    
         | 
    
        data/lib/vcardigan/version.rb
    CHANGED
    
    
| 
         @@ -95,6 +95,42 @@ describe VCardigan::Property do 
     | 
|
| 
       95 
95 
     | 
    
         
             
                it 'should return the property vCard formatted' do
         
     | 
| 
       96 
96 
     | 
    
         
             
                  prop.to_s.should == "#{group}.#{name.upcase};TYPE=#{params[:type]}:#{value}"
         
     | 
| 
       97 
97 
     | 
    
         
             
                end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                context 'with properties that return long strings' do
         
     | 
| 
      
 100 
     | 
    
         
            +
                  let(:value) { 'qwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwertqwert' }
         
     | 
| 
      
 101 
     | 
    
         
            +
                  let(:prop) { VCardigan::Property.create(vcard, "#{group}.#{name}", value, params) }
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                  it 'should line fold at 75 chars' do
         
     | 
| 
      
 104 
     | 
    
         
            +
                    prop.to_s.split("\n").each do |line|
         
     | 
| 
      
 105 
     | 
    
         
            +
                      line.length.should <= 75
         
     | 
| 
      
 106 
     | 
    
         
            +
                    end
         
     | 
| 
      
 107 
     | 
    
         
            +
                  end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                  context 'when chars option is set to 50' do
         
     | 
| 
      
 110 
     | 
    
         
            +
                    let(:chars) { 50 }
         
     | 
| 
      
 111 
     | 
    
         
            +
                    let(:vcard) { VCardigan.create(:chars => chars) }
         
     | 
| 
      
 112 
     | 
    
         
            +
                    let(:prop) { VCardigan::Property.create(vcard, "#{group}.#{name}", value, params) }
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
                    it 'should line fold at 50 chars' do
         
     | 
| 
      
 115 
     | 
    
         
            +
                      prop.to_s.split("\n").each do |line|
         
     | 
| 
      
 116 
     | 
    
         
            +
                        line.length.should <= 50
         
     | 
| 
      
 117 
     | 
    
         
            +
                      end
         
     | 
| 
      
 118 
     | 
    
         
            +
                    end
         
     | 
| 
      
 119 
     | 
    
         
            +
                  end
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                  context 'when chars option is set to 0' do
         
     | 
| 
      
 122 
     | 
    
         
            +
                    let(:chars) { 0 }
         
     | 
| 
      
 123 
     | 
    
         
            +
                    let(:vcard) { VCardigan.create(:chars => chars) }
         
     | 
| 
      
 124 
     | 
    
         
            +
                    let(:prop) { VCardigan::Property.create(vcard, "#{group}.#{name}", value, params) }
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
                    it 'should not line fold' do
         
     | 
| 
      
 127 
     | 
    
         
            +
                      ret = "#{group}.#{name.upcase};TYPE=#{params[:type]}:#{value}"
         
     | 
| 
      
 128 
     | 
    
         
            +
                      prop.to_s.split("\n").length.should == 1
         
     | 
| 
      
 129 
     | 
    
         
            +
                      prop.to_s.length.should == ret.length
         
     | 
| 
      
 130 
     | 
    
         
            +
                    end
         
     | 
| 
      
 131 
     | 
    
         
            +
                  end
         
     | 
| 
      
 132 
     | 
    
         
            +
                end
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
       98 
134 
     | 
    
         
             
              end
         
     | 
| 
       99 
135 
     | 
    
         | 
| 
       100 
136 
     | 
    
         
             
              describe '#parse' do
         
     | 
    
        data/spec/examples/vcard_spec.rb
    CHANGED
    
    | 
         @@ -245,6 +245,22 @@ describe VCardigan::VCard do 
     | 
|
| 
       245 
245 
     | 
    
         
             
                    fields.should have_key('fn')
         
     | 
| 
       246 
246 
     | 
    
         
             
                  end
         
     | 
| 
       247 
247 
     | 
    
         
             
                end
         
     | 
| 
       248 
     | 
    
         
            -
              end
         
     | 
| 
       249 
248 
     | 
    
         | 
| 
      
 249 
     | 
    
         
            +
                context 'google 3.0 vCard' do
         
     | 
| 
      
 250 
     | 
    
         
            +
                  let(:data) { File.read(File.dirname(__FILE__) + '/../helpers/google.vcf') }
         
     | 
| 
      
 251 
     | 
    
         
            +
                  let(:vcard) { VCardigan.parse(data) }
         
     | 
| 
      
 252 
     | 
    
         
            +
                  let(:fields) { vcard.instance_variable_get(:@fields) }
         
     | 
| 
      
 253 
     | 
    
         
            +
             
     | 
| 
      
 254 
     | 
    
         
            +
                  it 'should set the version' do
         
     | 
| 
      
 255 
     | 
    
         
            +
                    vcard.version.should == '3.0'
         
     | 
| 
      
 256 
     | 
    
         
            +
                  end
         
     | 
| 
      
 257 
     | 
    
         
            +
             
     | 
| 
      
 258 
     | 
    
         
            +
                  it 'should add the properties to the fields array' do
         
     | 
| 
      
 259 
     | 
    
         
            +
                    fields.should have_key('n')
         
     | 
| 
      
 260 
     | 
    
         
            +
                    fields.should have_key('fn')
         
     | 
| 
      
 261 
     | 
    
         
            +
                    fields.should have_key('photo')
         
     | 
| 
      
 262 
     | 
    
         
            +
                    fields.should have_key('x-socialprofile')
         
     | 
| 
      
 263 
     | 
    
         
            +
                  end
         
     | 
| 
      
 264 
     | 
    
         
            +
                end
         
     | 
| 
      
 265 
     | 
    
         
            +
              end
         
     | 
| 
       250 
266 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,74 +1,93 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: vcardigan
         
     | 
| 
       3 
     | 
    
         
            -
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 5 
     | 
    
         
            +
              segments: 
         
     | 
| 
      
 6 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 7 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 3
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 0.0.3
         
     | 
| 
       6 
10 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
     | 
    
         
            -
            authors:
         
     | 
| 
      
 11 
     | 
    
         
            +
            authors: 
         
     | 
| 
       8 
12 
     | 
    
         
             
            - Matt Morgan
         
     | 
| 
       9 
13 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
14 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
15 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            date: 2014-02-07 00:00:00 -08:00
         
     | 
| 
      
 18 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 19 
     | 
    
         
            +
            dependencies: 
         
     | 
| 
      
 20 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       15 
21 
     | 
    
         
             
              name: rspec
         
     | 
| 
       16 
     | 
    
         
            -
               
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                requirements:
         
     | 
| 
      
 22 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 23 
     | 
    
         
            +
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 24 
     | 
    
         
            +
                requirements: 
         
     | 
| 
       19 
25 
     | 
    
         
             
                - - ~>
         
     | 
| 
       20 
     | 
    
         
            -
                  - !ruby/object:Gem::Version
         
     | 
| 
       21 
     | 
    
         
            -
                     
     | 
| 
      
 26 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 27 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 28 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 29 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 30 
     | 
    
         
            +
                    version: "2.0"
         
     | 
| 
       22 
31 
     | 
    
         
             
              type: :development
         
     | 
| 
      
 32 
     | 
    
         
            +
              version_requirements: *id001
         
     | 
| 
      
 33 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 34 
     | 
    
         
            +
              name: pry
         
     | 
| 
       23 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
               
     | 
| 
       25 
     | 
    
         
            -
                 
     | 
| 
       26 
     | 
    
         
            -
                 
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                     
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
               
     | 
| 
      
 36 
     | 
    
         
            +
              requirement: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 40 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 41 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 42 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 43 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 44 
     | 
    
         
            +
              version_requirements: *id002
         
     | 
| 
      
 45 
     | 
    
         
            +
            description: vCardigan is a ruby library for building and parsing vCards that supports both v3.0 and v4.0.
         
     | 
| 
       32 
46 
     | 
    
         
             
            email: matt@mlmorg.com
         
     | 
| 
       33 
47 
     | 
    
         
             
            executables: []
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
       34 
49 
     | 
    
         
             
            extensions: []
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
       35 
51 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            files: 
         
     | 
| 
       37 
54 
     | 
    
         
             
            - lib/vcardigan/errors.rb
         
     | 
| 
       38 
55 
     | 
    
         
             
            - lib/vcardigan/properties/name_property.rb
         
     | 
| 
       39 
56 
     | 
    
         
             
            - lib/vcardigan/property.rb
         
     | 
| 
       40 
57 
     | 
    
         
             
            - lib/vcardigan/vcard.rb
         
     | 
| 
       41 
58 
     | 
    
         
             
            - lib/vcardigan/version.rb
         
     | 
| 
       42 
59 
     | 
    
         
             
            - lib/vcardigan.rb
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
            - spec/examples/vcard_spec.rb
         
     | 
| 
       45 
     | 
    
         
            -
            - spec/spec_helper.rb
         
     | 
| 
      
 60 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
       46 
61 
     | 
    
         
             
            homepage: http://github.com/brewster/vcardigan
         
     | 
| 
       47 
     | 
    
         
            -
            licenses:
         
     | 
| 
      
 62 
     | 
    
         
            +
            licenses: 
         
     | 
| 
       48 
63 
     | 
    
         
             
            - MIT
         
     | 
| 
       49 
64 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       50 
65 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
       52 
68 
     | 
    
         
             
            - lib
         
     | 
| 
       53 
     | 
    
         
            -
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       54 
     | 
    
         
            -
               
     | 
| 
       55 
     | 
    
         
            -
               
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                   
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
              requirements:
         
     | 
| 
       62 
     | 
    
         
            -
              - -  
     | 
| 
       63 
     | 
    
         
            -
                - !ruby/object:Gem::Version
         
     | 
| 
       64 
     | 
    
         
            -
                   
     | 
| 
      
 69 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 70 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 71 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 72 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 73 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 74 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 75 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 76 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 77 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 78 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 79 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 80 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 81 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 82 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
       65 
83 
     | 
    
         
             
            requirements: []
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
       66 
85 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       67 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 86 
     | 
    
         
            +
            rubygems_version: 1.3.6
         
     | 
| 
       68 
87 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       69 
88 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       70 
89 
     | 
    
         
             
            summary: Ruby vCard Builder/Parser
         
     | 
| 
       71 
     | 
    
         
            -
            test_files:
         
     | 
| 
      
 90 
     | 
    
         
            +
            test_files: 
         
     | 
| 
       72 
91 
     | 
    
         
             
            - spec/examples/property_spec.rb
         
     | 
| 
       73 
92 
     | 
    
         
             
            - spec/examples/vcard_spec.rb
         
     | 
| 
       74 
93 
     | 
    
         
             
            - spec/spec_helper.rb
         
     |