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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/valerie/phone.rb +14 -14
  3. data/test/phone_test.rb +10 -4
  4. metadata +3 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea7e19804b751742d2949d006db9f884f3baa7a17d0a0a1f6a6db00196a6c194
4
- data.tar.gz: 49741e0b54e5c6ee460654d4f7134aae2912e74539625fe8c3b37e8621a23fa6
3
+ metadata.gz: 5fcc95de73f6b9d8ace62e7fbea8a9862577be748b87b087c465f84964da5b01
4
+ data.tar.gz: 7cc7925d3b688f0a31a0d791d281f7b5d94333e88c2c2f57bb24dd188067f116
5
5
  SHA512:
6
- metadata.gz: d2518a65329eb490ad21ce723bcab923c09db8b7b8f02afb678aac41469a6799203fa92cd03f530b6d11d451034d540fa3ce58f5eb7b80f214c2b9ddab75ec98
7
- data.tar.gz: fa001df7282f3af9a1c1cc2aa3aaf6957b79158640808e45b11e1958e086bbe4ec52b5fb59cc2812b7cf25aa0ec0f8c010df0f81c9d9381d7a8e43572f42cdc6
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: @tel,
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.7
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: 2024-10-13 00:00:00.000000000 Z
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.5.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.