HomingPigeon/lib/formatter.ex

44 lines
1.1 KiB
Elixir

defmodule Discordirc.Formatter do
def from_irc(nick, msg) do
from_irc(nick, msg, false)
end
def from_irc(nick, msg, ctcp) do
# strip or replace IRC formatting.
fmsg =
msg
|> :re.replace("\x02(.*?)\x02", "**\\g1**", [:global])
|> :re.replace("\x02(.*)", "**\\g1**")
|> :re.replace("\x01|\x03[0123456789]*(,[0123456789]*)?", "", [:global])
case ctcp do
true ->
case fmsg do
x when is_binary(x) -> "\\* #{nick} _#{x}_"
x when is_list(x) -> "\\* #{nick} _#{List.to_string(x)}_"
end
false ->
case fmsg do
x when is_binary(x) -> "<#{nick}> #{x}"
x when is_list(x) -> "<#{nick}> #{List.to_string(x)}"
end
end
end
def from_discord(user, msg) do
usr = "#{user.username}\##{user.discriminator}"
messages = String.split(msg, "\n")
# discord may give... many lines. split and format.
case Enum.count(messages) do
0 ->
"<#{usr}> #{messages[0]}"
x ->
messages
|> Enum.map(fn m -> "<#{usr}> #{m}" end)
end
end
end