module Notifies

Constants

NOTIFIERS
VERSION

Public Class Methods

enabled=(enabled) click to toggle source
# File lib/notifies.rb, line 55
def self.enabled= enabled
  @@enabled = !!enabled
end
enabled?() click to toggle source
# File lib/notifies.rb, line 59
def self.enabled?
  @@enabled
end
notifier(*args) click to toggle source
# File lib/notifies.rb, line 32
def self.notifier *args
  options = args.last.kind_of?(Hash) ? args.pop : {}

  if key = args.shift
    raise UnknownNotifierError.new(key.inspect) unless n = NOTIFIERS[key]
    return !options[:available] || n && n.available? ? n : nil
  end

  ordered_notifiers(options).each_pair do |key,notifier|
    return notifier if notifier.available?
  end

  nil
end
notify(msg, options = {}) click to toggle source
# File lib/notifies.rb, line 16
def self.notify msg, options = {}
  return false if !@@enabled or (options.key?(:enabled) and !options[:enabled])
  n = notifier options
  n ? n.notify(msg, options) : nil
end
prefer(*keys) click to toggle source
# File lib/notifies.rb, line 51
def self.prefer *keys
  NOTIFIERS.replace(ordered_notifiers(preferred: keys.flatten)).keys
end
preferred() click to toggle source
# File lib/notifies.rb, line 47
def self.preferred
  NOTIFIERS.keys
end
register(key, notifier) click to toggle source
# File lib/notifies.rb, line 63
def self.register key, notifier
  # TODO: test key override
  NOTIFIERS[key] = notifier
end
register_defaults() click to toggle source
# File lib/notifies.rb, line 68
def self.register_defaults
  register :notification_center, Notifies::NotificationCenter
  register :growl, Notifies::Growl
end

Private Class Methods

ordered_notifiers(options = {}) click to toggle source
# File lib/notifies.rb, line 75
def self.ordered_notifiers options = {}
  return NOTIFIERS unless options[:preferred]

  keys = [ options.delete(:preferred) ].flatten.uniq
  unknown_keys = keys.reject{ |k| NOTIFIERS[k] }
  raise UnknownNotifierError.new(unknown_keys.collect{ |k| k.inspect }.join(', ')) unless unknown_keys.empty?

  notifiers = NOTIFIERS.dup

  Hash.new.tap do |ordered|
    keys.each{ |k| ordered[k] = notifiers.delete k }
    notifiers.each_pair{ |k,v| ordered[k] = v }
  end
end