visit_card 0.0.1 → 0.1.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.rdoc +10 -2
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/app/models/vcard_extension.rb +3 -0
- data/app/views/visit_card/vcard_adrs/_form_fields.html.erb +3 -2
- data/app/views/visit_card/vcard_emails/_form_fields.html.erb +1 -1
- data/app/views/visit_card/vcard_extensions/_form_fields.html.erb +18 -0
- data/app/views/visit_card/vcard_tels/_form_fields.html.erb +1 -1
- data/app/views/visit_card/vcards/_form.html.erb +27 -3
- data/app/views/visit_card/vcards/index.html.erb +0 -2
- data/lib/generators/visit_card/vcard/templates/migration.rb +7 -1
- data/lib/visit_card/models/vcard.rb +89 -8
- data/lib/visit_card/models/vcard_adr.rb +25 -3
- data/lib/visit_card/models/vcard_dictionary.rb +0 -2
- data/lib/visit_card/models/vcard_email.rb +9 -3
- data/lib/visit_card/models/vcard_extension.rb +20 -0
- data/lib/visit_card/models/vcard_tel.rb +16 -4
- data/lib/visit_card.rb +15 -0
- data/visit_card.gemspec +8 -5
- metadata +11 -8
data/README.rdoc
CHANGED
@@ -4,12 +4,20 @@ Manage visit cards in your app.
|
|
4
4
|
VCard standart (RFC 2426) realization through Rails 3 Engines.
|
5
5
|
Supports export to hCard microformat.
|
6
6
|
|
7
|
+
If you want parse telephone format add phone gem (http://github.com/carr/phone) to your Gemfile:
|
8
|
+
gem 'phone'
|
9
|
+
|
10
|
+
Then setup at config/initializers/phone.rb. For example:
|
11
|
+
Phone.default_country_code = '380'
|
12
|
+
Phone.default_area_code = '57'
|
13
|
+
Phone.named_formats[:ua] = '+%c-%a-%f-%l'
|
14
|
+
|
15
|
+
If you want choose country through select box install country_select plugin.
|
16
|
+
|
7
17
|
== TODO
|
8
18
|
* Move out styles and javascript from views.
|
9
19
|
* Improve hCard microformat export. Move to Builder.
|
10
20
|
* Add I18n support.
|
11
|
-
* Add localized_country_select plugin support.
|
12
|
-
* Add phone gem support.
|
13
21
|
* Import/Export VCard.
|
14
22
|
* Test suite.
|
15
23
|
* Improve Generators. Add seeds generator.
|
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ begin
|
|
10
10
|
gem.email = "pavel.chipiga@gmail.com"
|
11
11
|
gem.homepage = "http://github.com/chipiga/visit_card"
|
12
12
|
gem.authors = ["Pavel Chipiga"]
|
13
|
-
gem.add_dependency "bitmask-attribute", ">=
|
13
|
+
gem.add_dependency "clean-bitmask-attribute", ">= 2.0.0"
|
14
14
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
15
15
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
16
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<legend>Address</legend>
|
3
3
|
<ol>
|
4
4
|
<li class="field">
|
5
|
-
<%= ff.check_box_collection :types,
|
5
|
+
<%= ff.check_box_collection :types, VisitCard.adr_types %>
|
6
6
|
</li>
|
7
7
|
<li class="field">
|
8
8
|
<%= ff.label :post_office_box %>
|
@@ -30,7 +30,8 @@
|
|
30
30
|
</li>
|
31
31
|
<li class="field">
|
32
32
|
<%= ff.label :country_name %>
|
33
|
-
<%= ff.
|
33
|
+
<%= ff.respond_to?(:country_select) ? ff.country_select(:country_name, [], :include_blank => true) : ff.text_field(:country_name)
|
34
|
+
%>
|
34
35
|
</li>
|
35
36
|
</ol>
|
36
37
|
<%= ff.hidden_field :_destroy, :value => '' %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<fieldset class="inputs extension">
|
2
|
+
<legend>Extension</legend>
|
3
|
+
<ol>
|
4
|
+
<li class="field">
|
5
|
+
<%= ff.check_box_collection :types, VisitCard.extension_types %>
|
6
|
+
</li>
|
7
|
+
<li class="field">
|
8
|
+
<%= ff.label :vcard_extension_type %>
|
9
|
+
<%= ff.select :vcard_dictionary_id, VcardDictionary.extension_types.map{|e| [e.name, e.id]} %>
|
10
|
+
</li>
|
11
|
+
<li class="field">
|
12
|
+
<%= ff.label :value %>
|
13
|
+
<%= ff.text_field :value %>
|
14
|
+
</li>
|
15
|
+
</ol>
|
16
|
+
<%= ff.hidden_field :_destroy, :value => '' %>
|
17
|
+
<a href='#' class='remove'>Remove</a>
|
18
|
+
</fieldset>
|
@@ -46,6 +46,10 @@
|
|
46
46
|
<%= f.date_select :bday, :start_year => Time.now.year - 80, :end_year => Time.now.year, :include_blank => true %>
|
47
47
|
</li>
|
48
48
|
|
49
|
+
<li class="field">
|
50
|
+
<%= f.label :mailer %>
|
51
|
+
<%= f.text_field :mailer %>
|
52
|
+
</li>
|
49
53
|
<li class="field">
|
50
54
|
<%= f.label :tz %>
|
51
55
|
<%= f.time_zone_select :tz, nil, :include_blank => true %>
|
@@ -74,9 +78,13 @@
|
|
74
78
|
<%= f.label :agent %>
|
75
79
|
<%= f.select :agent_id, Vcard.except(params[:id]).collect {|v| [ v.fn, v.id ] }, :include_blank => true %>
|
76
80
|
</li>
|
81
|
+
<li class="field required">
|
82
|
+
<%= f.label :organization_name %>
|
83
|
+
<%= f.text_field :organization_name %>
|
84
|
+
</li>
|
77
85
|
<li class="field">
|
78
|
-
<%= f.label :
|
79
|
-
<%= f.text_field :
|
86
|
+
<%= f.label :organization_unit %>
|
87
|
+
<%= f.text_field :organization_unit %>
|
80
88
|
</li>
|
81
89
|
<li class="field">
|
82
90
|
<%= f.check_box_collection :vcard_categories, Hash[ *VcardDictionary.categories.collect { |d| [ d.id, d.name ] }.flatten ] %>
|
@@ -85,13 +93,29 @@
|
|
85
93
|
<%= f.label :note %>
|
86
94
|
<%= f.text_area :note %>
|
87
95
|
</li>
|
96
|
+
<li class="field">
|
97
|
+
<%= f.label :sort_string %>
|
98
|
+
<%= f.text_field :sort_string %>
|
99
|
+
</li>
|
100
|
+
<li class="field">
|
101
|
+
<%= f.label :sound %>
|
102
|
+
<%= f.text_field :sound %>
|
103
|
+
</li>
|
104
|
+
<li class="field">
|
105
|
+
<%= f.label :uid %>
|
106
|
+
<%= f.text_field :uid %>
|
107
|
+
</li>
|
88
108
|
<li class="field">
|
89
109
|
<%= f.label :url %>
|
90
110
|
<%= f.url_field :url %>
|
91
111
|
</li>
|
92
112
|
<li class="field">
|
93
113
|
<%= f.label :klass %>
|
94
|
-
<%= f.select :klass,
|
114
|
+
<%= f.select :klass, VisitCard.klasses %>
|
115
|
+
</li>
|
116
|
+
<li class="field">
|
117
|
+
<%= f.label :key %>
|
118
|
+
<%= f.text_field :key %>
|
95
119
|
</li>
|
96
120
|
|
97
121
|
<% %w{adrs tels emails extensions}.each do |item| %>
|
@@ -3,13 +3,11 @@
|
|
3
3
|
<table>
|
4
4
|
<tr>
|
5
5
|
<th>FN</th>
|
6
|
-
<th>ORG</th>
|
7
6
|
<th>Action</th>
|
8
7
|
</tr>
|
9
8
|
<% @vcards.each do |vcard| %>
|
10
9
|
<tr>
|
11
10
|
<td><%= link_to(vcard.fga, vcard) %></td>
|
12
|
-
<td><%= vcard.org %></td>
|
13
11
|
<td><%= link_to 'Edit', edit_vcard_path(vcard) %> | <%= link_to 'Destroy', vcard, :confirm => 'Are you sure?', :method => :delete %></td>
|
14
12
|
</tr>
|
15
13
|
<% end %>
|
@@ -13,16 +13,22 @@ class Create<%= table_name.camelize %>Tables < ActiveRecord::Migration
|
|
13
13
|
t.string :nickname
|
14
14
|
t.text :photo
|
15
15
|
t.date :bday
|
16
|
+
t.string :mailer
|
16
17
|
t.string :tz
|
17
18
|
t.float :latitude
|
18
19
|
t.float :longitude
|
19
20
|
t.string :title
|
20
21
|
t.string :role
|
21
22
|
t.text :logo
|
22
|
-
t.string :
|
23
|
+
t.string :organization_name
|
24
|
+
t.string :organization_unit
|
23
25
|
t.text :note
|
26
|
+
t.string :sort_string
|
27
|
+
t.text :sound
|
28
|
+
t.string :uid
|
24
29
|
t.string :url
|
25
30
|
t.string :klass
|
31
|
+
t.text :key
|
26
32
|
|
27
33
|
t.timestamps
|
28
34
|
end
|
@@ -3,7 +3,6 @@ module VisitCard
|
|
3
3
|
module Vcard
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
VCARD_KLASSES = %w{public private confidential}
|
7
6
|
VCARD_NESTED_ATTRIBUTES_REJECT_IF = lambda {|a| a.reject{|k,v| k.include?('types') || k.include?('_id')}.all? {|_, v| v.blank?}}
|
8
7
|
|
9
8
|
included do
|
@@ -15,7 +14,7 @@ module VisitCard
|
|
15
14
|
has_many :vcard_extensions, :dependent => :destroy
|
16
15
|
belongs_to :agent, :class_name => 'Vcard', :foreign_key => 'agent_id'
|
17
16
|
|
18
|
-
validates :family_name, :given_name, :presence => true
|
17
|
+
validate :validates_fn # validates :family_name, :given_name, :presence => true
|
19
18
|
validates_numericality_of :latitude, :longitude, :allow_nil => true
|
20
19
|
validates_format_of :photo, :logo, :url, :with => URI::regexp(%w{http https}), :allow_blank => true, :allow_nil => true
|
21
20
|
|
@@ -24,6 +23,7 @@ module VisitCard
|
|
24
23
|
|
25
24
|
scope :except, lambda {|id| id.blank? ? where('1 = 1') : where('id <> ?', (::Vcard.find(id).id rescue 0))} # for slugs support
|
26
25
|
# scope :excepts, lambda {|*ids| ids.compact.blank? ? where('1 = 1') : where('id NOT IN(?)', ids.join(','))}
|
26
|
+
scope :sort_string_asc, order('sort_string ASC')
|
27
27
|
|
28
28
|
accepts_nested_attributes_for :vcard_adrs, :vcard_tels, :vcard_emails, :vcard_extensions,
|
29
29
|
:reject_if => VCARD_NESTED_ATTRIBUTES_REJECT_IF, :allow_destroy => true
|
@@ -31,7 +31,8 @@ module VisitCard
|
|
31
31
|
|
32
32
|
module InstanceMethods
|
33
33
|
def fn
|
34
|
-
"#{honorific_prefix} #{given_name} #{additional_name
|
34
|
+
fn = "#{honorific_prefix} #{given_name} #{additional_name} #{family_name} #{honorific_suffix}".squeeze(' ').strip
|
35
|
+
fn ? fn : org
|
35
36
|
end
|
36
37
|
|
37
38
|
def n
|
@@ -42,11 +43,84 @@ module VisitCard
|
|
42
43
|
"#{family_name} #{given_name} #{additional_name}".strip
|
43
44
|
end
|
44
45
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
46
|
+
def geo
|
47
|
+
result = "#{latitude};#{longitude}"
|
48
|
+
result == ';' ? '' : result
|
49
|
+
end
|
50
|
+
|
51
|
+
def label
|
52
|
+
"#{fn}\n#{vcard_adrs.first.adr.squeeze(';').gsub(';','\n')}".strip
|
53
|
+
end
|
54
|
+
|
55
|
+
def org
|
56
|
+
organization_unit? ? "#{organization_name};#{organization_unit}" : organization_name
|
57
|
+
end
|
58
|
+
|
59
|
+
# TODO support two variants of category store - through habtm & simple string
|
60
|
+
# def category
|
61
|
+
# end
|
62
|
+
|
63
|
+
def rev
|
64
|
+
updated_at
|
65
|
+
end
|
66
|
+
|
67
|
+
# TODO refactor! template?
|
68
|
+
# TODO separate and improve geo, org
|
69
|
+
# TODO add photo, logo, tz, category, extensions
|
70
|
+
def to_hcard(options = {}, &block)
|
71
|
+
result = []
|
72
|
+
clasess = ['fn']
|
73
|
+
clasess << 'org' if org == fn
|
74
|
+
if url?
|
75
|
+
clasess << 'url'
|
76
|
+
result << "<a class='#{clasess.join(' ')}' href='#{url}'>#{fn}</a>"
|
77
|
+
else
|
78
|
+
result << "<span class='#{clasess.join(' ')}'>#{fn}</span>"
|
79
|
+
end
|
80
|
+
result << "(<span class='nickname'>#{nickname}</span>)" if nickname?
|
81
|
+
result << "<abbr class='bday' title='#{bday.to_s}'>#{I18n.l(bday, :format => :long)}</abbr>" if bday?
|
82
|
+
result << "<span class='title'>#{title}</span>" if title?
|
83
|
+
result << "<span class='role'>#{role}</span>" if role?
|
84
|
+
result << "<span class='org'>#{org}</span>" if org.present? && org != fn
|
85
|
+
vcard_adrs.each do |adr|
|
86
|
+
result << adr.to_hcard
|
87
|
+
end
|
88
|
+
result << "<abbr class='geo' title='#{geo}'>Location</abbr>" if geo.present?
|
89
|
+
# result << "<span class='geo'><abbr class='latitude' title='#{latitude}'>N 48° 81.6667</abbr><abbr class='longitude' title='2.366667'>E 2° 36.6667</abbr></span>" if geo.present?
|
90
|
+
vcard_tels.each do |tel|
|
91
|
+
result << tel.to_hcard
|
92
|
+
end
|
93
|
+
vcard_emails.each do |email|
|
94
|
+
result << email.to_hcard
|
95
|
+
end
|
96
|
+
# result.compact!
|
97
|
+
result << agent.to_hcard if agent_id? # TODO add agent class?
|
98
|
+
main_tag_name = options.fetch(:main_tag_name, 'div')
|
99
|
+
("<#{main_tag_name} class='vcard'>" << result.join(' ') << "</#{main_tag_name}>").html_safe
|
100
|
+
end
|
101
|
+
|
102
|
+
# TODO proxy to parser
|
103
|
+
def from_hcard()
|
104
|
+
end
|
105
|
+
|
106
|
+
# TODO
|
107
|
+
def to_vcard
|
108
|
+
end
|
109
|
+
|
110
|
+
# TODO
|
111
|
+
def from_vcard()
|
112
|
+
end
|
113
|
+
|
114
|
+
protected
|
115
|
+
|
116
|
+
def validates_fn
|
117
|
+
if family_name.blank? && given_name.blank? && additional_name.blank? && honorific_prefix.blank? && honorific_suffix.blank?
|
118
|
+
errors.add(:organization_name) unless organization_name?
|
119
|
+
else
|
120
|
+
errors.add(:family_name) unless family_name?
|
121
|
+
errors.add(:given_name) unless given_name?
|
122
|
+
errors.add(:organization_name) if organization_unit?
|
123
|
+
end
|
50
124
|
end
|
51
125
|
end
|
52
126
|
|
@@ -55,3 +129,10 @@ module VisitCard
|
|
55
129
|
end
|
56
130
|
end
|
57
131
|
end
|
132
|
+
# class String
|
133
|
+
# def wrap_html(tag_name = 'span', options = {})
|
134
|
+
# options[:class] ||= self
|
135
|
+
# options.each{}
|
136
|
+
# "<#{tag_name}>#{self}</#{tag_name}>"
|
137
|
+
# end
|
138
|
+
# end
|
@@ -3,14 +3,36 @@ module VisitCard
|
|
3
3
|
module VcardAdr
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
TYPES = %w{dom intl postal parcel home work pref}
|
7
|
-
|
8
6
|
included do
|
9
7
|
belongs_to :vcard
|
10
|
-
bitmask :types, :as =>
|
8
|
+
bitmask :types, :as => VisitCard.adr_types
|
9
|
+
SERIALZABLE_ATTRIBUTES = %w{post_office_box extended_address street_address locality region postal_code country_name}
|
11
10
|
end
|
12
11
|
|
13
12
|
module InstanceMethods
|
13
|
+
def adr
|
14
|
+
# "#{post_office_box};#{extended_address};#{street_address};#{locality};#{region};#{postal_code};#{country_name}"
|
15
|
+
SERIALZABLE_ATTRIBUTES.join(';')
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_hcard(options = {})
|
19
|
+
result = []
|
20
|
+
result << "<span class='type'>#{types.join(', ').titleize}</span>" unless types.empty?
|
21
|
+
tag_name = options.fetch(:tag_name, 'span')
|
22
|
+
SERIALZABLE_ATTRIBUTES.each do |attr_name|
|
23
|
+
result << wrap_attribute(attr_name, tag_name)
|
24
|
+
end
|
25
|
+
result.compact!
|
26
|
+
main_tag_name = options.fetch(:main_tag_name, 'div')
|
27
|
+
("<#{main_tag_name} class='adr'>" << result.join(' ') << "</#{main_tag_name}>").html_safe
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def wrap_attribute(attr_name, tag_name = 'span')
|
33
|
+
value = send(attr_name.to_sym)
|
34
|
+
value.present? ? "<#{tag_name} class='#{attr_name.gsub('_','-')}'>#{value}</#{tag_name}>" : nil
|
35
|
+
end
|
14
36
|
end
|
15
37
|
|
16
38
|
module ClassMethods
|
@@ -3,15 +3,21 @@ module VisitCard
|
|
3
3
|
module VcardEmail
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
TYPES = %w{internet x400 pref}
|
7
|
-
|
8
6
|
included do
|
9
7
|
belongs_to :vcard
|
10
8
|
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 =>
|
9
|
+
bitmask :types, :as => VisitCard.email_types
|
12
10
|
end
|
13
11
|
|
14
12
|
module InstanceMethods
|
13
|
+
def to_hcard(options = {})
|
14
|
+
result = []
|
15
|
+
result << "<span class='type'>#{types.join(', ').titleize}</span>" unless types.empty?
|
16
|
+
tag_name = options.fetch(:tag_name, 'a')
|
17
|
+
result << "<#{tag_name} class='value' href='mailto:#{value}'>#{value}</#{tag_name}>"
|
18
|
+
main_tag_name = options.fetch(:main_tag_name, 'div')
|
19
|
+
("<#{main_tag_name} class='email'>" << result.join(' ') << "</#{main_tag_name}>").html_safe
|
20
|
+
end
|
15
21
|
end
|
16
22
|
|
17
23
|
module ClassMethods
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module VisitCard
|
2
|
+
module Models
|
3
|
+
module VcardExtension
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
belongs_to :vcard
|
8
|
+
belongs_to :vcard_extension_type, :class_name => 'VcardDictionary'
|
9
|
+
validates :vcard_extension_type, :presence => true
|
10
|
+
bitmask :types, :as => VisitCard.extension_types
|
11
|
+
end
|
12
|
+
|
13
|
+
module InstanceMethods
|
14
|
+
end
|
15
|
+
|
16
|
+
module ClassMethods
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -3,15 +3,27 @@ module VisitCard
|
|
3
3
|
module VcardTel
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
TYPES = %w{home msg work pref voice fax cell video pager bbs modem car isdn pcs}
|
7
|
-
|
8
6
|
included do
|
9
7
|
belongs_to :vcard
|
10
|
-
|
11
|
-
bitmask :types, :as =>
|
8
|
+
before_validation :parse_phone
|
9
|
+
bitmask :types, :as => VisitCard.tel_types
|
12
10
|
end
|
13
11
|
|
14
12
|
module InstanceMethods
|
13
|
+
def to_hcard(options = {})
|
14
|
+
result = []
|
15
|
+
result << "<span class='type'>#{types.join(', ').titleize}</span>" unless types.empty?
|
16
|
+
tag_name = options.fetch(:tag_name, 'span')
|
17
|
+
result << "<#{tag_name} class='value'>#{value}</#{tag_name}>"
|
18
|
+
main_tag_name = options.fetch(:main_tag_name, 'div')
|
19
|
+
("<#{main_tag_name} class='tel'>" << result.join(' ') << "</#{main_tag_name}>").html_safe
|
20
|
+
end
|
21
|
+
|
22
|
+
protected
|
23
|
+
|
24
|
+
def parse_phone
|
25
|
+
self.value = Phone.parse(value).to_s if defined? Phone
|
26
|
+
end
|
15
27
|
end
|
16
28
|
|
17
29
|
module ClassMethods
|
data/lib/visit_card.rb
CHANGED
@@ -3,6 +3,21 @@ require 'bitmask-attribute'
|
|
3
3
|
module VisitCard
|
4
4
|
VCARD_VERSION = '3.0'
|
5
5
|
|
6
|
+
mattr_accessor :klasses
|
7
|
+
@@klasses = %w{public private confidential}
|
8
|
+
|
9
|
+
mattr_accessor :adr_types
|
10
|
+
@@adr_types = %w{dom intl postal parcel home work pref}
|
11
|
+
|
12
|
+
mattr_accessor :email_types
|
13
|
+
@@email_types = %w{internet x400 pref}
|
14
|
+
|
15
|
+
mattr_accessor :extension_types
|
16
|
+
@@extension_types = %w{home msg work pref voice video pager pcs internet other}
|
17
|
+
|
18
|
+
mattr_accessor :tel_types
|
19
|
+
@@tel_types = %w{home msg work pref voice fax cell video pager bbs modem car isdn pcs}
|
20
|
+
|
6
21
|
module Models
|
7
22
|
extend ActiveSupport::Autoload
|
8
23
|
|
data/visit_card.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{visit_card}
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Pavel Chipiga"]
|
12
|
-
s.date = %q{2010-07-
|
12
|
+
s.date = %q{2010-07-06}
|
13
13
|
s.description = %q{Rails 3 engines plugin for VCard store and managment}
|
14
14
|
s.email = %q{pavel.chipiga@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -30,9 +30,11 @@ Gem::Specification.new do |s|
|
|
30
30
|
"app/models/vcard_categorization.rb",
|
31
31
|
"app/models/vcard_dictionary.rb",
|
32
32
|
"app/models/vcard_email.rb",
|
33
|
+
"app/models/vcard_extension.rb",
|
33
34
|
"app/models/vcard_tel.rb",
|
34
35
|
"app/views/visit_card/vcard_adrs/_form_fields.html.erb",
|
35
36
|
"app/views/visit_card/vcard_emails/_form_fields.html.erb",
|
37
|
+
"app/views/visit_card/vcard_extensions/_form_fields.html.erb",
|
36
38
|
"app/views/visit_card/vcard_tels/_form_fields.html.erb",
|
37
39
|
"app/views/visit_card/vcards/_form.html.erb",
|
38
40
|
"app/views/visit_card/vcards/_hcard.html.erb",
|
@@ -54,6 +56,7 @@ Gem::Specification.new do |s|
|
|
54
56
|
"lib/visit_card/models/vcard_categorization.rb",
|
55
57
|
"lib/visit_card/models/vcard_dictionary.rb",
|
56
58
|
"lib/visit_card/models/vcard_email.rb",
|
59
|
+
"lib/visit_card/models/vcard_extension.rb",
|
57
60
|
"lib/visit_card/models/vcard_tel.rb",
|
58
61
|
"spec/spec.opts",
|
59
62
|
"spec/spec_helper.rb",
|
@@ -75,14 +78,14 @@ Gem::Specification.new do |s|
|
|
75
78
|
s.specification_version = 3
|
76
79
|
|
77
80
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
78
|
-
s.add_runtime_dependency(%q<bitmask-attribute>, [">=
|
81
|
+
s.add_runtime_dependency(%q<clean-bitmask-attribute>, [">= 2.0.0"])
|
79
82
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
80
83
|
else
|
81
|
-
s.add_dependency(%q<bitmask-attribute>, [">=
|
84
|
+
s.add_dependency(%q<clean-bitmask-attribute>, [">= 2.0.0"])
|
82
85
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
83
86
|
end
|
84
87
|
else
|
85
|
-
s.add_dependency(%q<bitmask-attribute>, [">=
|
88
|
+
s.add_dependency(%q<clean-bitmask-attribute>, [">= 2.0.0"])
|
86
89
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
87
90
|
end
|
88
91
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: visit_card
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 0
|
9
8
|
- 1
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Pavel Chipiga
|
@@ -15,23 +15,23 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-07-
|
18
|
+
date: 2010-07-06 00:00:00 +03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
name: bitmask-attribute
|
22
|
+
name: clean-bitmask-attribute
|
23
23
|
prerelease: false
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
29
|
+
hash: 15
|
30
30
|
segments:
|
31
|
-
- 1
|
32
31
|
- 2
|
33
32
|
- 0
|
34
|
-
|
33
|
+
- 0
|
34
|
+
version: 2.0.0
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id001
|
37
37
|
- !ruby/object:Gem::Dependency
|
@@ -73,9 +73,11 @@ files:
|
|
73
73
|
- app/models/vcard_categorization.rb
|
74
74
|
- app/models/vcard_dictionary.rb
|
75
75
|
- app/models/vcard_email.rb
|
76
|
+
- app/models/vcard_extension.rb
|
76
77
|
- app/models/vcard_tel.rb
|
77
78
|
- app/views/visit_card/vcard_adrs/_form_fields.html.erb
|
78
79
|
- app/views/visit_card/vcard_emails/_form_fields.html.erb
|
80
|
+
- app/views/visit_card/vcard_extensions/_form_fields.html.erb
|
79
81
|
- app/views/visit_card/vcard_tels/_form_fields.html.erb
|
80
82
|
- app/views/visit_card/vcards/_form.html.erb
|
81
83
|
- app/views/visit_card/vcards/_hcard.html.erb
|
@@ -97,6 +99,7 @@ files:
|
|
97
99
|
- lib/visit_card/models/vcard_categorization.rb
|
98
100
|
- lib/visit_card/models/vcard_dictionary.rb
|
99
101
|
- lib/visit_card/models/vcard_email.rb
|
102
|
+
- lib/visit_card/models/vcard_extension.rb
|
100
103
|
- lib/visit_card/models/vcard_tel.rb
|
101
104
|
- spec/spec.opts
|
102
105
|
- spec/spec_helper.rb
|