class SlackLogViewer

Main class of Slack Log Viewer. Sinatra app.

@since 0.1

Version of Slack Log Viewer

Constants

VERSION

Private Instance Methods

channels() click to toggle source
# File lib/slack_log_viewer.rb, line 65
def channels
  Dir["#{settings.log_dir}/*"]
    .select { |e| e !~ /\.json/ }
    .map { |e| File.basename(e) }
end
channels_data() click to toggle source
# File lib/slack_log_viewer.rb, line 108
def channels_data
  Hash[
    *JSON
      .load(File.read("#{settings.log_dir}/channels.json"))
      .map { |ch| [ch['id'], ch] }
      .flatten
  ]
end
dates(channel) click to toggle source
# File lib/slack_log_viewer.rb, line 71
def dates(channel)
  Dir["#{settings.log_dir}/#{channel}/*"]
    .map { |e| File.basename(e, '.json') }
end
logs(channel, day) click to toggle source
# File lib/slack_log_viewer.rb, line 76
def logs(channel, day)
  parse(File.read("#{settings.log_dir}/#{channel}/#{day}.json"))
end
parse(logs) click to toggle source
# File lib/slack_log_viewer.rb, line 80
def parse(logs)
  user_dic = users_data
  ch_dic = channels_data
  logs = JSON.load(logs)
  logs.map do |log|
    log['user'] = user_dic[log['user']]
    log['raw_text'] = log['text']
    log['text'] =
      log['text']
      .gsub(/simple_smile/, 'smile')
      .gsub(/<@(.*?)(\|.*?)?>/){ "@#{user_dic[$1]['name']}" }
      .gsub(/<#(.*?)(\|.*?)?>/){ $2 ? "##{$2[1..-1]}" : "##{ch_dic[$1]['name']}" }
      .gsub(/<(.*?)(\|.*?)?>/, "<a href='\\1'>\\1</a>")
      .gsub(/```(.*?)```/m){ "<pre>#{ $1.strip if $1 }</pre>" }
      .gsub("\n", '<br />')
    log
  end
end
users_data() click to toggle source
# File lib/slack_log_viewer.rb, line 99
def users_data
  Hash[
    *JSON
      .load(File.read("#{settings.log_dir}/users.json"))
      .map { |user| [user['id'], user] }
      .flatten
  ]
end