+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
defmodule Pleroma.Emoji do
@moduledoc """
The emojis are loaded from:
"""
use GenServer
@ets __MODULE__.Ets
- @ets_options [:set, :protected, :named_table, {:read_concurrency, true}]
+ @ets_options [:ordered_set, :protected, :named_table, {:read_concurrency, true}]
@doc false
- def start_link() do
+ def start_link do
GenServer.start_link(__MODULE__, [], name: __MODULE__)
end
@doc "Reloads the emojis from disk."
@spec reload() :: :ok
- def reload() do
+ def reload do
GenServer.call(__MODULE__, :reload)
end
@doc "Returns all the emojos!!"
@spec get_all() :: [{String.t(), String.t()}, ...]
- def get_all() do
+ def get_all do
:ets.tab2list(@ets)
end
{:ok, state}
end
- defp load() do
+ defp load do
emojis =
(load_finmoji(Keyword.get(Application.get_env(:pleroma, :instance), :finmoji_enabled)) ++
load_from_file("config/emoji.txt") ++
end)
end
- defp load_finmoji(_), do: :ok
+ defp load_finmoji(_), do: []
defp load_from_file(file) do
if File.exists?(file) do
defp load_from_file_stream(stream) do
stream
- |> Stream.map(&String.strip/1)
+ |> Stream.map(&String.trim/1)
|> Stream.map(fn line ->
case String.split(line, ~r/,\s*/) do
[name, file] -> {name, file}