class Ellen::Handlers::Alias

Constants

NAMESPACE

Public Instance Methods

create(message) click to toggle source
# File lib/ellen/handlers/alias.rb, line 31
def create(message)
  from = message[:from]
  to = message[:to]
  table[from] = to
  message.reply("Registered alias: #{from} -> #{to}")
end
delete(message) click to toggle source
# File lib/ellen/handlers/alias.rb, line 38
def delete(message)
  if table.delete(message[:from])
    message.reply("Deleted")
  else
    message.reply("Not found")
  end
end
list(message) click to toggle source
# File lib/ellen/handlers/alias.rb, line 46
def list(message)
  message.reply(aliases, code: true)
end
resolve(message) click to toggle source
# File lib/ellen/handlers/alias.rb, line 50
def resolve(message)
  from = message.body.gsub(prefix, "")
  if aliased = table[from]
    robot.receive(
      message.original.merge(
        body: "#{message.body[prefix]}#{aliased}"
      )
    )
  end
end

Private Instance Methods

aliases() click to toggle source
# File lib/ellen/handlers/alias.rb, line 67
def aliases
  if table.empty?
    "No alias registered"
  else
    table.map {|from, to| "%-#{max_from_length}s -> #{to}" % from }.join("\n")
  end
end
max_from_length() click to toggle source
# File lib/ellen/handlers/alias.rb, line 75
def max_from_length
  table.keys.map(&:length).max
end
prefix() click to toggle source
# File lib/ellen/handlers/alias.rb, line 79
def prefix
  Ellen::Action.prefix_pattern(robot.name)
end
table() click to toggle source
# File lib/ellen/handlers/alias.rb, line 63
def table
  robot.brain.data[NAMESPACE] ||= {}
end