defmodule Nola.Irc.Message do @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