44 lines
1.1 KiB
Elixir
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
|