valerie 0.0.7 → 0.0.8
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.
- checksums.yaml +4 -4
- data/lib/valerie/phone.rb +14 -14
- data/test/phone_test.rb +10 -4
- metadata +3 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5fcc95de73f6b9d8ace62e7fbea8a9862577be748b87b087c465f84964da5b01
|
4
|
+
data.tar.gz: 7cc7925d3b688f0a31a0d791d281f7b5d94333e88c2c2f57bb24dd188067f116
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05ed263488558b7720e60bdd8652a703a7610fc2c499bdf642363476380ddccc25a5d764c77cd5fae56a346ee8d72a5a7cd4fd14fd82b1a759ae0a3ddcd6cdab
|
7
|
+
data.tar.gz: a5f3112e7fd9ac862747799fab885f71b7e8cac092c2df3722e6396d5cf69dd7109af54b171285e7c94c538057f7c9706770abcf02556e1564e02d03f2482bfa
|
data/lib/valerie/phone.rb
CHANGED
@@ -3,53 +3,53 @@ require_relative 'ordered'
|
|
3
3
|
module Valerie
|
4
4
|
class Phone
|
5
5
|
VALID_TYPES = %w[text voice fax cell video pager textphone].freeze
|
6
|
-
|
6
|
+
|
7
7
|
include Ordered
|
8
|
-
|
8
|
+
|
9
9
|
def self.from_s(data)
|
10
10
|
data = data[data.index("TEL;")..] unless data.start_with?("TEL;")
|
11
11
|
identifier = data.split(":").last
|
12
12
|
options = data.gsub("TEL", "").split(":").first.split(";").compact.filter { _1.to_s.include?('=')}.map { _1.downcase.split("=") }.to_h
|
13
|
-
|
13
|
+
|
14
14
|
new(identifier, **options)
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
attr_reader :number, :options
|
18
|
-
|
18
|
+
|
19
19
|
def initialize(number, **options)
|
20
20
|
@number = number
|
21
21
|
@options = options.transform_keys!(&:to_sym)
|
22
22
|
@type = @options[:type] || 'voice'
|
23
|
-
|
23
|
+
|
24
24
|
raise ArgumentError, 'Invalid Position' if invalid_position?
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
def [](key)
|
28
28
|
@options[key]
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
def to_s
|
32
32
|
parts = ['TEL']
|
33
|
-
|
33
|
+
|
34
34
|
parts << "PERF=#{@options[:position]}" if position?
|
35
35
|
parts << type_to_s if type?
|
36
|
-
|
36
|
+
|
37
37
|
parts.join(';') + ":#{@number}"
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
def to_h
|
41
41
|
{
|
42
|
-
number: @
|
42
|
+
number: @number,
|
43
43
|
type: @type,
|
44
44
|
position: @options[:position],
|
45
45
|
}
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
private
|
49
49
|
def type?
|
50
50
|
@options[:type]
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
def type_to_s
|
54
54
|
if @options[:type].is_a?(Array)
|
55
55
|
"TYPE=\"#{@options[:type].join(',')}\""
|
data/test/phone_test.rb
CHANGED
@@ -6,24 +6,30 @@ class PhoneTest < Minitest::Test
|
|
6
6
|
assert_equal(phone.to_s.start_with?('TEL;TYPE=voice:'), true)
|
7
7
|
end
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
def test_to_s_with_multiple_types
|
11
11
|
Valerie::Phone.new('01000000000', type: %i[voice work]).tap do |phone|
|
12
12
|
assert_equal(phone.to_s, 'TEL;TYPE="voice,work":01000000000')
|
13
13
|
end
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def test_with_invalid_position
|
17
17
|
error = assert_raises(ArgumentError) do
|
18
18
|
Valerie::Phone.new('01000000000', position: -1)
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
assert_equal(error.message, 'Invalid Position')
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
def test_to_s_with_position
|
25
25
|
Valerie::Phone.new('01000000000', type: :voice, position: 1).tap do |phone|
|
26
26
|
assert_equal(phone.to_s, 'TEL;PERF=1;TYPE=voice:01000000000')
|
27
27
|
end
|
28
28
|
end
|
29
|
+
|
30
|
+
def test_to_h
|
31
|
+
Valerie::Phone.new('01000000000', type: :voice, position: 1).tap do |phone|
|
32
|
+
assert_equal(phone.to_h, { number: '01000000000', type: :voice, position: 1 })
|
33
|
+
end
|
34
|
+
end
|
29
35
|
end
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: valerie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hellotext
|
8
8
|
- Ahmed Khattab
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2025-07-08 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: minitest
|
@@ -40,7 +39,6 @@ dependencies:
|
|
40
39
|
- !ruby/object:Gem::Version
|
41
40
|
version: '13.0'
|
42
41
|
description: VCard (Contact Card) parser and generator.
|
43
|
-
email:
|
44
42
|
executables: []
|
45
43
|
extensions: []
|
46
44
|
extra_rdoc_files: []
|
@@ -76,7 +74,6 @@ homepage: https://github.com/hellotext/valerie
|
|
76
74
|
licenses:
|
77
75
|
- MIT
|
78
76
|
metadata: {}
|
79
|
-
post_install_message:
|
80
77
|
rdoc_options: []
|
81
78
|
require_paths:
|
82
79
|
- lib
|
@@ -91,8 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
88
|
- !ruby/object:Gem::Version
|
92
89
|
version: '0'
|
93
90
|
requirements: []
|
94
|
-
rubygems_version: 3.
|
95
|
-
signing_key:
|
91
|
+
rubygems_version: 3.6.2
|
96
92
|
specification_version: 4
|
97
93
|
summary: Easily parse and generate VCard (Contact Card) objects that can be exported
|
98
94
|
to other systems with ease.
|