Add behaviours to TwitterCard, remove some dumb stuff in Formatter.truncate
authorrinpatch <rinpatch@sdf.org>
Tue, 15 Jan 2019 20:25:28 +0000 (23:25 +0300)
committerrinpatch <rinpatch@sdf.org>
Tue, 15 Jan 2019 20:25:28 +0000 (23:25 +0300)
lib/pleroma/formatter.ex
lib/pleroma/web/metadata/opengraph.ex
lib/pleroma/web/metadata/twitter_card.ex

index 49f7075e6f1640667bae117e9feb7325ec0d44f1..63e0acb21e29e5d923263cf797677058121ba44b 100644 (file)
@@ -184,21 +184,12 @@ defmodule Pleroma.Formatter do
     end)
   end
 
-  def truncate(text, opts \\ []) do
-    max_length = opts[:max_length] || 200
-    omission = opts[:omission] || "..."
-
-    cond do
-      not String.valid?(text) ->
-        text
-
-      String.length(text) < max_length ->
-        text
-
-      true ->
-        length_with_omission = max_length - String.length(omission)
-
-        "#{String.slice(text, 0, length_with_omission)}#{omission}"
+  def truncate(text, max_length \\ 200, omission \\ "...") do
+    if String.length(text) < max_length do
+      text
+    else
+      length_with_omission = max_length - String.length(omission)
+      String.slice(text, 0, length_with_omission) <> omission
     end
   end
 end
index fcc9603119c8ada805ec14dc3a08ce89190d1cfc..1e3af947d6755d27b04f0bdd4bd53f5ce779d102 100644 (file)
@@ -19,7 +19,8 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do
         {:meta, [property: "og:url", content: activity.data["id"]], []},
         {:meta, [property: "og:description", content: truncated_content], []}
       ] ++
-        if attachments == [] or Enum.any?(activity.data["object"]["tag"], fn tag -> tag == "nsfw" end) do
+        if attachments == [] or
+             Enum.any?(activity.data["object"]["tag"], fn tag -> tag == "nsfw" end) do
           [
             {:meta, [property: "og:image", content: attachment_url(User.avatar_url(user))], []},
             {:meta, [property: "og:image:width", content: 120], []},
index 6424f84b3fc9fb77679ed6c1fc8e1fbe5dd657ca..3094e61fdf3a4af1681876f643e0dcd29b823f14 100644 (file)
@@ -1,4 +1,9 @@
 defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
+  alias Pleroma.Web.Metadata.Providers.Provider
+
+  @behaviour Provider
+
+  @impl Provider
   def build_tags(%{activity: activity}) do
     if Enum.any?(activity.data["object"]["tag"], fn tag -> tag == "nsfw" end) or
          activity.data["object"]["attachment"] == [] do
@@ -20,6 +25,7 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
     end
   end
 
+  @impl Provider
   def build_tags(_) do
     [{:meta, [property: "twitter:card", content: "summary"], []}]
   end