class Ruboty::Handlers::FlexibleAlias

Constants

NAMESPACE

Public Instance Methods

create(message) click to toggle source
# File lib/ruboty/handlers/flexible_alias.rb, line 39
def create(message)
  from = message[:original]
  to = message[:alias]
  register('*', from, to)
  message.reply("Registered alias: #{from} -> #{to}")
end
create_scoped(message) click to toggle source
# File lib/ruboty/handlers/flexible_alias.rb, line 46
def create_scoped(message)
  scope = message.from
  from = message[:original]
  to = message[:alias]
  register(scope, from, to)
  message.reply("Registered alias: #{from} -> #{to}")
end
delete(message) click to toggle source
# File lib/ruboty/handlers/flexible_alias.rb, line 54
def delete(message)
  scope = message.from
  if (table[scope] || {}).delete(message[:alias])
    message.reply('Deleted')
  else
    if (table['*'] || {}).delete(message[:alias])
      message.reply('Deleted')
    else
      message.reply('Not found')
    end
  end
end
list(message) click to toggle source
# File lib/ruboty/handlers/flexible_alias.rb, line 67
def list(message)
  message.reply(aliases(message.from), code: true)
end
resolve(message) click to toggle source
# File lib/ruboty/handlers/flexible_alias.rb, line 71
def resolve(message)
  scope = message.from
  scoped = table[scope] || {}
  all = table['*'] || {}
  from = message.body.gsub(prefix, '')

  hit = false
  all.merge(scoped).each_pair do |pattern, transformed|
    alias_cmd = Ruboty::FlexibleAlias::Alias.new(pattern, transformed)

    next unless aliased = alias_cmd.tranfrom(from)
    robot.receive(
      message.original.merge(
        body: "#{message.body[prefix]}#{aliased}"
      )
    )
    hit = true
    break
  end

  hit
end

Private Instance Methods

aliases(scope) click to toggle source
# File lib/ruboty/handlers/flexible_alias.rb, line 105
def aliases(scope)
  scoped = table[scope] || {}
  all = table['*'] || {}
  flexible_table = all.merge(scoped)
  if flexible_table.empty?
    'No alias registered'
  else
    flexible_table.map { |from, to| "#{from} -> #{to}" }.join("\n")
  end
end
prefix() click to toggle source
# File lib/ruboty/handlers/flexible_alias.rb, line 116
def prefix
  Ruboty::Action.prefix_pattern(robot.name)
end
register(scope, original, transformed) click to toggle source
# File lib/ruboty/handlers/flexible_alias.rb, line 96
def register(scope, original, transformed)
  table[scope] ||= {}
  table[scope][original] = transformed
end
table() click to toggle source
# File lib/ruboty/handlers/flexible_alias.rb, line 101
def table
  robot.brain.data[NAMESPACE] ||= {}
end