class ACappella::Singer

Public Class Methods

new(voice) click to toggle source
# File lib/acappella/singer.rb, line 5
def initialize(voice)
  raise ACappella::VoiceTypeError.new("can't sing voice.") unless valid_voice?(voice)

  @voice = voice
end

Public Instance Methods

sing(lyrics) click to toggle source
# File lib/acappella/singer.rb, line 11
def sing(lyrics)
  logging(lyrics)

  shellescaped_args = [@voice, lyrics].shelljoin

  system("say -v #{shellescaped_args}")
end

Private Instance Methods

logging(lyrics) click to toggle source
# File lib/acappella/singer.rb, line 25
def logging(lyrics)
  sang_at = Time.now.strftime('%Y-%m-%d %H:%M:%S')

  puts [sang_at, lyrics].join("\t")
end
valid_voice?(voice) click to toggle source
# File lib/acappella/singer.rb, line 21
def valid_voice?(voice)
  ACappella::VoiceType::VOICE_VARIATIONS.include?(voice)
end