vendor/assets/javascripts/modularity.js.coffee in modularity-rails-0.2.0 vs vendor/assets/javascripts/modularity.js.coffee in modularity-rails-0.3.0

- old
+ new

@@ -14,41 +14,46 @@ return alert "Error in Module constructor: The given container ('#{container.selector}') is empty." unless @container? and @container.length > 0 return alert "Error in Module constructor: The given container ('#{container.selector}') has more than one element." unless @container? and @container.length == 1 # Checks whether the given condition is true. # Shows an alert with the given message if not. - assert: (condition, message) -> - alert(message) unless condition?.length > 0 + @assert: (condition, message) -> + condition_ok = condition?.length > 0 + alert(message) unless condition_ok + condition_ok # MODULE EVENTS. # Calls the given function when this widget fires the given local event. bind_event: (event_type, callback) => - @assert event_type, "Module.bind_event: parameter 'event_type' is empty" + return unless Module.assert event_type, "Module.bind_event: parameter 'event_type' is empty" + return alert "Module.bind_event: parameter 'callback' must be a function, #{callback} (#{typeof callback}) given." unless typeof callback == 'function' @container.bind event_type, callback # Fires the given local event with the given data payload. fire_event: (event_type, data) => - @assert event_type, 'Module.fire_event: You must provide the event type to fire.' - @container.trigger event_type, data or {} + Module.assert event_type, 'Module.fire_event: You must provide the event type to fire.' + return alert("Module.fire_event: Event type must be a string, #{event_type} (#{typeof event_type}) given.") unless typeof event_type == 'string' + @container.trigger event_type, data ?= {} # GLOBAL EVENTS. # Subscribes to the given global event, # i.e. calls the given function when the given global event type happens. - bind_global_event: (event_type, callback) => - @assert event_type, "Module.bind_global_event: parameter 'event_type' is empty" + @bind_global_event: (event_type, callback) => + return unless @assert event_type, "Module.bind_global_event: parameter 'event_type' is empty" + return alert "Module.bind_global_event: parameter 'callback' must be a function, #{callback} (#{typeof callback}) given." unless typeof callback == 'function' @global_event_container().bind event_type, callback # Fires the given global event with the given data payload. - fire_global_event: (event_type, data) => + @fire_global_event: (event_type, data) => @assert event_type, 'Module.fire_global_event: You must provide the event type to fire.' - @global_event_container().trigger event_type, data or [] + return alert("Module.fire_global_event: Event type must be a string, #{event_type} (#{typeof event_type}) given.") unless typeof event_type == 'string' + @global_event_container().trigger event_type, data ?= [] # Returns the DOM object that is used to fire global events on. - global_event_container: => - @global_event_container_cache or= $(window) + @global_event_container: => @global_event_container_cache or= $(window) # jQuery integration for creating Modules. # # Call like this: myModule = $('...').module(MyModuleClass)