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)