summaryrefslogtreecommitdiff
path: root/lib/irc/client/command/away.ex
blob: 3941e5ba2fde65eab6109f0c93c28827999a255f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
defmodule Irc.Client.Command.Away do
  alias Irc.Line

  #@type t :: (away :: {:away, Irc.Mask.t, String.t}) | (unaway :: {:away, Irc.Mask.t})

  def init(_) do
    {"AWAY", :away, "away-notify"}
  end

  def handle_command(_, :away, args) do
    command = case args do
      [] -> ['AWAY']
      [message] -> ['AWAY :', message]
    end
    {:send, command}
  end

  def handle_line(_, %Line{command: "AWAY", source: source, args: args}) do
    case args do
      [] -> {:event, {:away, source}}
      [message] -> {:event, {:away, {source, message}}}
    end
  end

end