Skip to content
Snippets Groups Projects
Commit 57e10323 authored by Arnaud Levy's avatar Arnaud Levy
Browse files

Merge branch 'main' into mastodon

parents abc48583 bd844b20
No related branches found
No related tags found
No related merge requests found
......@@ -3,17 +3,22 @@ class ContactDetails::Base
def initialize(string)
@string = string.to_s
return if @string.blank?
prepare_url
prepare_label
end
def present?
url.present?
end
protected
def prepare_label
@label = @string
def prepare_url
@url = @string.dup
end
def prepare_url
@url = @string
def prepare_label
@label = @string.dup
end
end
\ No newline at end of file
......@@ -3,8 +3,7 @@ class ContactDetails::Country < ContactDetails::Base
protected
def prepare_label
super
# TODO country name
@label = ISO3166::Country[@string].common_name
end
end
\ No newline at end of file
class ContactDetails::Email < ContactDetails::Base
PREFIX = "mailto:"
protected
def prepare_url
@url = "mailto:#{@string}"
@url = "#{PREFIX}#{@string}"
end
end
\ No newline at end of file
class ContactDetails::Phone < ContactDetails::Base
PREFIX = "tel:"
protected
def prepare_url
@url = @string.dup
super
@url.remove! ' '
@url.remove! '.'
@url = "#{PREFIX}#{@url}"
end
def prepare_label
@label = @string
@label = @url.remove PREFIX
end
end
\ No newline at end of file
class ContactDetails::Twitter < ContactDetails::Base
URL = 'https://twitter.com'
URL = 'https://twitter.com/'
DOMAIN = 'twitter.com'
protected
def prepare_url
@url = @string
super
@url.remove! DOMAIN if @url.start_with? DOMAIN
@url.remove! URL if @url.start_with? URL
@url.delete_suffix! '/'
@url.delete_prefix! '/'
@url = "#{URL}/#{@string}"
@url = "#{URL}#{@url}"
end
def prepare_label
super
@label.remove! URL
@label = @url.remove URL
end
end
\ No newline at end of file
......@@ -4,7 +4,7 @@ class ContactDetails::Website < ContactDetails::Base
protected
def prepare_url
@url = @string.to_s
super
@url = "#{PROTOCOL}#{@url}" unless @url.start_with? PROTOCOL
end
......
<%
detail = kind.new data
if detail.present?
%>
<%= variable %>:
label: <%= detail.label %>
url: <%= detail.url %>
\ No newline at end of file
url: <%= detail.url %>
<% end %>
\ No newline at end of file
......@@ -4,68 +4,68 @@ class ContactDetailsTest < ActiveSupport::TestCase
test "country nil" do
detail = ContactDetails::Country.new nil
assert_equal detail.label, ''
assert_equal detail.url, ''
assert_nil detail.label
assert_nil detail.url
end
test "country FR" do
detail = ContactDetails::Country.new 'FR'
assert_equal detail.label, 'France'
assert_equal detail.url, 'FR'
assert_equal 'France', detail.label
assert_equal 'FR', detail.url
end
test "email nil" do
detail = ContactDetails::Email.new nil
assert_equal detail.label, ''
assert_equal detail.url, ''
assert_nil detail.label
assert_nil detail.url
end
test "email arnaud.levy@noesya.coop" do
detail = ContactDetails::Email.new 'arnaud.levy@noesya.coop'
assert_equal detail.label, 'arnaud.levy@noesya.coop'
assert_equal detail.url, 'mailto:arnaud.levy@noesya.coop'
assert_equal 'arnaud.levy@noesya.coop', detail.label
assert_equal 'mailto:arnaud.levy@noesya.coop', detail.url
end
test "twitter nil" do
detail = ContactDetails::Twitter.new nil
assert_equal detail.label, ''
assert_equal detail.url, ''
assert_nil detail.label
assert_nil detail.url
end
test "twitter handle" do
detail = ContactDetails::Twitter.new 'arnaudlevy'
assert_equal detail.label, 'arnaudlevy'
assert_equal detail.url, 'https://twitter.com/arnaudlevy'
assert_equal 'arnaudlevy', detail.label
assert_equal 'https://twitter.com/arnaudlevy', detail.url
end
test "twitter twitter.com/arnaudlevy" do
detail = ContactDetails::Twitter.new 'twitter.com/arnaudlevy'
assert_equal detail.label, 'arnaudlevy'
assert_equal detail.url, 'https://twitter.com/arnaudlevy'
assert_equal 'arnaudlevy', detail.label
assert_equal 'https://twitter.com/arnaudlevy', detail.url
end
test "twitter https://twitter.com/arnaudlevy" do
detail = ContactDetails::Twitter.new 'https://twitter.com/arnaudlevy'
assert_equal detail.label, 'arnaudlevy'
assert_equal detail.url, 'https://twitter.com/arnaudlevy'
assert_equal 'arnaudlevy', detail.label
assert_equal 'https://twitter.com/arnaudlevy', detail.url
end
test "website nil" do
detail = ContactDetails::Website.new nil
assert_equal detail.label, ''
assert_equal detail.url, ''
assert_nil detail.label
assert_nil detail.url
end
test "website www.noesya.coop" do
detail = ContactDetails::Website.new 'www.noesya.coop'
assert_equal detail.label, 'www.noesya.coop'
assert_equal detail.url, 'https://www.noesya.coop'
assert_equal 'www.noesya.coop', detail.label
assert_equal 'https://www.noesya.coop', detail.url
end
test "website https://www.noesya.coop" do
detail = ContactDetails::Website.new 'https://www.noesya.coop'
assert_equal detail.label, 'www.noesya.coop'
assert_equal detail.url, 'https://www.noesya.coop'
assert_equal 'www.noesya.coop', detail.label
assert_equal 'https://www.noesya.coop', detail.url
end
end
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment