From 842fc0f688d33117a42eae5769a07066b30c3b5d Mon Sep 17 00:00:00 2001 From: Adam Dawkins Date: Wed, 23 Jan 2019 22:58:10 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20Add=20image=20embedding=20to=20note?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/posts_helper.rb | 11 ++++++++++- spec/helpers/posts_helper_spec.rb | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/helpers/posts_helper.rb b/app/helpers/posts_helper.rb index 1d62c3c..05b5c24 100644 --- a/app/helpers/posts_helper.rb +++ b/app/helpers/posts_helper.rb @@ -5,13 +5,22 @@ def auto_link_regex Regexp.new('(?:\\@[_a-zA-Z0-9]{1,17})|(?:(?:(?:(?:http|https|irc)?:\\/\\/(?:(?:[!$&-.0-9;=?A-Z_a-z]|(?:\\%[a-fA-F0-9]{2}))+(?:\\:(?:[!$&-.0-9;=?A-Z_a-z]|(?:\\%[a-fA-F0-9]{2}))+)?\\@)?)?(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*\\.)+(?:(?:aero|arpa|asia|a[cdefgilmnoqrstuwxz])|(?:biz|b[abdefghijmnorstvwyz])|(?:cat|com|coop|c[acdfghiklmnoruvxyz])|d[ejkmoz]|(?:edu|e[cegrstu])|f[ijkmor]|(?:gov|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(?:info|int|i[delmnoqrst])|j[emop]|k[eghimnrwyz]|l[abcikrstuvy]|(?:mil|museum|m[acdeghklmnopqrstuvwxyz])|(?:name|net|n[acefgilopruz])|(?:org|om)|(?:pro|p[aefghklmnrstwy])|qa|r[eouw]|s[abcdeghijklmnortuvyz]|(?:tel|travel|t[cdfghjklmnoprtvwz])|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw]))|(?:(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])))(?:\\:\\d{1,5})?)(?:\\/(?:(?:[!#&-;=?-Z_a-z~])|(?:\\%[a-fA-F0-9]{2}))*)?)(?=\\b|\\s|$)', 'gi') end + def file_extension(url) + match = url.match(/\.\w*$/) + return match[0] if match + end + def auto_link(content) addresses = content.scan(auto_link_regex) addresses.each do |address| uri = web_address_to_uri(address) display_text = address + extension = file_extension(uri) - if address[0] == "@" + if [".gif", ".jpg", ".jpeg", ".png", ".svg"].include?(extension) + display_text = ('').html_safe + content.gsub!(address, autolink_tag(uri, display_text)) + elsif address[0] == "@" content.gsub!(address, autolink_tag(uri, display_text, "h-x-username")) else display_text = strip_protocol(display_text) diff --git a/spec/helpers/posts_helper_spec.rb b/spec/helpers/posts_helper_spec.rb index 18b5be8..1e5c397 100644 --- a/spec/helpers/posts_helper_spec.rb +++ b/spec/helpers/posts_helper_spec.rb @@ -28,5 +28,10 @@ expect(helper.auto_link("https://dragondrop.uk")).to eq 'dragondrop.uk' end end + context "gif" do + it "turns the link into an image" do + expect(helper.auto_link("https://media.giphy.com/media/giphy.gif")).to eq '' + end + end end end