autoexec_bat 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -5,28 +5,28 @@ AutoexecBat was written to aid organizing and running javascript code using the
5
5
  The main idea is to organize all javascript code into separate namespaces and let a data-autoexec attribute determine which module to run.
6
6
 
7
7
  Some examples:
8
-
8
+
9
9
  define "App.Products", (exports) ->
10
10
  exports.autoexec = ->
11
11
  # this is the autoexec function that AutoexecBat looks for
12
-
12
+
13
13
  # Module with private methods
14
14
  define "App.Products.Index", (exports) ->
15
15
  exports.autoexec = ->
16
16
  setupEventListeners()
17
17
  setupSomethingElse()
18
18
  takeItAway()
19
-
19
+
20
20
  setupEventListeners = ->
21
21
  $('table tbody td').on 'click', -> # event handler
22
22
  $('input').on 'click', -> # another event handler
23
-
23
+
24
24
  takeItAway = ->
25
25
  $('tag').doSomething()
26
26
 
27
27
  setupSomethingElse = ->
28
28
  $('.private').show()
29
-
29
+
30
30
  # A module with dependencies
31
31
  define "App.Products.Show", ["App.Products"], (exports) ->
32
32
  exports.autoexec = ->
@@ -35,7 +35,7 @@ Some examples:
35
35
 
36
36
  # If all you want is to run the dependencies:
37
37
  define "App.Gallery", ["App.UI.Fancybox", "App.UI.FileUpload"]
38
-
38
+
39
39
  # A simple coffeescript class:
40
40
  class namespace("App.Models").Product
41
41
  # this class will be known as App.Models.Product
@@ -43,22 +43,42 @@ Some examples:
43
43
  # Run AutoexecBat on all tags with a data-autoexec attribute (using jQuery)
44
44
  jQuery ->
45
45
  $('[data-autoexec]').autoexec()
46
-
47
- # y u no got jquery?
46
+
47
+ # If you're using the jQuery plugin you can fetch the callee in the autoexec function
48
+ define "App.Products.Show", (exports) ->
49
+ exports.autoexec = (productItem) ->
50
+ setupEventListeners(productItem)
51
+
52
+ setupEventListeners = (productItem) ->
53
+ $(productItem).on 'click', -> # specific event handler
54
+
55
+ # y u no got jquery?
48
56
  # Run it manually or use whatever
49
57
  AutoexecBat.run "App.Products.Show"
50
- # or
58
+ # or
51
59
  App.Products.Show.autoexec()
52
60
 
61
+ # To push the callee to autoexec
62
+ AutoexecBat.run "App.Products.Show", productItem
63
+ # or
64
+ App.Products.Show.autoexec(productItem)
65
+
53
66
  Finally, just add the module name to a data-autoexec attribute:
54
67
 
55
68
  <body data-autoexec="App.Products.Index">
56
-
69
+
57
70
  If the given module doesn't exist, it tries to execute a parent module.
58
- In this case, the module App.Products.autoexec() will be executed:
71
+ In this case, App.Products.autoexec() will be executed:
59
72
 
60
73
  <div data-autoexec="App.Products.Dev.Null">..</div>
61
-
74
+
75
+ ### Auto-require
76
+
77
+ If you have a module that you want to be included always, you can instruct AutoexecBat to require it:
78
+
79
+ AutoexecBat.autoRequire = "App.My.Module"
80
+
81
+ Note: this will only work with modules defined with define().
62
82
 
63
83
  ## Installation
64
84
 
@@ -66,13 +86,19 @@ Add this line to your application's Gemfile:
66
86
 
67
87
  gem 'autoexec_bat'
68
88
 
69
- Require your modules and activate autoexecution:
89
+ Require your modules and activate autoexecution (with turbolinks - default in Rails 4):
70
90
 
71
91
  #= require autoexec_bat
72
92
  #= require_tree ./folder-containing-your-modules
73
- jQuery ->
93
+ jQuery(document).bind 'ready page:change', ->
74
94
  $('[data-autoexec]').autoexec()
75
95
 
96
+ For Rails 3:
97
+
98
+ #= require autoexec_bat
99
+ #= require_tree ./folder-containing-your-modules
100
+ jQuery ->
101
+ $('[data-autoexec]').autoexec()
76
102
 
77
103
  ## Contributing
78
104
 
@@ -28,10 +28,10 @@ AutoexecBat =
28
28
  target.loaded = false
29
29
  target.autoexec = -> # make sure the autoexec function exists
30
30
  target.dependencies = dependencies
31
- target.init = ->
32
- unless @loaded
31
+ target.init = (callee) ->
32
+ unless @loaded
33
33
  require dependencies
34
- @autoexec() if typeof @autoexec is 'function'
34
+ @autoexec(callee) if typeof @autoexec is 'function'
35
35
  @autoexec = -> AutoexecBat.log "Module already initialized"
36
36
  @loaded = true
37
37
 
@@ -55,13 +55,13 @@ AutoexecBat =
55
55
  module = module[item] unless typeof module[item] is 'undefined'
56
56
  module
57
57
 
58
- initializeModule: (nameOrModule) ->
58
+ initializeModule: (nameOrModule, callee) ->
59
59
  module = if typeof nameOrModule is "string" then AutoexecBat.findModule(nameOrModule) else nameOrModule
60
- module.init() if typeof module isnt 'undefined' and typeof module.init isnt 'undefined'
60
+ module.init(callee) if typeof module isnt 'undefined' and typeof module.init isnt 'undefined'
61
61
 
62
- run: (name) ->
62
+ run: (name, callee) ->
63
63
  module = AutoexecBat.findModule name
64
- AutoexecBat.initializeModule module
64
+ AutoexecBat.initializeModule module, callee
65
65
 
66
66
 
67
67
  # Globals
@@ -75,4 +75,4 @@ unless typeof jQuery is 'undefined'
75
75
  $ = jQuery
76
76
  $.fn.extend
77
77
  autoexec: (options) ->
78
- return @each -> AutoexecBat.run $(@).data('autoexec')
78
+ return @each -> AutoexecBat.run $(@).data('autoexec'), @
@@ -1,3 +1,3 @@
1
1
  module AutoexecBat
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoexec_bat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-13 00:00:00.000000000 Z
12
+ date: 2012-11-09 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Autoexecution of javascript based on data attribute
15
15
  email:
@@ -41,22 +41,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
41
41
  - - ! '>='
42
42
  - !ruby/object:Gem::Version
43
43
  version: '0'
44
- segments:
45
- - 0
46
- hash: 1279658281685689202
47
44
  required_rubygems_version: !ruby/object:Gem::Requirement
48
45
  none: false
49
46
  requirements:
50
47
  - - ! '>='
51
48
  - !ruby/object:Gem::Version
52
49
  version: '0'
53
- segments:
54
- - 0
55
- hash: 1279658281685689202
56
50
  requirements: []
57
51
  rubyforge_project:
58
- rubygems_version: 1.8.21
52
+ rubygems_version: 1.8.24
59
53
  signing_key:
60
54
  specification_version: 3
61
55
  summary: Autoexecution of javascript based on data attribute
62
56
  test_files: []
57
+ has_rdoc: