visit_card 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +31 -0
  5. data/Rakefile +46 -0
  6. data/VERSION +1 -0
  7. data/app/controllers/vcards_controller.rb +3 -0
  8. data/app/helpers/vcards_helper.rb +3 -0
  9. data/app/models/vcard.rb +3 -0
  10. data/app/models/vcard_adr.rb +3 -0
  11. data/app/models/vcard_categorization.rb +3 -0
  12. data/app/models/vcard_dictionary.rb +3 -0
  13. data/app/models/vcard_email.rb +3 -0
  14. data/app/models/vcard_tel.rb +3 -0
  15. data/app/views/visit_card/vcard_adrs/_form_fields.html.erb +38 -0
  16. data/app/views/visit_card/vcard_emails/_form_fields.html.erb +14 -0
  17. data/app/views/visit_card/vcard_tels/_form_fields.html.erb +14 -0
  18. data/app/views/visit_card/vcards/_form.html.erb +115 -0
  19. data/app/views/visit_card/vcards/_hcard.html.erb +1 -0
  20. data/app/views/visit_card/vcards/_static.html +39 -0
  21. data/app/views/visit_card/vcards/edit.html.erb +7 -0
  22. data/app/views/visit_card/vcards/index.html.erb +20 -0
  23. data/app/views/visit_card/vcards/new.html.erb +7 -0
  24. data/app/views/visit_card/vcards/show.html.erb +7 -0
  25. data/config/routes.rb +3 -0
  26. data/lib/generators/visit_card/vcard/templates/migration.rb +94 -0
  27. data/lib/generators/visit_card/vcard/templates/seeds.rb +14 -0
  28. data/lib/generators/visit_card/vcard/vcard_generator.rb +83 -0
  29. data/lib/generators/visit_card/views/views_generator.rb +63 -0
  30. data/lib/visit_card/controllers/vcards_controller.rb +65 -0
  31. data/lib/visit_card/helpers/vcards_helper.rb +66 -0
  32. data/lib/visit_card/models/vcard.rb +57 -0
  33. data/lib/visit_card/models/vcard_adr.rb +20 -0
  34. data/lib/visit_card/models/vcard_categorization.rb +18 -0
  35. data/lib/visit_card/models/vcard_dictionary.rb +25 -0
  36. data/lib/visit_card/models/vcard_email.rb +21 -0
  37. data/lib/visit_card/models/vcard_tel.rb +21 -0
  38. data/lib/visit_card.rb +33 -0
  39. data/spec/spec.opts +1 -0
  40. data/spec/spec_helper.rb +9 -0
  41. data/spec/visit_card_spec.rb +7 -0
  42. data/visit_card.gemspec +89 -0
  43. metadata +141 -0
@@ -0,0 +1,63 @@
1
+ module VisitCard
2
+ module Generators
3
+ class ViewsGenerator < Rails::Generators::Base
4
+ source_root File.expand_path("../../../../../app/views", __FILE__)
5
+ desc "Copies all Vcard views to your application."
6
+
7
+ argument :scope, :required => false, :default => nil,
8
+ :desc => "The scope to copy views to"
9
+
10
+ class_option :template_engine, :type => :string, :aliases => "-t", :default => "erb",
11
+ :desc => "Template engine for the views. Available options are 'erb' and 'haml'."
12
+
13
+ def copy_views
14
+ case options[:template_engine]
15
+ when "haml"
16
+ verify_haml_existence
17
+ verify_haml_version
18
+ create_and_copy_haml_views
19
+ else
20
+ directory "vcards", "app/views/#{scope || :vcards}"
21
+ end
22
+ end
23
+
24
+ protected
25
+
26
+ def verify_haml_existence
27
+ begin
28
+ require 'haml'
29
+ rescue LoadError
30
+ say "HAML is not installed, or it is not specified in your Gemfile."
31
+ exit
32
+ end
33
+ end
34
+
35
+ def verify_haml_version
36
+ unless Haml.version[:major] == 2 and Haml.version[:minor] >= 3 or Haml.version[:major] >= 3
37
+ say "To generate HAML templates, you need to install HAML 2.3 or above."
38
+ exit
39
+ end
40
+ end
41
+
42
+ def create_and_copy_haml_views
43
+ require 'tmpdir'
44
+ html_root = "#{self.class.source_root}/vcard"
45
+
46
+ Dir.mktmpdir("vcard-haml.") do |haml_root|
47
+ Dir["#{html_root}/**/*"].each do |path|
48
+ relative_path = path.sub(html_root, "")
49
+ source_path = (haml_root + relative_path).sub(/erb$/, "haml")
50
+
51
+ if File.directory?(path)
52
+ FileUtils.mkdir_p(source_path)
53
+ else
54
+ `html2haml -r #{path} #{source_path}`
55
+ end
56
+ end
57
+
58
+ directory haml_root, "app/views/#{scope || :vcard}"
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,65 @@
1
+ module VisitCard
2
+ module Controllers
3
+ module VcardsController
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ respond_to :html
8
+ end
9
+
10
+ module InstanceMethods
11
+ def index
12
+ @vcards ||= Vcard.all
13
+ respond_with(@vcards)
14
+ end
15
+
16
+ def show
17
+ @vcard ||= Vcard.find(params[:id])
18
+ respond_with(@vcards)
19
+ end
20
+
21
+ def new
22
+ @vcard ||= Vcard.new
23
+ build_relations
24
+ respond_with(@vcard)
25
+ end
26
+
27
+ def edit
28
+ @vcard ||= Vcard.find(params[:id])
29
+ build_relations
30
+ respond_with(@vcard)
31
+ end
32
+
33
+ def create
34
+ @vcard ||= Vcard.new(params[:vcard])
35
+ build_relations unless @vcard.save
36
+ respond_with(@vcard)
37
+ end
38
+
39
+ def update
40
+ @vcard ||= Vcard.find(params[:id])
41
+ build_relations unless @vcard.update_attributes(params[:vcard])
42
+ respond_with(@vcard)
43
+ end
44
+
45
+ def destroy
46
+ @vcard ||= Vcard.find(params[:id])
47
+ @vcard.destroy
48
+ respond_with(@vcard)
49
+ end
50
+
51
+ private
52
+
53
+ def build_relations
54
+ @vcard.vcard_adrs.build if @vcard.vcard_adrs.empty?
55
+ @vcard.vcard_tels.build if @vcard.vcard_tels.empty?
56
+ @vcard.vcard_emails.build if @vcard.vcard_emails.empty?
57
+ @vcard.vcard_extensions.build if @vcard.vcard_extensions.empty?
58
+ end
59
+ end
60
+
61
+ module ClassMethods
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,66 @@
1
+ # if using gem russian or something what replace original to_label_tag then you need re-replace this method back by yourself
2
+ module VisitCard
3
+ module Helpers
4
+ module VcardsHelper
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ ActionView::Helpers::FormBuilder.send :include, VcardsHelper::FormBuilder
9
+ ActionView::Helpers::InstanceTag.send :include, VcardsHelper::InstanceTag
10
+ end
11
+
12
+ module FormBuilder
13
+ def check_box_collection(method, collection, options = {})
14
+ output = "<fieldset class='#{method.to_s.downcase}'><legend>#{method.to_s.humanize}</legend>"
15
+ if collection.is_a? Array # array collection - hbtm through bit mask
16
+ collection.each do |value|
17
+ options.delete(:id)
18
+ output << check_box_collection_check_box(method, value, options) << "\n"
19
+ output << label(method, value.humanize, :value => value.downcase) << "\n"
20
+ end
21
+ output << check_box_collection_hidden_field(method)
22
+ else # hash collection - hbtm through join table
23
+ collection.each do |key, value|
24
+ options[:id] = "#{object_name}_#{method}_#{value}"
25
+ output << check_box_collection_check_box(method, key, options) << "\n"
26
+ output << label(method, value.humanize, :value => value.downcase) << "\n"
27
+ end
28
+ end
29
+ output << '</fieldset>'
30
+ output.html_safe
31
+ end
32
+
33
+ def check_box_collection_check_box(method, value, options = {})
34
+ if options[:id] # hbtm through join table
35
+ name = "#{object_name}[#{method.to_s.singularize}_ids][]"
36
+ checked = object.send(:"#{method.to_s.singularize}_ids").include?(value)
37
+ else # hbtm through bit mask
38
+ name = "#{object_name}[#{method}][]"
39
+ checked = object.send("#{method}?", value)
40
+ end
41
+ ActionView::Helpers::InstanceTag.new(object_name, method, self, options.delete(:object)).
42
+ to_check_box_collection_check_box_tag(name, value, checked, options)
43
+ end
44
+
45
+ def check_box_collection_hidden_field(method, options = {})
46
+ options[:name] ||= "#{object_name}[#{method}][]"
47
+ ActionView::Helpers::InstanceTag.new(object_name, method, self, options.delete(:object)).to_input_field_tag("hidden", options)
48
+ end
49
+ end
50
+
51
+ module InstanceTag
52
+ def to_check_box_collection_check_box_tag(name, value, checked, options)
53
+ options[:id] ||= name.dup << value.to_s
54
+ options[:id] = sanitize_to_id(options[:id])
55
+ check_box_tag name, value, checked, options
56
+ end
57
+ end
58
+
59
+ module InstanceMethods
60
+ end
61
+
62
+ module ClassMethods
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,57 @@
1
+ module VisitCard
2
+ module Models
3
+ module Vcard
4
+ extend ActiveSupport::Concern
5
+
6
+ VCARD_KLASSES = %w{public private confidential}
7
+ VCARD_NESTED_ATTRIBUTES_REJECT_IF = lambda {|a| a.reject{|k,v| k.include?('types') || k.include?('_id')}.all? {|_, v| v.blank?}}
8
+
9
+ included do
10
+ has_many :vcard_adrs, :dependent => :destroy
11
+ has_many :vcard_emails, :dependent => :destroy
12
+ has_many :vcard_tels, :dependent => :destroy
13
+ has_many :vcard_categorizations, :dependent => :destroy
14
+ has_many :vcard_categories, :class_name => 'VcardDictionary', :through => :vcard_categorizations
15
+ has_many :vcard_extensions, :dependent => :destroy
16
+ belongs_to :agent, :class_name => 'Vcard', :foreign_key => 'agent_id'
17
+
18
+ validates :family_name, :given_name, :presence => true
19
+ validates_numericality_of :latitude, :longitude, :allow_nil => true
20
+ validates_format_of :photo, :logo, :url, :with => URI::regexp(%w{http https}), :allow_blank => true, :allow_nil => true
21
+
22
+ # Setup accessible (or protected) attributes for your model
23
+ # attr_accessible :given_name, :last_name, :additional_name
24
+
25
+ scope :except, lambda {|id| id.blank? ? where('1 = 1') : where('id <> ?', (::Vcard.find(id).id rescue 0))} # for slugs support
26
+ # scope :excepts, lambda {|*ids| ids.compact.blank? ? where('1 = 1') : where('id NOT IN(?)', ids.join(','))}
27
+
28
+ accepts_nested_attributes_for :vcard_adrs, :vcard_tels, :vcard_emails, :vcard_extensions,
29
+ :reject_if => VCARD_NESTED_ATTRIBUTES_REJECT_IF, :allow_destroy => true
30
+ end
31
+
32
+ module InstanceMethods
33
+ def fn
34
+ "#{honorific_prefix} #{given_name} #{additional_name ? additional_name << ' ': ''}#{family_name} #{honorific_suffix}".strip
35
+ end
36
+
37
+ def n
38
+ "#{family_name};#{given_name};#{additional_name};#{honorific_prefix};#{honorific_suffix}"
39
+ end
40
+
41
+ def fga
42
+ "#{family_name} #{given_name} #{additional_name}".strip
43
+ end
44
+
45
+ # TODO move to separate builder class
46
+ def to_hcard
47
+ out = ''
48
+ out << (url? ? "<a href='#{url}' class='fn url'>#{fn}</a>" : "<span class='fn'>#{fn}</span>")
49
+ out.html_safe
50
+ end
51
+ end
52
+
53
+ module ClassMethods
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,20 @@
1
+ module VisitCard
2
+ module Models
3
+ module VcardAdr
4
+ extend ActiveSupport::Concern
5
+
6
+ TYPES = %w{dom intl postal parcel home work pref}
7
+
8
+ included do
9
+ belongs_to :vcard
10
+ bitmask :types, :as => TYPES
11
+ end
12
+
13
+ module InstanceMethods
14
+ end
15
+
16
+ module ClassMethods
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ module VisitCard
2
+ module Models
3
+ module VcardCategorization
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ belongs_to :vcard
8
+ belongs_to :vcard_category, :class_name => 'VcardDictionary', :foreign_key => :vcard_dictionary_id
9
+ end
10
+
11
+ module InstanceMethods
12
+ end
13
+
14
+ module ClassMethods
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,25 @@
1
+ module VisitCard
2
+ module Models
3
+ module VcardDictionary
4
+ extend ActiveSupport::Concern
5
+
6
+ KLASSES = %w{category extension_type}
7
+
8
+ included do
9
+ validates :klass, :name, :presence => true
10
+ validates_uniqueness_of :name, :scope => :klass
11
+
12
+ scope :ordered, order('name ASC')
13
+ scope :categories, where(:klass => 'category')
14
+ scope :extension_types, where(:klass => 'extension_type')
15
+ default_scope ordered
16
+ end
17
+
18
+ module InstanceMethods
19
+ end
20
+
21
+ module ClassMethods
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ module VisitCard
2
+ module Models
3
+ module VcardEmail
4
+ extend ActiveSupport::Concern
5
+
6
+ TYPES = %w{internet x400 pref}
7
+
8
+ included do
9
+ belongs_to :vcard
10
+ validates_format_of :value, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :allow_blank => true, :allow_nil => true
11
+ bitmask :types, :as => TYPES
12
+ end
13
+
14
+ module InstanceMethods
15
+ end
16
+
17
+ module ClassMethods
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module VisitCard
2
+ module Models
3
+ module VcardTel
4
+ extend ActiveSupport::Concern
5
+
6
+ TYPES = %w{home msg work pref voice fax cell video pager bbs modem car isdn pcs}
7
+
8
+ included do
9
+ belongs_to :vcard
10
+ # TODO phone format parse and validate
11
+ bitmask :types, :as => TYPES
12
+ end
13
+
14
+ module InstanceMethods
15
+ end
16
+
17
+ module ClassMethods
18
+ end
19
+ end
20
+ end
21
+ end
data/lib/visit_card.rb ADDED
@@ -0,0 +1,33 @@
1
+ require 'bitmask-attribute'
2
+
3
+ module VisitCard
4
+ VCARD_VERSION = '3.0'
5
+
6
+ module Models
7
+ extend ActiveSupport::Autoload
8
+
9
+ autoload :Vcard
10
+ autoload :VcardAdr
11
+ autoload :VcardCategorization
12
+ autoload :VcardDictionary
13
+ autoload :VcardEmail
14
+ autoload :VcardExtension
15
+ autoload :VcardTel
16
+ end
17
+
18
+ module Controllers
19
+ extend ActiveSupport::Autoload
20
+
21
+ autoload :VcardsController
22
+ end
23
+
24
+ module Helpers
25
+ extend ActiveSupport::Autoload
26
+
27
+ autoload :VcardsHelper
28
+ end
29
+
30
+ class Engine < Rails::Engine
31
+ paths.app.views = 'app/views/visit_card'
32
+ end
33
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'visit_card'
4
+ require 'spec'
5
+ require 'spec/autorun'
6
+
7
+ Spec::Runner.configure do |config|
8
+
9
+ end
@@ -0,0 +1,7 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "VisitCard" do
4
+ it "fails" do
5
+ fail "hey buddy, you should probably rename this file and start specing for real"
6
+ end
7
+ end
@@ -0,0 +1,89 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{visit_card}
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Pavel Chipiga"]
12
+ s.date = %q{2010-07-02}
13
+ s.description = %q{Rails 3 engines plugin for VCard store and managment}
14
+ s.email = %q{pavel.chipiga@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "app/controllers/vcards_controller.rb",
27
+ "app/helpers/vcards_helper.rb",
28
+ "app/models/vcard.rb",
29
+ "app/models/vcard_adr.rb",
30
+ "app/models/vcard_categorization.rb",
31
+ "app/models/vcard_dictionary.rb",
32
+ "app/models/vcard_email.rb",
33
+ "app/models/vcard_tel.rb",
34
+ "app/views/visit_card/vcard_adrs/_form_fields.html.erb",
35
+ "app/views/visit_card/vcard_emails/_form_fields.html.erb",
36
+ "app/views/visit_card/vcard_tels/_form_fields.html.erb",
37
+ "app/views/visit_card/vcards/_form.html.erb",
38
+ "app/views/visit_card/vcards/_hcard.html.erb",
39
+ "app/views/visit_card/vcards/_static.html",
40
+ "app/views/visit_card/vcards/edit.html.erb",
41
+ "app/views/visit_card/vcards/index.html.erb",
42
+ "app/views/visit_card/vcards/new.html.erb",
43
+ "app/views/visit_card/vcards/show.html.erb",
44
+ "config/routes.rb",
45
+ "lib/generators/visit_card/vcard/templates/migration.rb",
46
+ "lib/generators/visit_card/vcard/templates/seeds.rb",
47
+ "lib/generators/visit_card/vcard/vcard_generator.rb",
48
+ "lib/generators/visit_card/views/views_generator.rb",
49
+ "lib/visit_card.rb",
50
+ "lib/visit_card/controllers/vcards_controller.rb",
51
+ "lib/visit_card/helpers/vcards_helper.rb",
52
+ "lib/visit_card/models/vcard.rb",
53
+ "lib/visit_card/models/vcard_adr.rb",
54
+ "lib/visit_card/models/vcard_categorization.rb",
55
+ "lib/visit_card/models/vcard_dictionary.rb",
56
+ "lib/visit_card/models/vcard_email.rb",
57
+ "lib/visit_card/models/vcard_tel.rb",
58
+ "spec/spec.opts",
59
+ "spec/spec_helper.rb",
60
+ "spec/visit_card_spec.rb",
61
+ "visit_card.gemspec"
62
+ ]
63
+ s.homepage = %q{http://github.com/chipiga/visit_card}
64
+ s.rdoc_options = ["--charset=UTF-8"]
65
+ s.require_paths = ["lib"]
66
+ s.rubygems_version = %q{1.3.7}
67
+ s.summary = %q{VCard implementation for Rails 3}
68
+ s.test_files = [
69
+ "spec/spec_helper.rb",
70
+ "spec/visit_card_spec.rb"
71
+ ]
72
+
73
+ if s.respond_to? :specification_version then
74
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
75
+ s.specification_version = 3
76
+
77
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
78
+ s.add_runtime_dependency(%q<bitmask-attribute>, [">= 1.2.0"])
79
+ s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
80
+ else
81
+ s.add_dependency(%q<bitmask-attribute>, [">= 1.2.0"])
82
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
83
+ end
84
+ else
85
+ s.add_dependency(%q<bitmask-attribute>, [">= 1.2.0"])
86
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
87
+ end
88
+ end
89
+
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: visit_card
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Pavel Chipiga
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-07-02 00:00:00 +03:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: bitmask-attribute
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 31
30
+ segments:
31
+ - 1
32
+ - 2
33
+ - 0
34
+ version: 1.2.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rspec
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 13
46
+ segments:
47
+ - 1
48
+ - 2
49
+ - 9
50
+ version: 1.2.9
51
+ type: :development
52
+ version_requirements: *id002
53
+ description: Rails 3 engines plugin for VCard store and managment
54
+ email: pavel.chipiga@gmail.com
55
+ executables: []
56
+
57
+ extensions: []
58
+
59
+ extra_rdoc_files:
60
+ - LICENSE
61
+ - README.rdoc
62
+ files:
63
+ - .document
64
+ - .gitignore
65
+ - LICENSE
66
+ - README.rdoc
67
+ - Rakefile
68
+ - VERSION
69
+ - app/controllers/vcards_controller.rb
70
+ - app/helpers/vcards_helper.rb
71
+ - app/models/vcard.rb
72
+ - app/models/vcard_adr.rb
73
+ - app/models/vcard_categorization.rb
74
+ - app/models/vcard_dictionary.rb
75
+ - app/models/vcard_email.rb
76
+ - app/models/vcard_tel.rb
77
+ - app/views/visit_card/vcard_adrs/_form_fields.html.erb
78
+ - app/views/visit_card/vcard_emails/_form_fields.html.erb
79
+ - app/views/visit_card/vcard_tels/_form_fields.html.erb
80
+ - app/views/visit_card/vcards/_form.html.erb
81
+ - app/views/visit_card/vcards/_hcard.html.erb
82
+ - app/views/visit_card/vcards/_static.html
83
+ - app/views/visit_card/vcards/edit.html.erb
84
+ - app/views/visit_card/vcards/index.html.erb
85
+ - app/views/visit_card/vcards/new.html.erb
86
+ - app/views/visit_card/vcards/show.html.erb
87
+ - config/routes.rb
88
+ - lib/generators/visit_card/vcard/templates/migration.rb
89
+ - lib/generators/visit_card/vcard/templates/seeds.rb
90
+ - lib/generators/visit_card/vcard/vcard_generator.rb
91
+ - lib/generators/visit_card/views/views_generator.rb
92
+ - lib/visit_card.rb
93
+ - lib/visit_card/controllers/vcards_controller.rb
94
+ - lib/visit_card/helpers/vcards_helper.rb
95
+ - lib/visit_card/models/vcard.rb
96
+ - lib/visit_card/models/vcard_adr.rb
97
+ - lib/visit_card/models/vcard_categorization.rb
98
+ - lib/visit_card/models/vcard_dictionary.rb
99
+ - lib/visit_card/models/vcard_email.rb
100
+ - lib/visit_card/models/vcard_tel.rb
101
+ - spec/spec.opts
102
+ - spec/spec_helper.rb
103
+ - spec/visit_card_spec.rb
104
+ - visit_card.gemspec
105
+ has_rdoc: true
106
+ homepage: http://github.com/chipiga/visit_card
107
+ licenses: []
108
+
109
+ post_install_message:
110
+ rdoc_options:
111
+ - --charset=UTF-8
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ hash: 3
120
+ segments:
121
+ - 0
122
+ version: "0"
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ hash: 3
129
+ segments:
130
+ - 0
131
+ version: "0"
132
+ requirements: []
133
+
134
+ rubyforge_project:
135
+ rubygems_version: 1.3.7
136
+ signing_key:
137
+ specification_version: 3
138
+ summary: VCard implementation for Rails 3
139
+ test_files:
140
+ - spec/spec_helper.rb
141
+ - spec/visit_card_spec.rb