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 ...@@ -3,17 +3,22 @@ class ContactDetails::Base
def initialize(string) def initialize(string)
@string = string.to_s @string = string.to_s
return if @string.blank?
prepare_url prepare_url
prepare_label prepare_label
end end
def present?
url.present?
end
protected protected
def prepare_label def prepare_url
@label = @string @url = @string.dup
end end
def prepare_url def prepare_label
@url = @string @label = @string.dup
end end
end end
\ No newline at end of file
...@@ -3,8 +3,7 @@ class ContactDetails::Country < ContactDetails::Base ...@@ -3,8 +3,7 @@ class ContactDetails::Country < ContactDetails::Base
protected protected
def prepare_label def prepare_label
super @label = ISO3166::Country[@string].common_name
# TODO country name
end end
end end
\ No newline at end of file
class ContactDetails::Email < ContactDetails::Base class ContactDetails::Email < ContactDetails::Base
PREFIX = "mailto:"
protected protected
def prepare_url def prepare_url
@url = "mailto:#{@string}" @url = "#{PREFIX}#{@string}"
end end
end end
\ No newline at end of file
class ContactDetails::Phone < ContactDetails::Base class ContactDetails::Phone < ContactDetails::Base
PREFIX = "tel:"
protected protected
def prepare_url def prepare_url
@url = @string.dup super
@url.remove! ' ' @url.remove! ' '
@url.remove! '.' @url.remove! '.'
@url = "#{PREFIX}#{@url}"
end end
def prepare_label def prepare_label
@label = @string @label = @url.remove PREFIX
end end
end end
\ No newline at end of file
class ContactDetails::Twitter < ContactDetails::Base class ContactDetails::Twitter < ContactDetails::Base
URL = 'https://twitter.com' URL = 'https://twitter.com/'
DOMAIN = 'twitter.com' DOMAIN = 'twitter.com'
protected protected
def prepare_url def prepare_url
@url = @string super
@url.remove! DOMAIN if @url.start_with? DOMAIN @url.remove! DOMAIN if @url.start_with? DOMAIN
@url.remove! URL if @url.start_with? URL @url.remove! URL if @url.start_with? URL
@url.delete_suffix! '/' @url.delete_suffix! '/'
@url.delete_prefix! '/' @url.delete_prefix! '/'
@url = "#{URL}/#{@string}" @url = "#{URL}#{@url}"
end end
def prepare_label def prepare_label
super @label = @url.remove URL
@label.remove! URL
end end
end end
\ No newline at end of file
...@@ -4,7 +4,7 @@ class ContactDetails::Website < ContactDetails::Base ...@@ -4,7 +4,7 @@ class ContactDetails::Website < ContactDetails::Base
protected protected
def prepare_url def prepare_url
@url = @string.to_s super
@url = "#{PROTOCOL}#{@url}" unless @url.start_with? PROTOCOL @url = "#{PROTOCOL}#{@url}" unless @url.start_with? PROTOCOL
end end
......
<% <%
detail = kind.new data detail = kind.new data
if detail.present?
%> %>
<%= variable %>: <%= variable %>:
label: <%= detail.label %> label: <%= detail.label %>
url: <%= detail.url %> url: <%= detail.url %>
\ No newline at end of file <% end %>
\ No newline at end of file
...@@ -4,68 +4,68 @@ class ContactDetailsTest < ActiveSupport::TestCase ...@@ -4,68 +4,68 @@ class ContactDetailsTest < ActiveSupport::TestCase
test "country nil" do test "country nil" do
detail = ContactDetails::Country.new nil detail = ContactDetails::Country.new nil
assert_equal detail.label, '' assert_nil detail.label
assert_equal detail.url, '' assert_nil detail.url
end end
test "country FR" do test "country FR" do
detail = ContactDetails::Country.new 'FR' detail = ContactDetails::Country.new 'FR'
assert_equal detail.label, 'France' assert_equal 'France', detail.label
assert_equal detail.url, 'FR' assert_equal 'FR', detail.url
end end
test "email nil" do test "email nil" do
detail = ContactDetails::Email.new nil detail = ContactDetails::Email.new nil
assert_equal detail.label, '' assert_nil detail.label
assert_equal detail.url, '' assert_nil detail.url
end end
test "email arnaud.levy@noesya.coop" do test "email arnaud.levy@noesya.coop" do
detail = ContactDetails::Email.new 'arnaud.levy@noesya.coop' detail = ContactDetails::Email.new 'arnaud.levy@noesya.coop'
assert_equal detail.label, 'arnaud.levy@noesya.coop' assert_equal 'arnaud.levy@noesya.coop', detail.label
assert_equal detail.url, 'mailto:arnaud.levy@noesya.coop' assert_equal 'mailto:arnaud.levy@noesya.coop', detail.url
end end
test "twitter nil" do test "twitter nil" do
detail = ContactDetails::Twitter.new nil detail = ContactDetails::Twitter.new nil
assert_equal detail.label, '' assert_nil detail.label
assert_equal detail.url, '' assert_nil detail.url
end end
test "twitter handle" do test "twitter handle" do
detail = ContactDetails::Twitter.new 'arnaudlevy' detail = ContactDetails::Twitter.new 'arnaudlevy'
assert_equal detail.label, 'arnaudlevy' assert_equal 'arnaudlevy', detail.label
assert_equal detail.url, 'https://twitter.com/arnaudlevy' assert_equal 'https://twitter.com/arnaudlevy', detail.url
end end
test "twitter twitter.com/arnaudlevy" do test "twitter twitter.com/arnaudlevy" do
detail = ContactDetails::Twitter.new 'twitter.com/arnaudlevy' detail = ContactDetails::Twitter.new 'twitter.com/arnaudlevy'
assert_equal detail.label, 'arnaudlevy' assert_equal 'arnaudlevy', detail.label
assert_equal detail.url, 'https://twitter.com/arnaudlevy' assert_equal 'https://twitter.com/arnaudlevy', detail.url
end end
test "twitter https://twitter.com/arnaudlevy" do test "twitter https://twitter.com/arnaudlevy" do
detail = ContactDetails::Twitter.new 'https://twitter.com/arnaudlevy' detail = ContactDetails::Twitter.new 'https://twitter.com/arnaudlevy'
assert_equal detail.label, 'arnaudlevy' assert_equal 'arnaudlevy', detail.label
assert_equal detail.url, 'https://twitter.com/arnaudlevy' assert_equal 'https://twitter.com/arnaudlevy', detail.url
end end
test "website nil" do test "website nil" do
detail = ContactDetails::Website.new nil detail = ContactDetails::Website.new nil
assert_equal detail.label, '' assert_nil detail.label
assert_equal detail.url, '' assert_nil detail.url
end end
test "website www.noesya.coop" do test "website www.noesya.coop" do
detail = ContactDetails::Website.new 'www.noesya.coop' detail = ContactDetails::Website.new 'www.noesya.coop'
assert_equal detail.label, 'www.noesya.coop' assert_equal 'www.noesya.coop', detail.label
assert_equal detail.url, 'https://www.noesya.coop' assert_equal 'https://www.noesya.coop', detail.url
end end
test "website https://www.noesya.coop" do test "website https://www.noesya.coop" do
detail = ContactDetails::Website.new 'https://www.noesya.coop' detail = ContactDetails::Website.new 'https://www.noesya.coop'
assert_equal detail.label, 'www.noesya.coop' assert_equal 'www.noesya.coop', detail.label
assert_equal detail.url, 'https://www.noesya.coop' assert_equal 'https://www.noesya.coop', detail.url
end end
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