Class: Slk::Formatters::SearchFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/slk/formatters/search_formatter.rb

Overview

Formats search results for terminal display

Instance Method Summary collapse

Constructor Details

#initialize(output:, mention_replacer:, text_processor:) ⇒ SearchFormatter

Returns a new instance of SearchFormatter.



7
8
9
10
11
# File 'lib/slk/formatters/search_formatter.rb', line 7

def initialize(output:, mention_replacer:, text_processor:)
  @output = output
  @mentions = mention_replacer
  @text_processor = text_processor
end

Instance Method Details

#display_all(results, workspace, options: {}) ⇒ Object

Display a list of search results



14
15
16
17
18
19
20
21
# File 'lib/slk/formatters/search_formatter.rb', line 14

def display_all(results, workspace, options: {})
  return @output.puts 'No results found.' if results.empty?

  results.each_with_index do |result, index|
    display_result(result, workspace, options)
    @output.puts if index < results.length - 1
  end
end

#display_result(result, workspace, options = {}) ⇒ Object

Display a single search result



24
25
26
27
28
29
30
31
32
# File 'lib/slk/formatters/search_formatter.rb', line 24

def display_result(result, workspace, options = {})
  timestamp = @output.blue("[#{format_time(result.timestamp)}]")
  channel = @output.cyan(resolve_channel(result, workspace))
  user = @output.bold("#{resolve_user(result, workspace)}:")
  text = prepare_text(result.text, workspace, options)

  @output.puts "#{timestamp} #{channel} #{user} #{text}"
  display_files(result.files) if result.files&.any?
end