class Songbook::Song
Attributes
chords[R]
details[R]
lyrics[R]
title[R]
Public Class Methods
new(title:, details:, chords:, lyrics:)
click to toggle source
# File lib/songbook/song.rb, line 9 def initialize(title:, details:, chords:, lyrics:) @title = title @details = details @chords = chords @lyrics = lyrics end
Public Instance Methods
verses()
click to toggle source
# File lib/songbook/song.rb, line 16 def verses lyrics.map do |lyrics_verse| verse_title = find_verse_title(lyrics_verse) verse_lyrics = find_verse_lyrics(lyrics_verse) Verse.new( title: verse_title, lyrics: verse_lyrics, chords: chords[verse_title] ) end end
Private Instance Methods
find_matching_lyrics_verse(verse_title)
click to toggle source
# File lib/songbook/song.rb, line 51 def find_matching_lyrics_verse(verse_title) lyrics .select { |lyrics_verse_i| lyrics_verse_i.is_a?(Hash) } .find do |lyrics_verse_i| lyrics_verse_i.keys.first == verse_title end end
find_verse_lyrics(lyrics_verse)
click to toggle source
# File lib/songbook/song.rb, line 41 def find_verse_lyrics(lyrics_verse) if lyrics_verse.is_a?(String) find_matching_lyrics_verse(lyrics_verse).values.first elsif lyrics_verse.is_a?(Hash) lyrics_verse.values.first else raise "Unknown lyrics_verse type: #{lyrics_verse.class}" end end
find_verse_title(lyrics_verse)
click to toggle source
# File lib/songbook/song.rb, line 31 def find_verse_title(lyrics_verse) if lyrics_verse.is_a?(String) lyrics_verse elsif lyrics_verse.is_a?(Hash) lyrics_verse.keys.first else raise "Unknown lyrics_verse type: #{lyrics_verse.class}" end end