visit_card 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|