vcard_mate 0.0.1 → 0.0.2
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/vcard_mate.rb +6 -6
- metadata +6 -9
- data/lib/vcard_mate/property.rb +0 -87
- data/lib/vcard_mate/vcard.rb +0 -110
- data/lib/vcard_mate/version.rb +0 -5
data/lib/vcard_mate.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
require_relative 'vcard_mate/version'
|
2
|
-
require_relative 'vcard_mate/vcard'
|
3
|
-
require_relative 'vcard_mate/property'
|
4
|
-
|
5
1
|
module VCardMate
|
6
2
|
|
7
3
|
class << self
|
8
4
|
|
9
5
|
def create(*args)
|
10
|
-
|
6
|
+
error
|
11
7
|
end
|
12
8
|
|
13
9
|
def parse(*args)
|
14
|
-
|
10
|
+
error
|
11
|
+
end
|
12
|
+
|
13
|
+
def error
|
14
|
+
raise StandardError, "This library has been renamed vCardigan and is located here: https://github.com/brewster/vcardigan"
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vcard_mate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,18 +9,15 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-24 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description:
|
15
|
-
both v3.0 and v4.0.
|
14
|
+
description: vCardigan *was* a ruby library for building and parsing vCards that supports
|
15
|
+
both v3.0 and v4.0. It is now called vCardigan!!!
|
16
16
|
email: matt@mlmorg.com
|
17
17
|
executables: []
|
18
18
|
extensions: []
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
|
-
- lib/vcard_mate/property.rb
|
22
|
-
- lib/vcard_mate/vcard.rb
|
23
|
-
- lib/vcard_mate/version.rb
|
24
21
|
- lib/vcard_mate.rb
|
25
22
|
homepage: http://github.com/mlmorg/vcard_mate
|
26
23
|
licenses:
|
@@ -43,8 +40,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
43
40
|
version: '0'
|
44
41
|
requirements: []
|
45
42
|
rubyforge_project:
|
46
|
-
rubygems_version: 1.8.
|
43
|
+
rubygems_version: 1.8.24
|
47
44
|
signing_key:
|
48
45
|
specification_version: 3
|
49
|
-
summary: Ruby vCard Builder/Parser
|
46
|
+
summary: Ruby vCard Builder/Parser. Now called vCardigan!
|
50
47
|
test_files: []
|
data/lib/vcard_mate/property.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
module VCardMate
|
2
|
-
|
3
|
-
class Property
|
4
|
-
|
5
|
-
attr_accessor :params
|
6
|
-
attr_accessor :values
|
7
|
-
attr_accessor :group
|
8
|
-
|
9
|
-
def initialize(name, *args)
|
10
|
-
@params = {}
|
11
|
-
@values = []
|
12
|
-
@group = nil
|
13
|
-
|
14
|
-
# Determine whether this property name has a group
|
15
|
-
name_parts = name.to_s.split('.', 2)
|
16
|
-
|
17
|
-
# If it has a group, set it
|
18
|
-
if name_parts.length > 1
|
19
|
-
@group = name_parts.first
|
20
|
-
end
|
21
|
-
|
22
|
-
# Set the name
|
23
|
-
@name = name_parts.last.downcase
|
24
|
-
|
25
|
-
# Build out the values/params from the passed arguments
|
26
|
-
args.each do |arg|
|
27
|
-
if arg.is_a? Hash
|
28
|
-
arg.each do |key, value|
|
29
|
-
@params[key.to_s.downcase] = value.to_s
|
30
|
-
end
|
31
|
-
else
|
32
|
-
@values.push arg.to_s
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def self.parse(data)
|
38
|
-
# Gather the parts
|
39
|
-
data = data.strip
|
40
|
-
parts = data.split(':', 2)
|
41
|
-
values = parts.last.split(';')
|
42
|
-
params = parts.first.split(';')
|
43
|
-
name = params.shift
|
44
|
-
|
45
|
-
# Create argument array beginning with name
|
46
|
-
args = [name]
|
47
|
-
|
48
|
-
# Add values to args
|
49
|
-
args.concat(values)
|
50
|
-
|
51
|
-
# Add params to args
|
52
|
-
params.each do |param|
|
53
|
-
keyval = param.split('=')
|
54
|
-
hash = Hash[keyval.first, keyval.last]
|
55
|
-
args.push(hash)
|
56
|
-
end
|
57
|
-
|
58
|
-
# Instantiate a new class with the args
|
59
|
-
new(*args)
|
60
|
-
end
|
61
|
-
|
62
|
-
def to_s
|
63
|
-
# Name/Group
|
64
|
-
name = @name.upcase
|
65
|
-
property = @group ? "#{@group}.#{name}" : name.upcase
|
66
|
-
|
67
|
-
# Params
|
68
|
-
@params.each_with_index do |(key, value), idx|
|
69
|
-
property << ';' if idx === 0
|
70
|
-
property << key.upcase << '=' << value
|
71
|
-
end
|
72
|
-
|
73
|
-
# Split with colon
|
74
|
-
property << ':'
|
75
|
-
|
76
|
-
# Values
|
77
|
-
@values.each_with_index do |value, idx|
|
78
|
-
property << ';' unless idx === 0
|
79
|
-
property << value
|
80
|
-
end
|
81
|
-
|
82
|
-
return property
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
data/lib/vcard_mate/vcard.rb
DELETED
@@ -1,110 +0,0 @@
|
|
1
|
-
module VCardMate
|
2
|
-
|
3
|
-
class VCard
|
4
|
-
|
5
|
-
VCARD_PATTERN = /BEGIN:VCARD\s+(.*?)VERSION:(.+?)\s+(.+?)END:VCARD/m;
|
6
|
-
|
7
|
-
attr_accessor :version
|
8
|
-
|
9
|
-
def initialize(version = '4.0')
|
10
|
-
@version = version
|
11
|
-
@fields = {}
|
12
|
-
@group = nil
|
13
|
-
end
|
14
|
-
|
15
|
-
def parse(data)
|
16
|
-
match = VCARD_PATTERN.match(data)
|
17
|
-
if match
|
18
|
-
# Set version number
|
19
|
-
@version = match[2]
|
20
|
-
lines = "#{match[1]}#{match[3]}"
|
21
|
-
|
22
|
-
# Add the parsed properties to this vCard
|
23
|
-
lines.each_line do |line|
|
24
|
-
property = VCardMate::Property.parse(line)
|
25
|
-
add_prop(property)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
self
|
29
|
-
end
|
30
|
-
|
31
|
-
def [](group)
|
32
|
-
@group = group
|
33
|
-
self
|
34
|
-
end
|
35
|
-
|
36
|
-
def method_missing(method, *args)
|
37
|
-
if args.empty?
|
38
|
-
# Return the property/properties when no arguments are passed
|
39
|
-
get_prop(method)
|
40
|
-
else
|
41
|
-
# If there's a group, add it
|
42
|
-
if @group
|
43
|
-
method = "#{@group}.#{method}"
|
44
|
-
end
|
45
|
-
|
46
|
-
# Add property to vCard
|
47
|
-
property = VCardMate::Property.new(method, *args)
|
48
|
-
add_prop(property)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def add_prop(property)
|
53
|
-
name = property.instance_variable_get(:@name)
|
54
|
-
|
55
|
-
# Create a field on the fields hash, if not already present, to house
|
56
|
-
# the property
|
57
|
-
unless @fields.has_key? name
|
58
|
-
@fields[name] = []
|
59
|
-
end
|
60
|
-
|
61
|
-
# Add the property to the field array
|
62
|
-
@fields[name].push(property)
|
63
|
-
end
|
64
|
-
|
65
|
-
def get_prop(name)
|
66
|
-
field = @fields[name.to_s.downcase]
|
67
|
-
case field.length
|
68
|
-
when 0
|
69
|
-
nil
|
70
|
-
when 1
|
71
|
-
field.first
|
72
|
-
else
|
73
|
-
field
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def to_s
|
78
|
-
# Start vCard
|
79
|
-
vcard = VCardMate::Property.new(:begin, 'VCARD').to_s << "\n"
|
80
|
-
|
81
|
-
# Add version
|
82
|
-
vcard << VCardMate::Property.new(:version, @version).to_s << "\n"
|
83
|
-
|
84
|
-
# Add the properties
|
85
|
-
@fields.each do |field, properties|
|
86
|
-
properties.each do |property|
|
87
|
-
vcard << property.to_s << "\n"
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
# END
|
92
|
-
vcard << VCardMate::Property.new(:end, 'VCARD').to_s << "\n"
|
93
|
-
|
94
|
-
# Return vCard
|
95
|
-
return vcard
|
96
|
-
end
|
97
|
-
|
98
|
-
# Aliases ##########
|
99
|
-
|
100
|
-
def name(*args)
|
101
|
-
n(*args)
|
102
|
-
end
|
103
|
-
|
104
|
-
def fullname(*args)
|
105
|
-
fn(*args)
|
106
|
-
end
|
107
|
-
|
108
|
-
end
|
109
|
-
|
110
|
-
end
|