class Vagalume::LyricFormatter

Public Instance Methods

format(search, options) click to toggle source
# File lib/vagalume/lyric_formatter.rb, line 3
def format(search, options)
  return "No lyric found" if search.not_found?

  original_song = search.song

  if options[:translation]
    translated_song = search.translations.with_language(Vagalume::Language::PORTUGUESE)
    return "No translation found" if translated_song.nil?
    return formatted_song_with_transaction(original_song, translated_song)
  end

  "\n\n#{original_song.name}\n\n#{original_song.lyric}"
end

Private Instance Methods

biggest_line_size(lyric) click to toggle source
# File lib/vagalume/lyric_formatter.rb, line 39
def biggest_line_size(lyric)
  lyric.each_line.max { |a, b| a.length <=> b.length }.size
end
find_separator(biggest_line_size, lyric_line) click to toggle source
# File lib/vagalume/lyric_formatter.rb, line 35
def find_separator(biggest_line_size, lyric_line)
  " " * (biggest_line_size - lyric_line.size) + "     |     "
end
formatted_song_with_transaction(song, translated_song) click to toggle source
# File lib/vagalume/lyric_formatter.rb, line 19
def formatted_song_with_transaction(song, translated_song)
  original_lyrics_lines = [song.name, ""] + song.lyric.split("\n")
  translated_lyrics_lines = [translated_song.name, ""] + translated_song.lyric.split("\n")

  biggest_line_size = biggest_line_size(song.lyric)
  formatted_output = "\n\n"

  original_lyrics_lines.each_with_index do |original_line, index|
    separator = find_separator(biggest_line_size, original_line)
    translated_line = translated_lyrics_lines[index]
    formatted_output += original_line + separator + translated_line.to_s + "\n"
  end

  formatted_output
end