class Slack::Notifier::PayloadMiddleware::At

def at_cmd_char at

def at_cmd_char at
  case at
  when :here, :channel, :everyone, :group
    "!"
  else
    "@"
  end
end

def call payload={}

def call payload={}
  return payload unless payload[:at]
  payload[:text] = "#{format_ats(payload.delete(:at))}#{payload[:text]}"
  payload
end

def format_ats ats

def format_ats ats
  Array(ats).map { |at| "<#{at_cmd_char(at)}#{at}> " }
            .join("")
end