Module: Muzak::Utils

Included in:
Index, Instance, Player, Player::StubPlayer, Plugin::StubPlugin, Song
Defined in:
lib/muzak/utils.rb

Overview

A collection of convenience utilities for use throughout muzak.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.album_art?(filename) ⇒ Boolean

Tests whether the given filename is likely to be album art.

Parameters:

  • filename (String)

    the filename to test

Returns:

  • (Boolean)

    whether or not the file is an art file



14
15
16
# File 'lib/muzak/utils.rb', line 14

def self.album_art?(filename)
  File.basename(filename) =~ Config::ALBUM_ART_REGEX
end

.music?(filename) ⇒ Boolean

Tests whether the given filename is likely to be music.

Parameters:

  • filename (String)

    the filename to test

Returns:

  • (Boolean)

    whether or not the file is a music file



7
8
9
# File 'lib/muzak/utils.rb', line 7

def self.music?(filename)
  Config::MUSIC_SUFFIXES.include?(File.extname(filename.downcase))
end

.which?(util) ⇒ Boolean

Tests whether the given utility is available in the system path.

Parameters:

  • util (String)

    the utility to test

Returns:

  • (Boolean)

    whether or not the utility is available



21
22
23
24
25
# File 'lib/muzak/utils.rb', line 21

def self.which?(util)
  ENV["PATH"].split(File::PATH_SEPARATOR).any? do |path|
    File.executable?(File.join(path, util))
  end
end

Instance Method Details

#build_response(error: nil, data: nil) ⇒ Object

Returns a response hash containing the given data and error.

Parameters:

  • error (String) (defaults to: nil)

    the error string, if needed

  • data (String, Hash) (defaults to: nil)

    the data, if needed



106
107
108
109
110
111
112
113
# File 'lib/muzak/utils.rb', line 106

def build_response(error: nil, data: nil)
  { response: {
      error: error,
      data: data,
      method: caller_locations.first.label
    }
  }
end

#danger(*args) ⇒ void

This method returns an undefined value.

Outputs a boxed warning message.

Parameters:

  • args (Array<String>)

    the message(s)



65
66
67
# File 'lib/muzak/utils.rb', line 65

def danger(*args)
  output pretty(:yellow, "warn"), args
end

#debug(*args) ⇒ void

This method returns an undefined value.

Outputs a boxed debugging message.

Parameters:

  • args (Array<String>)

    the message(s)



88
89
90
91
92
# File 'lib/muzak/utils.rb', line 88

def debug(*args)
  return unless debug?
  context = self.is_a?(Module) ? name : self.class.name
  output pretty(:yellow, "debug"), "[#{context}]", args
end

#debug?Boolean

Returns whether or not muzak is running in debug mode.

Returns:

  • (Boolean)

    whether or not muzak is running in debug mode



28
29
30
# File 'lib/muzak/utils.rb', line 28

def debug?
  Config.debug
end

#error(*args) ⇒ void

This method returns an undefined value.

Outputs a boxed error message.

Parameters:

  • args (Array<String>)

    the message(s)



72
73
74
75
# File 'lib/muzak/utils.rb', line 72

def error(*args)
  context = self.is_a?(Module) ? name : self.class.name
  output pretty(:red, "error"), "[#{context}]", args
end

#error!(*args) ⇒ void

This method returns an undefined value.

Outputs a boxed error message and then exits.

Parameters:

  • args (Array<String>)

    the message(s)



80
81
82
83
# File 'lib/muzak/utils.rb', line 80

def error!(*args)
  error *args
  exit 1
end

#output(box, *args) ⇒ void

This method returns an undefined value.

Outputs a boxed message and arguments.

Parameters:

  • box (String)

    the string to box

  • args (Array<String>)

    the trailing strings to print



57
58
59
60
# File 'lib/muzak/utils.rb', line 57

def output(box, *args)
  msg = args.join(" ")
  puts "[#{box}] #{msg}"
end

#pretty(color = :none, str) ⇒ String

Formats a string with ANSI colors.

Parameters:

  • color (Symbol) (defaults to: :none)

    the color to use on the string

  • str (String)

    the string to format

Returns:

  • (String)

    the color-formatted string



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/muzak/utils.rb', line 41

def pretty(color = :none, str)
  colors = {
    none: 0,
    red: 31,
    green: 32,
    yellow: 33,
    blue: 34
  }

  "\e[#{colors[color]}m#{str}\e[0m"
end

#verbose(*args) ⇒ void

This method returns an undefined value.

Outputs a boxed verbose message.

Parameters:

  • args (Array<String>)

    the message(s)



97
98
99
100
101
# File 'lib/muzak/utils.rb', line 97

def verbose(*args)
  return unless verbose?

  output pretty(:blue, "verbose"), args
end

#verbose?Boolean

Returns whether or not muzak is running in verbose mode.

Returns:

  • (Boolean)

    whether or not muzak is running in verbose mode



33
34
35
# File 'lib/muzak/utils.rb', line 33

def verbose?
  Config.verbose
end