speg03の雑記帳

主に未来の自分のために試したことなどを記録しています

Termtterでユーザ名だけ色付け

Termtterはとっても便利.

ただ,個人的には文章全体に色を付けるよりも,ユーザ名だけ色が付いてて欲しい.ので,こんな風にした.ついでにグループごとに色分け.

グループ名とか色とか好きなように.これで,発言者と発言の中に含まれる@なんとかの部分が決めた色に変わる.

self
green
group1
red
group2
yellow
bot
magenta

それ以外のグループの人はデフォルトカラー(この場合は94番)にしてる.

.termtter

configatron.plugins.group.groups = {
  :self => %w(yano),
  :group1 => %w(group1_user1 group1_user2),
  :group2 => %w(group2_user1),
  :bot => %w(buzztter mhp2g_fan romasaga nicovideojp),
}

configatron.mycolor.default_color = 94
configatron.mycolor.groups = {
  :self => :green,
  :group1 => :red,
  :group2 => :yellow,
  :bot => :magenta,
}

configatron.plugins.stdout.timeline_format =
  '<%= color(time, :cyan) %> <%= my_status_format(s) %> <%= color(id, 90) %>'


def my_status_format status
  name = color(status.user_screen_name, name_color(status.user_screen_name))
  text = status.text.gsub(/@([[:alnum:]_]+)/) do |match|
    color(match, name_color($1))
  end
  "#{name}: #{text}"
end

def name_color name
  color_number = configatron.mycolor.default_color
  configatron.mycolor.groups.each do |g, c|
    group = configatron.plugins.group.groups[g]
    color_number = c if group && group.include?(name)
  end
  color_number
end