class Sounder::Soundboard
Attributes
root[RW]
version_info[R]
Public Class Methods
new(sounds:, version_info: "Sounder Soundboard", root: nil)
click to toggle source
# File lib/sounder/soundboard.rb, line 6 def initialize sounds:, version_info: "Sounder Soundboard", root: nil @soundgroup = {} @version_info = version_info @sounds = sounds @root = root end
Public Instance Methods
run(args)
click to toggle source
# File lib/sounder/soundboard.rb, line 13 def run args case when random?(args) then soundgroup.random when help?(args) then puts usage when sound?(args) then play_sound(args.join ' ') else puts usage end end
Private Instance Methods
get_path(file)
click to toggle source
# File lib/sounder/soundboard.rb, line 43 def get_path file raise RootNotSetError.new("You must set a support directory first") unless root File.join root, "#{file}.m4a" end
help?(args)
click to toggle source
# File lib/sounder/soundboard.rb, line 52 def help? args args.size == 1 && %w[-h --help].include?(args.first) end
play_sound(sound_name)
click to toggle source
# File lib/sounder/soundboard.rb, line 32 def play_sound sound_name soundgroup.play sound_name rescue UnknownSoundError unknown_sound_message sound_name end
random?(args)
click to toggle source
# File lib/sounder/soundboard.rb, line 56 def random? args args.size == 1 && args.first == 'random' end
sound?(args)
click to toggle source
# File lib/sounder/soundboard.rb, line 48 def sound? args not args.empty? end
soundgroup()
click to toggle source
# File lib/sounder/soundboard.rb, line 25 def soundgroup @soundgroup[root] ||= begin names_and_paths = Hash[@sounds.map { |name, file| [name, get_path(file)] }] SoundGroup.new names_and_paths end end
unknown_sound_message(sound_name)
click to toggle source
# File lib/sounder/soundboard.rb, line 38 def unknown_sound_message sound_name puts "Error: \"#{sound_name}\" does not match a known sound" puts usage end
usage()
click to toggle source
# File lib/sounder/soundboard.rb, line 60 def usage usage = soundgroup.usage.map { |line| " #{line}" } usage.unshift version_info, "Usage:" usage.join "\n" end