twemoji-elixir

Twemoji for Elixir!

TODO

Installation

Add it to deps in mix.exs

def deps do
  [
    {:twemoji, "~> 0.1.0"}
  ]
end

Usage

From string

iex> Twemoji.parse("Twemoji in Elixir 🎉")
"Twemoji in Elixir <img draggable=\"false\" class=\"twemoji\" alt=\"party popper\" aria-label=\"party popper\" src=\"https://twemoji.maxcdn.com/2/72x72/1f389.png\"/>"
iex> Twemoji.parse_as_ast("Twemoji in Elixir 🎉")
{:ok,
 [
   "Twemoji in Elixir ",
   {"img",
    [
      {"draggable", "false"},
      {"class", "twemoji"},
      {"alt", "party popper"},
      {"aria-label", "party popper"},
      {"src", "https://twemoji.maxcdn.com/2/72x72/1f389.png"}
    ], []}
 ]}
# Can also control AST output format (:floki (default), or :earmark)
iex> Twemoji.parse_as_ast("Twemoji in Elixir 🎉", format: :earmark)
{:ok,
 [
   "Twemoji in Elixir ",
   {"img",
    [
      {"draggable", "false"},
      {"class", "twemoji"},
      {"alt", "party popper"},
      {"aria-label", "party popper"},
      {"src", "https://twemoji.maxcdn.com/2/72x72/1f389.png"}
    ], [], %{}}
 ]}

From AST

Floki

iex> {:ok, x} = Floki.parse_fragment("Twemoji in Elixir 🎉")
{:ok, ["Twemoji in Elixir 🎉"]}
iex> Twemoji.parse(x)
"Twemoji in Elixir <img draggable=\"false\" class=\"twemoji\" alt=\"party popper\" aria-label=\"party popper\" src=\"https://twemoji.maxcdn.com/2/72x72/1f389.png\"/>"
iex> Twemoji.parse_as_ast(x)
{:ok,
 [
   "Twemoji in Elixir ",
   {"img",
    [
      {"draggable", "false"},
      {"class", "twemoji"},
      {"alt", "party popper"},
      {"aria-label", "party popper"},
      {"src", "https://twemoji.maxcdn.com/2/72x72/1f389.png"}
    ], []}
 ]}

Earmark

iex> {:ok, x, _} = EarmarkParser.as_ast("Twemoji in Elixir 🎉")
{:ok, [{"p", [], ["Twemoji in Elixir ­🎉"], %{}}], []}
iex> Twemoji.parse(x)
"<p>Twemoji in Elixir <img draggable=\"false\" class=\"twemoji\" alt=\"party popper\" aria-label=\"party popper\" src=\"https://twemoji.maxcdn.com/2/72x72/1f389.png\"/></p>"
iex> Twemoji.parse_as_ast(x, format: :earmark)
{:ok,
 [
   {"p", [],
    [
      "Twemoji in Elixir ",
      {"img",
       [
         {"draggable", "false"},
         {"class", "twemoji"},
         {"alt", "party popper"},
         {"aria-label", "party popper"},
         {"src", "https://twemoji.maxcdn.com/2/72x72/1f389.png"}
       ], [], %{}}
    ], %{}}
 ]}

License

This repository is licensed under the MIT License