summaryrefslogtreecommitdiff
path: root/lib/irc.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/irc.ex')
-rw-r--r--lib/irc.ex25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/irc.ex b/lib/irc.ex
index 6ba819c..f989366 100644
--- a/lib/irc.ex
+++ b/lib/irc.ex
@@ -31,4 +31,29 @@ defmodule IRC do
defp admin_part_match?(a, a), do: true
defp admin_part_match?(_, _), do: false
+ @max_chars 440
+
+ def splitlong(string, max_chars \\ 440)
+
+ def splitlong(string, max_chars) when is_list(string) do
+ Enum.map(string, fn(s) -> splitlong(s, max_chars) end)
+ |> List.flatten()
+ end
+
+ def splitlong(string, max_chars) do
+ string
+ |> String.codepoints
+ |> Enum.chunk_every(max_chars)
+ |> Enum.map(&Enum.join/1)
+ end
+
+ def splitlong_with_prefix(string, prefix, max_chars \\ 440) do
+ prefix = "#{prefix} "
+ max_chars = max_chars - (length(String.codepoints(prefix)))
+ string
+ |> String.codepoints
+ |> Enum.chunk_every(max_chars)
+ |> Enum.map(fn(line) -> prefix <> Enum.join(line) end)
+ end
+
end