link_to h(wp[:title]), wp[:url], :title => t('browse.tag_details.wikipedia_link', :page => wp[:title])
elsif url = wiki_link("tag", "#{key}=#{value}")
link_to h(value), url, :title => t('browse.tag_details.wiki_link.tag', :key => key, :value => value)
+ elsif url = telephone_link(key, value)
+ link_to h(value), url, :title => t('browse.tag_details.telephone_link', :phone_number => value)
else
linkify h(value)
end
:title => value + section
}
end
+
+ def telephone_link(key, value)
+ # does it look like a phone number? eg "+1 (234) 567-8901 " ?
+ return nil unless value =~ /^\s*\+[\d\s\(\)\/\.-]{6,25}\s*$/
+
+ # remove all whitespace instead of encoding it http://tools.ietf.org/html/rfc3966#section-5.1.1
+ # "+1 (234) 567-8901 " -> "+1(234)567-8901"
+ valueNoWhitespace = value.gsub(/\s+/, '')
+
+ return "tel:#{valueNoWhitespace}"
+ end
end
html = format_value("unknown", "unknown")
assert_equal "unknown", html
+
+ html = format_value("phone", "+1234567890")
+ assert_equal "<a href=\"tel:+1234567890\" title=\"Call +1234567890\">+1234567890</a>", html
end
def test_icon_tags
link = wikipedia_link("foo", "Test")
assert_nil link
end
+
+ def test_telephone_link
+ link = telephone_link("foo", "Test")
+ assert_nil link
+
+ link = telephone_link("phone", "+123")
+ assert_nil link
+
+ link = telephone_link("phone", "123")
+ assert_nil link
+
+ link = telephone_link("phone", "123 abcdefg")
+ assert_nil link
+
+ link = telephone_link("phone", "+1234567890 abc")
+ assert_nil link
+
+ link = telephone_link("phone", "+1234567890; +22334455667788")
+ assert_nil link
+
+ link = telephone_link("phone", "1234567890")
+ assert_nil link
+
+ link = telephone_link("phone", "+1234567890")
+ assert_equal "tel:+1234567890", link
+
+ link = telephone_link("phone", "+1234-567-890")
+ assert_equal "tel:+1234-567-890", link
+
+ link = telephone_link("phone", "+1234/567/890")
+ assert_equal "tel:+1234/567/890", link
+
+ link = telephone_link("phone", "+1234.567.890")
+ assert_equal "tel:+1234.567.890", link
+
+ link = telephone_link("phone", " +1234 567-890 ")
+ assert_equal "tel:+1234567-890", link
+
+ link = telephone_link("phone", "+1 234-567-890")
+ assert_equal "tel:+1234-567-890", link
+
+ link = telephone_link("phone", "+1 (234) 567-890")
+ assert_equal "tel:+1(234)567-890", link
+ end
end