radiant-vcard_part-extension 1.0.0

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/README ADDED
@@ -0,0 +1,11 @@
1
+ Radiant Vcard Part Extension
2
+ ----------------------------
3
+
4
+ This extension builds on Josh French's PageParts extension.
5
+ It adds a new page part type "VcardPagePart", which aids in making valid hCard-formatted markup.
6
+
7
+ ## Still to do
8
+
9
+ * Revise markup and/or CSS for backend; make things look better.
10
+ * Revise attributes; are these really all of the most-used fields when displaying addresses?
11
+ * Make vcard fields dynamic? I.e. so someone can add more than 1 URL or telephone number.
@@ -0,0 +1,109 @@
1
+ # Determine where the RSpec plugin is by loading the boot
2
+ unless defined? RADIANT_ROOT
3
+ ENV["RAILS_ENV"] = "test"
4
+ case
5
+ when ENV["RADIANT_ENV_FILE"]
6
+ require File.dirname(ENV["RADIANT_ENV_FILE"]) + "/boot"
7
+ when File.dirname(__FILE__) =~ %r{vendor/radiant/vendor/extensions}
8
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../")}/config/boot"
9
+ else
10
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../")}/config/boot"
11
+ end
12
+ end
13
+
14
+ require 'rake'
15
+ require 'rake/rdoctask'
16
+ require 'rake/testtask'
17
+
18
+ rspec_base = File.expand_path(RADIANT_ROOT + '/vendor/plugins/rspec/lib')
19
+ $LOAD_PATH.unshift(rspec_base) if File.exist?(rspec_base)
20
+ require 'spec/rake/spectask'
21
+ require 'cucumber'
22
+ require 'cucumber/rake/task'
23
+
24
+ # Cleanup the RADIANT_ROOT constant so specs will load the environment
25
+ Object.send(:remove_const, :RADIANT_ROOT)
26
+
27
+ extension_root = File.expand_path(File.dirname(__FILE__))
28
+
29
+ task :default => [:spec, :features]
30
+ task :stats => "spec:statsetup"
31
+
32
+ desc "Run all specs in spec directory"
33
+ Spec::Rake::SpecTask.new(:spec) do |t|
34
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
35
+ t.spec_files = FileList['spec/**/*_spec.rb']
36
+ end
37
+
38
+ task :features => 'spec:integration'
39
+
40
+ namespace :spec do
41
+ desc "Run all specs in spec directory with RCov"
42
+ Spec::Rake::SpecTask.new(:rcov) do |t|
43
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
44
+ t.spec_files = FileList['spec/**/*_spec.rb']
45
+ t.rcov = true
46
+ t.rcov_opts = ['--exclude', 'spec', '--rails']
47
+ end
48
+
49
+ desc "Print Specdoc for all specs"
50
+ Spec::Rake::SpecTask.new(:doc) do |t|
51
+ t.spec_opts = ["--format", "specdoc", "--dry-run"]
52
+ t.spec_files = FileList['spec/**/*_spec.rb']
53
+ end
54
+
55
+ [:models, :controllers, :views, :helpers].each do |sub|
56
+ desc "Run the specs under spec/#{sub}"
57
+ Spec::Rake::SpecTask.new(sub) do |t|
58
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
59
+ t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
60
+ end
61
+ end
62
+
63
+ desc "Run the Cucumber features"
64
+ Cucumber::Rake::Task.new(:integration) do |t|
65
+ t.fork = true
66
+ t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'pretty')]
67
+ # t.feature_pattern = "#{extension_root}/features/**/*.feature"
68
+ t.profile = "default"
69
+ end
70
+
71
+ # Setup specs for stats
72
+ task :statsetup do
73
+ require 'code_statistics'
74
+ ::STATS_DIRECTORIES << %w(Model\ specs spec/models)
75
+ ::STATS_DIRECTORIES << %w(View\ specs spec/views)
76
+ ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers)
77
+ ::STATS_DIRECTORIES << %w(Helper\ specs spec/views)
78
+ ::CodeStatistics::TEST_TYPES << "Model specs"
79
+ ::CodeStatistics::TEST_TYPES << "View specs"
80
+ ::CodeStatistics::TEST_TYPES << "Controller specs"
81
+ ::CodeStatistics::TEST_TYPES << "Helper specs"
82
+ ::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/}
83
+ end
84
+
85
+ namespace :db do
86
+ namespace :fixtures do
87
+ desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y"
88
+ task :load => :environment do
89
+ require 'active_record/fixtures'
90
+ ActiveRecord::Base.establish_connection(RAILS_ENV.to_sym)
91
+ (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(RAILS_ROOT, 'spec', 'fixtures', '*.{yml,csv}'))).each do |fixture_file|
92
+ Fixtures.create_fixtures('spec/fixtures', File.basename(fixture_file, '.*'))
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ desc 'Generate documentation for the vcard_part extension.'
100
+ Rake::RDocTask.new(:rdoc) do |rdoc|
101
+ rdoc.rdoc_dir = 'rdoc'
102
+ rdoc.title = 'VcardPartExtension'
103
+ rdoc.options << '--line-numbers' << '--inline-source'
104
+ rdoc.rdoc_files.include('README')
105
+ rdoc.rdoc_files.include('lib/**/*.rb')
106
+ end
107
+
108
+ # Load any custom rakefiles for extension
109
+ Dir[File.dirname(__FILE__) + '/tasks/*.rake'].sort.each { |f| require f }
@@ -0,0 +1,4 @@
1
+ class Vcard < ActiveRecord::Base
2
+ belongs_to :page
3
+
4
+ end
@@ -0,0 +1,62 @@
1
+ class VcardPagePart < PagePart
2
+ part_name "vCard"
3
+ show_filters false
4
+
5
+ def render_content
6
+ %{<div class="vcard">
7
+ #{vcard_address_fields}
8
+ #{vcard_tel_fields}
9
+ #{vcard_email_and_url_fields}
10
+ </div>}
11
+ end
12
+
13
+ private
14
+
15
+ def vcard_address_fields
16
+ vcard = self.page.vcard
17
+ result = ""
18
+ result << "<span class=\"org\">#{vcard.org}</span><br />" unless vcard.org.blank?
19
+ result << "<span class=\"fn n\">#{vcard.fn} #{vcard.n}</span><br />" unless (vcard.n.blank? && vcard.fn.blank?)
20
+ unless(vcard.street_address.blank? && vcard.postal_code.blank? && vcard.locality.blank?)
21
+ result << "<span class=\"adr\">"
22
+ %w(street-address postal-code locality).each do |attrib|
23
+ result << "<span class=\"#{attrib}\">#{vcard.send(attrib.gsub(/-/,'_'))}</span>" unless vcard.send(attrib.gsub(/-/, '_')).blank?
24
+ end
25
+ result << "</span>"
26
+ end
27
+ "<p>#{result}</p>"
28
+ end
29
+
30
+ def vcard_tel_fields
31
+ vcard = self.page.vcard
32
+ return if vcard.tel.blank? && vcard.fax.blank?
33
+ result = ""
34
+ unless vcard.tel.blank?
35
+ result << %{
36
+ <span class="tel">
37
+ <abbr class="type" title="Work">Tel.:</abbr>
38
+ <span class="value">#{vcard.tel}</span>
39
+ </span><br />
40
+ }
41
+ end
42
+ unless vcard.fax.blank?
43
+ result << %{
44
+ <span class="tel">
45
+ <abbr class="type" title="Fax">Fax:</abbr>
46
+ <span class="value">#{vcard.fax}</span>
47
+ </span>
48
+ }
49
+ end
50
+ "<p>#{result}</p>"
51
+ end
52
+
53
+ def vcard_email_and_url_fields
54
+ vcard = self.page.vcard
55
+ result = ""
56
+ return result if vcard.email.blank? && vcard.url.blank?
57
+ result << %{<a class="email" href="mailto:#{vcard.email}">#{vcard.email}</a><br />} unless vcard.email.blank?
58
+ result << %{<a class="url" href="http://#{vcard.url.gsub(/http(s)?:\/\//,'')}">#{vcard.url}</a><br />} unless vcard.url.blank?
59
+ "<p>#{result}</p>"
60
+ end
61
+
62
+ end
@@ -0,0 +1,37 @@
1
+ .part.vcard
2
+ .name
3
+ %label{:for => "page_vcard_attributes_org"}= t('vcard.organisation')
4
+ = text_field_tag "page[vcard_attributes][org]", @page.try(:vcard).try(:org)
5
+ %br
6
+ %label{:for => "page_vcard_attributes_fn"}= t('vcard.first_name')
7
+ = text_field_tag "page[vcard_attributes][fn]", @page.try(:vcard).try(:fn)
8
+ %br
9
+ %label{:for => "page_vcard_attributes_n"}= t('vcard.name')
10
+ = text_field_tag "page[vcard_attributes][n]", @page.try(:vcard).try(:n)
11
+ %br
12
+
13
+ .address
14
+ %label{:for => "page_vcard_attributes_street_address"}= t('vcard.street_address')
15
+ = text_field_tag "page[vcard_attributes][street_address]", @page.try(:vcard).try(:street_address)
16
+ %br
17
+ %label{:for => "page_vcard_attributes_postal_code"}= t('vcard.postal_code')
18
+ = text_field_tag "page[vcard_attributes][postal_code]", @page.try(:vcard).try(:postal_code)
19
+ %br
20
+ %label{:for => "page_vcard_attributes_locality"}= t('vcard.locality')
21
+ = text_field_tag "page[vcard_attributes][locality]", @page.try(:vcard).try(:locality)
22
+
23
+ .telephone
24
+ %label{:for => "page_vcard_attributes_tel"}= t('vcard.telephone')
25
+ = text_field_tag "page[vcard_attributes][tel]", @page.try(:vcard).try(:tel)
26
+ %br
27
+ %label{:for => "page_vcard_attributes_fax"}= t('vcard.fax')
28
+ = text_field_tag "page[vcard_attributes][fax]", @page.try(:vcard).try(:fax)
29
+
30
+ .online
31
+ %label{:for => "page_vcard_attributes_email"}= t('vcard.email')
32
+ = text_field_tag "page[vcard_attributes][email]", @page.try(:vcard).try(:email)
33
+ %br
34
+ %label{:for => "page_vcard_attributes_url"}= t('vcard.url')
35
+ = text_field_tag "page[vcard_attributes][url]", @page.try(:vcard).try(:url)
36
+
37
+
@@ -0,0 +1,3 @@
1
+ Radiant.config do |config|
2
+ # config.define "setting.name", :default => 'value', :select_from => ['foo', 'bar']
3
+ end
@@ -0,0 +1,13 @@
1
+ ---
2
+ en:
3
+ vcard:
4
+ email: Email
5
+ fax: Fax
6
+ first_name: First name
7
+ locality: Locality
8
+ name: Name
9
+ organisation: Organisation
10
+ postal_code: Postal code
11
+ street_address: Street address
12
+ telephone: Telephone
13
+ url: Website URL
@@ -0,0 +1,13 @@
1
+ ---
2
+ nl:
3
+ vcard:
4
+ email: Email
5
+ fax: Fax
6
+ first_name: Voornaam
7
+ locality: Gemeente
8
+ name: Naam
9
+ organisation: Organisatie
10
+ postal_code: Postcode
11
+ street_address: Straat
12
+ telephone: Telefoon
13
+ url: Website URL
@@ -0,0 +1,5 @@
1
+ ActionController::Routing::Routes.draw do |map|
2
+ # map.namespace :admin, :member => { :remove => :get } do |admin|
3
+ # admin.resources :vcard_part
4
+ # end
5
+ end
@@ -0,0 +1 @@
1
+ default: --format progress features --tags ~@proposed,~@in_progress
@@ -0,0 +1,26 @@
1
+ class CreateVcards < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :vcards do |t|
4
+ t.string :fn
5
+ t.string :n
6
+ t.string :org
7
+ t.string :street_address
8
+ t.string :postal_code
9
+ t.string :locality
10
+ t.string :tel
11
+ t.string :fax
12
+ t.string :email
13
+ t.string :url
14
+
15
+ t.integer :page_id
16
+
17
+ t.timestamps
18
+ end
19
+
20
+ add_index :vcards, :page_id
21
+ end
22
+
23
+ def self.down
24
+ drop_table :vcards
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ # Sets up the Rails environment for Cucumber
2
+ ENV["RAILS_ENV"] = "test"
3
+ # Extension root
4
+ extension_env = File.expand_path(File.dirname(__FILE__) + '/../../../../../config/environment')
5
+ require extension_env+'.rb'
6
+
7
+ Dir.glob(File.join(RADIANT_ROOT, "features", "**", "*.rb")).each {|step| require step unless step =~ /datasets_loader\.rb$/}
8
+
9
+ Cucumber::Rails::World.class_eval do
10
+ dataset :vcard_part
11
+ end
@@ -0,0 +1,22 @@
1
+ module NavigationHelpers
2
+
3
+ # Extend the standard PathMatchers with your own paths
4
+ # to be used in your features.
5
+ #
6
+ # The keys and values here may be used in your standard web steps
7
+ # Using:
8
+ #
9
+ # When I go to the "vcard_part" admin page
10
+ #
11
+ # would direct the request to the path you provide in the value:
12
+ #
13
+ # admin_vcard_part_path
14
+ #
15
+ PathMatchers = {} unless defined?(PathMatchers)
16
+ PathMatchers.merge!({
17
+ # /vcard_part/i => 'admin_vcard_part_path'
18
+ })
19
+
20
+ end
21
+
22
+ World(NavigationHelpers)
@@ -0,0 +1,2 @@
1
+ module RadiantVcardPartExtension
2
+ end
@@ -0,0 +1,3 @@
1
+ module RadiantVcardPartExtension
2
+ VERSION = '1.0.0'
3
+ end
@@ -0,0 +1,55 @@
1
+ namespace :radiant do
2
+ namespace :extensions do
3
+ namespace :vcard_part do
4
+
5
+ desc "Runs the migration of the Vcard Part extension"
6
+ task :migrate => :environment do
7
+ require 'radiant/extension_migrator'
8
+ if ENV["VERSION"]
9
+ VcardPartExtension.migrator.migrate(ENV["VERSION"].to_i)
10
+ Rake::Task['db:schema:dump'].invoke
11
+ else
12
+ VcardPartExtension.migrator.migrate
13
+ Rake::Task['db:schema:dump'].invoke
14
+ end
15
+ end
16
+
17
+ desc "Copies public assets of the Vcard Part to the instance public/ directory."
18
+ task :update => :environment do
19
+ is_svn_or_dir = proc {|path| path =~ /\.svn/ || File.directory?(path) }
20
+ puts "Copying assets from VcardPartExtension"
21
+ Dir[VcardPartExtension.root + "/public/**/*"].reject(&is_svn_or_dir).each do |file|
22
+ path = file.sub(VcardPartExtension.root, '')
23
+ directory = File.dirname(path)
24
+ mkdir_p RAILS_ROOT + directory, :verbose => false
25
+ cp file, RAILS_ROOT + path, :verbose => false
26
+ end
27
+ unless VcardPartExtension.root.starts_with? RAILS_ROOT # don't need to copy vendored tasks
28
+ puts "Copying rake tasks from VcardPartExtension"
29
+ local_tasks_path = File.join(RAILS_ROOT, %w(lib tasks))
30
+ mkdir_p local_tasks_path, :verbose => false
31
+ Dir[File.join VcardPartExtension.root, %w(lib tasks *.rake)].each do |file|
32
+ cp file, local_tasks_path, :verbose => false
33
+ end
34
+ end
35
+ end
36
+
37
+ desc "Syncs all available translations for this ext to the English ext master"
38
+ task :sync => :environment do
39
+ # The main translation root, basically where English is kept
40
+ language_root = VcardPartExtension.root + "/config/locales"
41
+ words = TranslationSupport.get_translation_keys(language_root)
42
+
43
+ Dir["#{language_root}/*.yml"].each do |filename|
44
+ next if filename.match('_available_tags')
45
+ basename = File.basename(filename, '.yml')
46
+ puts "Syncing #{basename}"
47
+ (comments, other) = TranslationSupport.read_file(filename, basename)
48
+ words.each { |k,v| other[k] ||= words[k] } # Initializing hash variable as empty if it does not exist
49
+ other.delete_if { |k,v| !words[k] } # Remove if not defined in en.yml
50
+ TranslationSupport.write_file(filename, basename, comments, other)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,10 @@
1
+ module VcardPartExtension::PageExtensions
2
+ def self.included(base)
3
+ base.class_eval do
4
+ has_one :vcard
5
+ accepts_nested_attributes_for :vcard, :allow_destroy => true
6
+
7
+ end
8
+ end
9
+
10
+ end
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "radiant-vcard_part-extension/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "radiant-vcard_part-extension"
7
+ s.version = RadiantVcardPartExtension::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Benny Degezelle"]
10
+ s.email = ["hi@mokeypatch.be"]
11
+ s.homepage = "https://github.com/jomz/radiant-vcard_part-extension"
12
+ s.summary = %q{Vcard Part for Radiant CMS}
13
+ s.description = %q{Adds a vCardPagePart type. Requires radiant-page_parts-extension.}
14
+
15
+ ignores = if File.exist?('.gitignore')
16
+ File.read('.gitignore').split("\n").inject([]) {|a,p| a + Dir[p] }
17
+ else
18
+ []
19
+ end
20
+ s.files = Dir['**/*'] - ignores
21
+ s.test_files = Dir['test/**/*','spec/**/*','features/**/*'] - ignores
22
+ # s.executables = Dir['bin/*'] - ignores
23
+ s.require_paths = ["lib"]
24
+
25
+ s.post_install_message = %{
26
+ Add this to your radiant project with:
27
+ config.gem 'radiant-vcard_part-extension', :version => '~>#{RadiantVcardPartExtension::VERSION}'
28
+ }
29
+ end
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Vcard do
4
+ before(:each) do
5
+ @vcard = Vcard.new
6
+ end
7
+
8
+ it "should be valid" do
9
+ @vcard.should be_valid
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ --colour
2
+ --format
3
+ progress
4
+ --loadby
5
+ mtime
6
+ --reverse
@@ -0,0 +1,36 @@
1
+ unless defined? RADIANT_ROOT
2
+ ENV["RAILS_ENV"] = "test"
3
+ case
4
+ when ENV["RADIANT_ENV_FILE"]
5
+ require ENV["RADIANT_ENV_FILE"]
6
+ when File.dirname(__FILE__) =~ %r{vendor/radiant/vendor/extensions}
7
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../../")}/config/environment"
8
+ else
9
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../")}/config/environment"
10
+ end
11
+ end
12
+ require "#{RADIANT_ROOT}/spec/spec_helper"
13
+
14
+ Dataset::Resolver.default << (File.dirname(__FILE__) + "/datasets")
15
+
16
+ if File.directory?(File.dirname(__FILE__) + "/matchers")
17
+ Dir[File.dirname(__FILE__) + "/matchers/*.rb"].each {|file| require file }
18
+ end
19
+
20
+ Spec::Runner.configure do |config|
21
+ # config.use_transactional_fixtures = true
22
+ # config.use_instantiated_fixtures = false
23
+ # config.fixture_path = RAILS_ROOT + '/spec/fixtures'
24
+
25
+ # You can declare fixtures for each behaviour like this:
26
+ # describe "...." do
27
+ # fixtures :table_a, :table_b
28
+ #
29
+ # Alternatively, if you prefer to declare them only once, you can
30
+ # do so here, like so ...
31
+ #
32
+ # config.global_fixtures = :table_a, :table_b
33
+ #
34
+ # If you declare global fixtures, be aware that they will be declared
35
+ # for all of your examples, even those that don't use them.
36
+ end
@@ -0,0 +1,19 @@
1
+ # Uncomment this if you reference any of your controllers in activate
2
+ # require_dependency 'application_controller'
3
+ require 'radiant-vcard_part-extension/version'
4
+ class VcardPartExtension < Radiant::Extension
5
+ version RadiantVcardPartExtension::VERSION
6
+ description "Adds a vCardPagePart type."
7
+ url "https://github.com/jomz/radiant-vcard_part-extension"
8
+
9
+ extension_config do |config|
10
+ # config.gem 'radiant-page_parts-extension'
11
+ end
12
+
13
+ def activate
14
+ Page.send :include, VcardPartExtension::PageExtensions
15
+ # tab 'Content' do
16
+ # add_item "Vcard Part", "/admin/vcard_part", :after => "Pages"
17
+ # end
18
+ end
19
+ end
metadata ADDED
@@ -0,0 +1,93 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: radiant-vcard_part-extension
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Benny Degezelle
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-07-04 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: Adds a vCardPagePart type. Requires radiant-page_parts-extension.
23
+ email:
24
+ - hi@mokeypatch.be
25
+ executables: []
26
+
27
+ extensions: []
28
+
29
+ extra_rdoc_files: []
30
+
31
+ files:
32
+ - app/models/vcard.rb
33
+ - app/models/vcard_page_part.rb
34
+ - app/views/admin/page_parts/_vcard_page_part.html.haml
35
+ - config/initializers/radiant_config.rb
36
+ - config/locales/en.yml
37
+ - config/locales/nl.yml
38
+ - config/routes.rb
39
+ - cucumber.yml
40
+ - db/migrate/20110703153748_create_vcards.rb
41
+ - features/support/env.rb
42
+ - features/support/paths.rb
43
+ - lib/radiant-vcard_part-extension/version.rb
44
+ - lib/radiant-vcard_part-extension.rb
45
+ - lib/tasks/vcard_part_extension_tasks.rake
46
+ - lib/vcard_part_extension/page_extensions.rb
47
+ - radiant-vcard_part-extension.gemspec
48
+ - Rakefile
49
+ - README
50
+ - spec/models/vcard_spec.rb
51
+ - spec/spec.opts
52
+ - spec/spec_helper.rb
53
+ - vcard_part_extension.rb
54
+ has_rdoc: true
55
+ homepage: https://github.com/jomz/radiant-vcard_part-extension
56
+ licenses: []
57
+
58
+ post_install_message: "\n Add this to your radiant project with:\n config.gem 'radiant-vcard_part-extension', :version => '~>1.0.0'\n "
59
+ rdoc_options: []
60
+
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ hash: 3
69
+ segments:
70
+ - 0
71
+ version: "0"
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ hash: 3
78
+ segments:
79
+ - 0
80
+ version: "0"
81
+ requirements: []
82
+
83
+ rubyforge_project:
84
+ rubygems_version: 1.6.2
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: Vcard Part for Radiant CMS
88
+ test_files:
89
+ - spec/models/vcard_spec.rb
90
+ - spec/spec.opts
91
+ - spec/spec_helper.rb
92
+ - features/support/env.rb
93
+ - features/support/paths.rb