kaspernj/translatable_menus

View on GitHub
lib/translatable_menus/connections.rb

Summary

Maintainability
A
0 mins
Test Coverage
class TranslatableMenus::Connections
  def self.instance
    @instance ||= TranslatableMenus::Connections.new
    @instance
  end
  
  def initialize
    clear
  end
  
  def clear
    @connects = {}
  end
  
  def connect(event, &blk)
    @connects[event] = [] unless @connects.key?(event)
    @connects[event] << {
      :event => event,
      :block => blk
    }
  end
  
  def call(event, controller, menu)
    return false unless @connects.key?(event)
    
    @connects[event].each do |connect_data|
      result = connect_data[:block].call(
        :controller => controller,
        :event => event,
        :menu => menu
      )
      
      return result unless result == true
    end
    
    return true
  end
end