Merge branch 'oauth2' into 'develop'
[akkoma] / lib / pleroma / formatter.ex
index a8149b7b36801f55934f1f82e30badd86931b418..e95a314b484c1d661dd41d7994ca95e0f0282df2 100644 (file)
@@ -1,7 +1,7 @@
 defmodule Pleroma.Formatter do
   alias Pleroma.User
 
-  @link_regex ~r/https?:\/\/[\w\.\/?=\-#%&]+[\w]/
+  @link_regex ~r/https?:\/\/[\w\.\/?=\-#%&]+[\w]/u
   def linkify(text) do
     Regex.replace(@link_regex, text, "<a href='\\0'>\\0</a>")
   end
@@ -14,7 +14,7 @@ defmodule Pleroma.Formatter do
 
   def parse_mentions(text) do
     # Modified from https://www.w3.org/TR/html5/forms.html#valid-e-mail-address
-    regex = ~r/@[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@?[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*/
+    regex = ~r/@[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@?[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*/u
 
     Regex.scan(regex, text)
     |> List.flatten
@@ -22,4 +22,76 @@ defmodule Pleroma.Formatter do
     |> Enum.map(fn ("@" <> match = full_match) -> {full_match, User.get_cached_by_nickname(match)} end)
     |> Enum.filter(fn ({_match, user}) -> user end)
   end
+
+  def finmojifiy(text) do
+    emoji_list = [
+      "a_trusted_friend",
+      "alandislands",
+      "association",
+      "auroraborealis",
+      "baby_in_a_box",
+      "bear",
+      "black_gold",
+      "christmasparty",
+      "crosscountryskiing",
+      "cupofcoffee",
+      "education",
+      "fashionista_finns",
+      "finnishlove",
+      "flag",
+      "forest",
+      "four_seasons_of_bbq",
+      "girlpower",
+      "handshake",
+      "happiness",
+      "headbanger",
+      "icebreaker",
+      "iceman",
+      "joulutorttu",
+      "kaamos",
+      "kalsarikannit_f",
+      "kalsarikannit_m",
+      "karjalanpiirakka",
+      "kicksled",
+      "kokko",
+      "lavatanssit",
+      "losthopes_f",
+      "losthopes_m",
+      "mattinykanen",
+      "meanwhileinfinland",
+      "moominmamma",
+      "nordicfamily",
+      "out_of_office",
+      "peacemaker",
+      "perkele",
+      "pesapallo",
+      "polarbear",
+      "pusa_hispida_saimensis",
+      "reindeer",
+      "sami",
+      "sauna_f",
+      "sauna_m",
+      "sauna_whisk",
+      "sisu",
+      "stuck",
+      "suomimainittu",
+      "superfood",
+      "swan",
+      "the_cap",
+      "the_conductor",
+      "the_king",
+      "the_voice",
+      "theoriginalsanta",
+      "tomoffinland",
+      "torillatavataan",
+      "unbreakable",
+      "waiting",
+      "white_nights",
+      "woollysocks"
+    ]
+
+    Enum.reduce(emoji_list, text, fn (emoji, text) ->
+      String.replace(text, ":#{String.replace(emoji, "_", "")}:", "<img height='32px' width='32px' alt='#{emoji}' title='#{String.replace(emoji, "_", "")}' src='#{Pleroma.Web.Endpoint.static_url}/finmoji/128px/#{emoji}-128.png' />")
+    end)
+  end
 end