modjs-architecture 0.4.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -6,6 +6,7 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  gem "architecture-js"
9
+ gem "ejs"
9
10
 
10
11
  group :test do
11
12
  gem 'simplecov', :require => false
data/README.md CHANGED
@@ -23,29 +23,29 @@ This will create the myapp application in the example folder (creating the folde
23
23
  ## The Application object
24
24
  Mod.js creates an application object which acts as a namespace for your entire application. This global variable will encapsulate most of the code in your web application and act as the central hub of your modules.
25
25
 
26
- The application object really couldn't be much simpler. It has one method and one property. The name property is just a string that identifys the object. It's only method is add_module, which creates a new module, adds that module as a property, and returns a reference to the new module. This method's only purpose is to attach a new module to the global namespace.
26
+ The application object really couldn't be much simpler. It has one method and one property. The name property is just a string that identifys the object. It's only method is addModule, which creates a new module, adds that module as a property, and returns a reference to the new module. This method's only purpose is to attach a new module to the global namespace.
27
27
 
28
28
  ```js
29
- myapp.add_module('dashboard'); // creates myapp.dashboard module
29
+ myapp.addModule('dashboard'); // creates myapp.dashboard module
30
30
  ```
31
31
 
32
32
  ## Modules
33
33
  Modules are the heart of a modjs application. They're not exactly controllers and they're not exactly classes but they share a lot of the same responsibilities as you'd expect from these classical constructs. Modules are based on the typical browser-based workflow. Wait for the DOM, when it's ready attach events, setup plugins, and ajax the shit out of it, etc.
34
34
 
35
- Mod.js modules encapsulate this common pattern and create a coherent way to design and create javascript solutions. Modules are only slightly more sophisticated than the application object itself. A modules two main method's are init and init_when_ready.
35
+ Mod.js modules encapsulate this common pattern and create a coherent way to design and create javascript solutions. Modules are only slightly more sophisticated than the application object itself. A modules two main method's are init and initWhenReady.
36
36
 
37
- Calling init_when_ready will wait for the dom to be loaded and then call the init method. By default, the init method does nothing. You will provide the code for the init method. The init method should follow the composed method pattern, a simple list of functions to call when the dom is ready. An example of a typical module looks something like this:
37
+ Calling initWhenReady will wait for the dom to be loaded and then call the init method. By default, the init method does nothing. You will provide the code for the init method. The init method should follow the composed method pattern, a simple list of functions to call when the dom is ready. An example of a typical module looks something like this:
38
38
 
39
39
  ```js
40
40
  (function(app) {
41
- var m = app.add_module('dashboard');
41
+ var m = app.addModule('dashboard');
42
42
 
43
43
  m.init = function() {
44
44
  setup_tabbed_navigation();
45
45
  open_external_links_in_new_tab();
46
46
  };
47
47
 
48
- m.init_when_ready();
48
+ m.initWhenReady();
49
49
 
50
50
  // Private methods
51
51
 
@@ -57,7 +57,7 @@ Calling init_when_ready will wait for the dom to be loaded and then call the ini
57
57
  var links = $('a');
58
58
  var re_local = new RegExp(location.hostname);
59
59
  var external_links = links.filter(function(i, link) {
60
- if (is_defined($(link).attr('href'))) {
60
+ if (isDefined($(link).attr('href'))) {
61
61
  if (href.match(/^https?\:\/\//) && !re_local.test(href)) {
62
62
  return true;
63
63
  }
@@ -72,13 +72,13 @@ This probably looks similar to the code you write currently, Mod.js simply makes
72
72
 
73
73
  Notice that the entire module is wrapped in a closure. This creates a private scope specific to this module. Public methods and properties can be created by attaching them to the module, private properties and methods are simply defined inside the closure, with no connection to the global scope. Also notice that the application object is passed into the closure and aliased as `app`. This means if application name changes or you wish to copy this module into another application, you only need to change the name in one place. It also has the added advantage of being short when referencing the namespace.
74
74
 
75
- Next is the module instantiation: `var m = app.add_module('dashboard')`. This line adds a new Mod.js module to the application and returns a reference to that module to be stored as `m`. This serves multiple purposes. For one, it provides a concrete reference to the current module, you won't have to juggle the `this` variable throughout the code. It also serves to attach public methods and properties to the module's scope.
75
+ Next is the module instantiation: `var m = app.addModule('dashboard')`. This line adds a new Mod.js module to the application and returns a reference to that module to be stored as `m`. This serves multiple purposes. For one, it provides a concrete reference to the current module, you won't have to juggle the `this` variable throughout the code. It also serves to attach public methods and properties to the module's scope.
76
76
 
77
77
  Next, see the `init` method declaration. This is where to put all the code which runs when the DOM is ready to be manipulated. Notice that the `setup_tabbed_navigation` method and the `open_external_links_in_new_tab` method are both defined as private methods inside the closure. By using this pattern, only the `dashboard` module has access to these methods. If you wanted to make these methods publicly accessible, simply add the methods to the module namespace. The previous module re-written with public methods would look like this:
78
78
 
79
79
  ```js
80
80
  (function(app) {
81
- var m = app.add_module('dashboard');
81
+ var m = app.addModule('dashboard');
82
82
 
83
83
  m.init = function() {
84
84
  m.setup_tabbed_navigation();
@@ -93,7 +93,7 @@ Next, see the `init` method declaration. This is where to put all the code which
93
93
  var links = $('a');
94
94
  var re_local = new RegExp(location.hostname);
95
95
  var external_links = links.filter(function(i, link) {
96
- if (is_defined($(link).attr('href'))) {
96
+ if (isDefined($(link).attr('href'))) {
97
97
  if (href.match(/^https?\:\/\//) && !re_local.test(href)) {
98
98
  return true;
99
99
  }
@@ -102,7 +102,7 @@ Next, see the `init` method declaration. This is where to put all the code which
102
102
  external_links.attr('target', '_blank');
103
103
  }
104
104
 
105
- m.init_when_ready();
105
+ m.initWhenReady();
106
106
  })(myapp);
107
107
  ```
108
108
 
@@ -110,13 +110,13 @@ This makes these methods available publicly through the application namespace. F
110
110
 
111
111
  ```js
112
112
  (function(app){
113
- var m = app.add_module('some_other_module');
113
+ var m = app.addModule('some_other_module');
114
114
 
115
115
  m.init = function() {
116
116
  app.dashboard.open_external_links_in_new_tab();
117
117
  }
118
118
 
119
- m.init_when_ready();
119
+ m.initWhenReady();
120
120
  })(myapp);
121
121
  ```
122
122
 
@@ -139,7 +139,7 @@ The modules and application directories contain the main scripts of your applica
139
139
  //= require "../plugins/foo"
140
140
 
141
141
  (function(app) {
142
- var m = app.add_module('dashboard');
142
+ var m = app.addModule('dashboard');
143
143
 
144
144
  ...
145
145
  })(myapp);
@@ -155,7 +155,7 @@ In this day and age of javascript programming, it seems everyone starts with a D
155
155
 
156
156
  ```js
157
157
  (function(app) {
158
- var m = app.add_module('dashboard');
158
+ var m = app.addModule('dashboard');
159
159
 
160
160
  //= require "../elements/dashboard.elements"
161
161
 
@@ -187,14 +187,14 @@ Now to update the dashboard.module file to use the new cahced selectors:
187
187
 
188
188
  ```js
189
189
  (function(app) {
190
- var m = app.add_module('dashboard');
190
+ var m = app.addModule('dashboard');
191
191
 
192
192
  m.init = function() {
193
193
  setup_tabbed_navigation();
194
194
  open_external_links_in_new_tab();
195
195
  };
196
196
 
197
- m.init_when_ready();
197
+ m.initWhenReady();
198
198
 
199
199
  // Private methods
200
200
 
@@ -205,7 +205,7 @@ Now to update the dashboard.module file to use the new cahced selectors:
205
205
  function open_external_links_in_new_tab() {
206
206
  var re_local = new RegExp(location.hostname);
207
207
  var external_links = m.elements('links').filter(function(i, link) {
208
- if (is_defined($(link).attr('href'))) {
208
+ if (isDefined($(link).attr('href'))) {
209
209
  if (href.match(/^https?\:\/\//) && !re_local.test(href)) {
210
210
  return true;
211
211
  }
@@ -224,7 +224,7 @@ Models in Mod.js are simply json structures that are owned by the module. Each m
224
224
 
225
225
  ```js
226
226
  (function(app) {
227
- var m = app.add_module('dashboard');
227
+ var m = app.addModule('dashboard');
228
228
 
229
229
  //= require "../elements/dashboard.elements"
230
230
  //= require "../models/dashboard.model"
@@ -241,7 +241,7 @@ Models in Mod.js are simply json structures that are owned by the module. Each m
241
241
  Now that the model is included in our module we can use the `dashboard.model.js` file to attach data to our module. Using the simple example of a plugin configuration object, we'll add configuration data to the `tabs` plugin being used by `setup_tabbed_navigation`:
242
242
 
243
243
  ```js
244
- m.set_data('tab_config', {
244
+ m.setData('tab_config', {
245
245
  selectedTab: 2,
246
246
  transition: 'fade'
247
247
  });
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.6.0
data/docs/dom.html CHANGED
@@ -2,43 +2,43 @@
2
2
  <span class="nx">queue</span> <span class="o">=</span> <span class="p">[];</span></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">&#182;</a> </div> <p>Set a <code>cache</code> property to store selected elements and an <code>is_ready</code> property to determine DOM status.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="kd">function</span> <span class="nx">DOM</span><span class="p">()</span> <span class="p">{</span>
3
3
  <span class="k">this</span><span class="p">.</span><span class="nx">cache</span> <span class="o">=</span> <span class="p">{};</span>
4
4
  <span class="k">this</span><span class="p">.</span><span class="nx">is_ready</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
5
- <span class="p">}</span></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">&#182;</a> </div> <h3>add_event</h3>
5
+ <span class="p">}</span></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">&#182;</a> </div> <h3>addEvent</h3>
6
6
 
7
- <p>Convenience method to attach events</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">add_event</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="nx">type</span><span class="p">,</span> <span class="nx">fn</span><span class="p">,</span> <span class="nx">capture</span><span class="p">)</span> <span class="p">{</span>
7
+ <p>Convenience method to attach events</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addEvent</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="nx">type</span><span class="p">,</span> <span class="nx">fn</span><span class="p">,</span> <span class="nx">capture</span><span class="p">)</span> <span class="p">{</span>
8
8
  <span class="k">if</span> <span class="p">(</span><span class="nx">is_undefined</span><span class="p">(</span><span class="nx">capture</span><span class="p">))</span> <span class="p">{</span>
9
9
  <span class="nx">capture</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
10
10
  <span class="p">}</span>
11
11
 
12
- <span class="k">if</span> <span class="p">(</span><span class="nx">is_string</span><span class="p">(</span><span class="nx">element</span><span class="p">))</span> <span class="p">{</span>
12
+ <span class="k">if</span> <span class="p">(</span><span class="nx">isString</span><span class="p">(</span><span class="nx">element</span><span class="p">))</span> <span class="p">{</span>
13
13
  <span class="nx">element</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">cache</span><span class="p">[</span><span class="nx">element</span><span class="p">];</span>
14
14
  <span class="p">}</span>
15
15
 
16
16
  <span class="nx">element</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">fn</span><span class="p">,</span> <span class="nx">capture</span><span class="p">);</span>
17
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">&#182;</a> </div> <h3>remove_event</h3>
17
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">&#182;</a> </div> <h3>removeEvent</h3>
18
18
 
19
- <p>Convenience method to remove events</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">remove_event</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="nx">type</span><span class="p">,</span> <span class="nx">fn</span><span class="p">,</span> <span class="nx">capture</span><span class="p">)</span> <span class="p">{</span>
19
+ <p>Convenience method to remove events</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">removeEvent</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="nx">type</span><span class="p">,</span> <span class="nx">fn</span><span class="p">,</span> <span class="nx">capture</span><span class="p">)</span> <span class="p">{</span>
20
20
  <span class="k">if</span> <span class="p">(</span><span class="nx">is_undefined</span><span class="p">(</span><span class="nx">capture</span><span class="p">))</span> <span class="p">{</span>
21
21
  <span class="nx">capture</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
22
22
  <span class="p">}</span>
23
23
 
24
- <span class="k">if</span> <span class="p">(</span><span class="nx">is_string</span><span class="p">(</span><span class="nx">element</span><span class="p">))</span> <span class="p">{</span>
24
+ <span class="k">if</span> <span class="p">(</span><span class="nx">isString</span><span class="p">(</span><span class="nx">element</span><span class="p">))</span> <span class="p">{</span>
25
25
  <span class="nx">element</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">cache</span><span class="p">[</span><span class="nx">element</span><span class="p">];</span>
26
26
  <span class="p">}</span>
27
27
 
28
28
  <span class="nx">element</span><span class="p">.</span><span class="nx">removeEventListener</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">fn</span><span class="p">,</span> <span class="nx">capture</span><span class="p">);</span>
29
29
  <span class="p">};</span></pre></div> </td> </tr> <tr id="section-7"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7">&#182;</a> </div> <h3>call<em>when</em>ready</h3>
30
30
 
31
- <p>Pass a function to call when the DOM is ready</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">call_when_ready</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">func</span><span class="p">)</span> <span class="p">{</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">&#182;</a> </div> <p>if DOM is already loaded execute the function</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">is_ready</span><span class="p">)</span> <span class="p">{</span>
31
+ <p>Pass a function to call when the DOM is ready</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">callWhenReady</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">func</span><span class="p">)</span> <span class="p">{</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">&#182;</a> </div> <p>if DOM is already loaded execute the function</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">is_ready</span><span class="p">)</span> <span class="p">{</span>
32
32
  <span class="k">return</span> <span class="nx">func</span><span class="p">();</span>
33
33
  <span class="p">}</span></pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">&#182;</a> </div> <p>if timer is ticking</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="p">(</span><span class="nx">timer</span><span class="p">)</span> <span class="p">{</span>
34
34
  <span class="nx">queue</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">func</span><span class="p">);</span>
35
- <span class="p">}</span></pre></div> </td> </tr> <tr id="section-10"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10">&#182;</a> </div> <p>this is the first in the queue</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">else</span> <span class="p">{</span></pre></div> </td> </tr> <tr id="section-11"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-11">&#182;</a> </div> <p>attach to the load event, just in case it finishes first.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">this</span><span class="p">.</span><span class="nx">add_event</span><span class="p">(</span><span class="nb">window</span><span class="p">,</span> <span class="s1">&#39;load&#39;</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">execute_ready_queue</span><span class="p">);</span>
35
+ <span class="p">}</span></pre></div> </td> </tr> <tr id="section-10"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10">&#182;</a> </div> <p>this is the first in the queue</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">else</span> <span class="p">{</span></pre></div> </td> </tr> <tr id="section-11"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-11">&#182;</a> </div> <p>attach to the load event, just in case it finishes first.</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">this</span><span class="p">.</span><span class="nx">addEvent</span><span class="p">(</span><span class="nb">window</span><span class="p">,</span> <span class="s1">&#39;load&#39;</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">executeReadyQueue</span><span class="p">);</span>
36
36
  <span class="nx">queue</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">func</span><span class="p">);</span>
37
- <span class="nx">timer</span> <span class="o">=</span> <span class="nx">setInterval</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">execute_ready_queue</span><span class="p">,</span> <span class="mi">13</span><span class="p">);</span>
37
+ <span class="nx">timer</span> <span class="o">=</span> <span class="nx">setInterval</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">executeReadyQueue</span><span class="p">,</span> <span class="mi">13</span><span class="p">);</span>
38
38
  <span class="p">}</span>
39
39
  <span class="p">};</span></pre></div> </td> </tr> <tr id="section-12"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-12">&#182;</a> </div> <h3>execute<em>ready</em>queue</h3>
40
40
 
41
- <p>Execute all methods in the <code>queue</code></p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">execute_ready_queue</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
41
+ <p>Execute all methods in the <code>queue</code></p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">executeReadyQueue</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
42
42
  <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">is_ready</span><span class="p">)</span> <span class="p">{</span>
43
43
  <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
44
44
  <span class="p">}</span>
@@ -53,17 +53,17 @@
53
53
  <span class="nx">queue</span> <span class="o">=</span> <span class="p">[];</span>
54
54
  <span class="k">this</span><span class="p">.</span><span class="nx">is_ready</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
55
55
  <span class="p">}</span>
56
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-13"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13">&#182;</a> </div> <h3>add_elements</h3>
56
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-13"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13">&#182;</a> </div> <h3>addElements</h3>
57
57
 
58
- <p>Add cached elements to the <code>DOM.cache</code> from an object of name/value pairs containing selected DOM elements</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">add_elements</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">elements</span><span class="p">)</span> <span class="p">{</span>
58
+ <p>Add cached elements to the <code>DOM.cache</code> from an object of name/value pairs containing selected DOM elements</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addElements</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">elements</span><span class="p">)</span> <span class="p">{</span>
59
59
  <span class="k">for</span><span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">elements</span><span class="p">)</span> <span class="p">{</span>
60
60
  <span class="k">if</span> <span class="p">(</span><span class="nx">elements</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">key</span><span class="p">))</span> <span class="p">{</span>
61
- <span class="k">this</span><span class="p">.</span><span class="nx">add_element</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">elements</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span>
61
+ <span class="k">this</span><span class="p">.</span><span class="nx">addElement</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">elements</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span>
62
62
  <span class="p">}</span>
63
63
  <span class="p">}</span>
64
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-14"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-14">&#182;</a> </div> <h3>add_element</h3>
64
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-14"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-14">&#182;</a> </div> <h3>addElement</h3>
65
65
 
66
- <p>Add a single element to the <code>DOM.cache</code></p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">add_element</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">element</span><span class="p">)</span> <span class="p">{</span>
66
+ <p>Add a single element to the <code>DOM.cache</code></p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">DOM</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addElement</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">element</span><span class="p">)</span> <span class="p">{</span>
67
67
  <span class="k">this</span><span class="p">.</span><span class="nx">cache</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">element</span><span class="p">;</span>
68
68
  <span class="p">};</span>
69
69
 
data/docs/existence.html CHANGED
@@ -9,52 +9,52 @@ identity of variables.</p> </td> <td class="code">
9
9
 
10
10
  <p>Convenience function to detect undefined status</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">is_undefined</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
11
11
  <span class="k">return</span> <span class="k">typeof</span> <span class="nx">suspect</span> <span class="o">==</span> <span class="s2">&quot;undefined&quot;</span> <span class="o">?</span> <span class="kc">true</span> <span class="o">:</span> <span class="kc">false</span><span class="p">;</span>
12
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">&#182;</a> </div> <h3>is_typeof</h3>
12
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">&#182;</a> </div> <h3>isTypeof</h3>
13
13
 
14
- <p>Strict type checking against the <code>suspect</code>'s constructor</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">is_typeof</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
14
+ <p>Strict type checking against the <code>suspect</code>'s constructor</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">isTypeof</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
15
15
  <span class="k">if</span> <span class="p">(</span><span class="nx">is_undefined</span><span class="p">(</span><span class="nx">type</span><span class="p">))</span> <span class="p">{</span>
16
- <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s2">&quot;is_typeof(Type, suspect): type is undefined&quot;</span><span class="p">);</span>
16
+ <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s2">&quot;isTypeof(Type, suspect): type is undefined&quot;</span><span class="p">);</span>
17
17
  <span class="p">}</span>
18
18
 
19
19
  <span class="k">if</span> <span class="p">(</span><span class="nx">is_undefined</span><span class="p">(</span><span class="nx">suspect</span><span class="p">))</span> <span class="p">{</span>
20
- <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s2">&quot;is_typeof(Type, suspect): suspect is undefined&quot;</span><span class="p">);</span>
20
+ <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s2">&quot;isTypeof(Type, suspect): suspect is undefined&quot;</span><span class="p">);</span>
21
21
  <span class="p">}</span>
22
22
 
23
23
  <span class="k">return</span> <span class="nx">suspect</span><span class="p">.</span><span class="nx">constructor</span> <span class="o">==</span> <span class="nx">type</span> <span class="o">?</span> <span class="kc">true</span> <span class="o">:</span> <span class="kc">false</span><span class="p">;</span>
24
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">&#182;</a> </div> <h3>is_numeric</h3>
24
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">&#182;</a> </div> <h3>isNumeric</h3>
25
25
 
26
- <p>Determines <code>suspect</code> holds a numeric value</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">is_numeric</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
26
+ <p>Determines <code>suspect</code> holds a numeric value</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">isNumeric</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
27
27
  <span class="k">if</span> <span class="p">(</span><span class="nb">isNaN</span><span class="p">(</span><span class="nx">suspect</span><span class="p">))</span> <span class="p">{</span>
28
28
  <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
29
29
  <span class="p">}</span>
30
30
  <span class="k">return</span> <span class="o">!</span><span class="nb">isNaN</span><span class="p">(</span><span class="nb">parseFloat</span><span class="p">(</span><span class="nx">suspect</span><span class="p">))</span> <span class="o">&amp;&amp;</span> <span class="nb">isFinite</span><span class="p">(</span><span class="nx">suspect</span><span class="p">);</span>
31
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">&#182;</a> </div> <h3>is_string</h3>
31
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">&#182;</a> </div> <h3>isString</h3>
32
32
 
33
- <p>Alias method for String detection</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">is_string</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
34
- <span class="k">return</span> <span class="nx">is_typeof</span><span class="p">(</span><span class="nb">String</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
35
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-7"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7">&#182;</a> </div> <h3>is_array</h3>
33
+ <p>Alias method for String detection</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">isString</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
34
+ <span class="k">return</span> <span class="nx">isTypeof</span><span class="p">(</span><span class="nb">String</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
35
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-7"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7">&#182;</a> </div> <h3>isArray</h3>
36
36
 
37
- <p>Alias method for Array detection</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">is_array</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
38
- <span class="k">return</span> <span class="nx">is_typeof</span><span class="p">(</span><span class="nb">Array</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
39
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">&#182;</a> </div> <h3>is_number</h3>
37
+ <p>Alias method for Array detection</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">isArray</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
38
+ <span class="k">return</span> <span class="nx">isTypeof</span><span class="p">(</span><span class="nb">Array</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
39
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">&#182;</a> </div> <h3>isNumber</h3>
40
40
 
41
- <p>Alias method for Number detection</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">is_number</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
42
- <span class="k">return</span> <span class="nx">is_typeof</span><span class="p">(</span><span class="nb">Number</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
43
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">&#182;</a> </div> <h3>is_date</h3>
41
+ <p>Alias method for Number detection</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">isNumber</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
42
+ <span class="k">return</span> <span class="nx">isTypeof</span><span class="p">(</span><span class="nb">Number</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
43
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">&#182;</a> </div> <h3>isDate</h3>
44
44
 
45
- <p>Alias method for Date detection</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">is_date</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
46
- <span class="k">return</span> <span class="nx">is_typeof</span><span class="p">(</span><span class="nb">Date</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
45
+ <p>Alias method for Date detection</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">isDate</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
46
+ <span class="k">return</span> <span class="nx">isTypeof</span><span class="p">(</span><span class="nb">Date</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
47
47
  <span class="p">};</span></pre></div> </td> </tr> <tr id="section-10"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10">&#182;</a> </div> <h3>is_bool</h3>
48
48
 
49
49
  <p>Alias method for Boolean detection</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">is_bool</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
50
- <span class="k">return</span> <span class="nx">is_typeof</span><span class="p">(</span><span class="nb">Boolean</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
51
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-11"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-11">&#182;</a> </div> <h3>is_regex</h3>
50
+ <span class="k">return</span> <span class="nx">isTypeof</span><span class="p">(</span><span class="nb">Boolean</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
51
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-11"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-11">&#182;</a> </div> <h3>isRegExp</h3>
52
52
 
53
- <p>Alias method for RegExp detection</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">is_regex</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
54
- <span class="k">return</span> <span class="nx">is_typeof</span><span class="p">(</span><span class="nb">RegExp</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
55
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-12"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-12">&#182;</a> </div> <h3>is_empty</h3>
53
+ <p>Alias method for RegExp detection</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">isRegExp</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
54
+ <span class="k">return</span> <span class="nx">isTypeof</span><span class="p">(</span><span class="nb">RegExp</span><span class="p">,</span> <span class="nx">suspect</span><span class="p">);</span>
55
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-12"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-12">&#182;</a> </div> <h3>isEmpty</h3>
56
56
 
57
- <p>Convenience method to detect whether the <code>suspect</code> is empty</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">is_empty</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
57
+ <p>Convenience method to detect whether the <code>suspect</code> is empty</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">isEmpty</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
58
58
  <span class="k">if</span> <span class="p">(</span><span class="nx">is_undefined</span><span class="p">(</span><span class="nx">suspect</span><span class="p">))</span> <span class="p">{</span>
59
59
  <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
60
60
  <span class="p">}</span>
@@ -62,7 +62,7 @@ identity of variables.</p> </td> <td class="code">
62
62
  <span class="k">return</span> <span class="nx">suspect</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">0</span><span class="p">;</span>
63
63
  <span class="p">};</span></pre></div> </td> </tr> <tr id="section-13"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-13">&#182;</a> </div> <h3>is<em>not</em>empty</h3>
64
64
 
65
- <p>Convenience method to detect whether the <code>suspect</code> is not empty</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">is_not_empty</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
65
+ <p>Convenience method to detect whether the <code>suspect</code> is not empty</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">isNotEmpty</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">suspect</span><span class="p">)</span> <span class="p">{</span>
66
66
  <span class="k">return</span> <span class="nx">suspect</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">;</span>
67
67
  <span class="p">};</span>
68
68
 
data/docs/module.html CHANGED
@@ -18,7 +18,7 @@ The <code>name</code> property is a convenience to be able to ask a module it's
18
18
 
19
19
  <p>Wait for the DOM to be ready and execute the actions</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">Module</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">run</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
20
20
  <span class="kd">var</span> <span class="nx">mod</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
21
- <span class="k">this</span><span class="p">.</span><span class="nx">dom</span><span class="p">.</span><span class="nx">call_when_ready</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
21
+ <span class="k">this</span><span class="p">.</span><span class="nx">dom</span><span class="p">.</span><span class="nx">callWhenReady</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
22
22
  <span class="nx">mod</span><span class="p">.</span><span class="nx">execute</span><span class="p">();</span>
23
23
  <span class="p">});</span>
24
24
  <span class="p">};</span></pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">&#182;</a> </div> <h3>execute</h3>
@@ -31,27 +31,27 @@ The <code>name</code> property is a convenience to be able to ask a module it's
31
31
  passing a string retrieves an element, passing an object sets elements</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">Module</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">elements</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">elements</span><span class="p">)</span> <span class="p">{</span>
32
32
  <span class="k">if</span> <span class="p">(</span><span class="nx">is_undefined</span><span class="p">(</span><span class="nx">elements</span><span class="p">))</span> <span class="p">{</span>
33
33
  <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">dom</span><span class="p">.</span><span class="nx">cache</span><span class="p">;</span>
34
- <span class="p">}</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">&#182;</a> </div> <p>Look up cached element by string key</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="p">(</span><span class="nx">is_string</span><span class="p">(</span><span class="nx">elements</span><span class="p">))</span> <span class="p">{</span>
34
+ <span class="p">}</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">&#182;</a> </div> <p>Look up cached element by string key</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">if</span> <span class="p">(</span><span class="nx">isString</span><span class="p">(</span><span class="nx">elements</span><span class="p">))</span> <span class="p">{</span>
35
35
  <span class="kd">var</span> <span class="nx">name</span> <span class="o">=</span> <span class="nx">elements</span><span class="p">;</span>
36
36
  <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">dom</span><span class="p">.</span><span class="nx">cache</span><span class="p">[</span><span class="nx">name</span><span class="p">];</span>
37
37
  <span class="p">}</span></pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">&#182;</a> </div> <p>cache the DOM objects</p> </td> <td class="code"> <div class="highlight"><pre> <span class="k">else</span> <span class="p">{</span>
38
- <span class="k">this</span><span class="p">.</span><span class="nx">dom</span><span class="p">.</span><span class="nx">add_elements</span><span class="p">(</span><span class="nx">elements</span><span class="p">);</span>
38
+ <span class="k">this</span><span class="p">.</span><span class="nx">dom</span><span class="p">.</span><span class="nx">addElements</span><span class="p">(</span><span class="nx">elements</span><span class="p">);</span>
39
39
  <span class="p">}</span>
40
- <span class="p">};</span></pre></div> </td> </tr> <tr id="section-10"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10">&#182;</a> </div> <h3>set_data</h3>
40
+ <span class="p">};</span></pre></div> </td> </tr> <tr id="section-10"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10">&#182;</a> </div> <h3>setData</h3>
41
41
 
42
- <p>Convenience method to add properties to the <code>data</code> property of the module</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">Module</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">set_data</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
42
+ <p>Convenience method to add properties to the <code>data</code> property of the module</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">Module</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">setData</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
43
43
  <span class="k">if</span> <span class="p">(</span><span class="nx">is_undefined</span><span class="p">(</span><span class="nx">key</span><span class="p">))</span> <span class="p">{</span>
44
- <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">name</span> <span class="o">+</span> <span class="s1">&#39;.set_data(key, value): key is undefined&#39;</span><span class="p">);</span>
44
+ <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">name</span> <span class="o">+</span> <span class="s1">&#39;.setData(key, value): key is undefined&#39;</span><span class="p">);</span>
45
45
  <span class="p">}</span>
46
46
 
47
- <span class="k">if</span> <span class="p">(</span><span class="nx">is_typeof</span><span class="p">(</span><span class="nb">String</span><span class="p">,</span> <span class="nx">key</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">is_undefined</span><span class="p">(</span><span class="nx">value</span><span class="p">))</span> <span class="p">{</span>
48
- <span class="k">throw</span> <span class="k">new</span> <span class="nx">SyntaxError</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">name</span> <span class="o">+</span> <span class="s1">&#39;Module.set_data(key, value): value is undefined&#39;</span><span class="p">);</span>
47
+ <span class="k">if</span> <span class="p">(</span><span class="nx">isTypeof</span><span class="p">(</span><span class="nb">String</span><span class="p">,</span> <span class="nx">key</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">is_undefined</span><span class="p">(</span><span class="nx">value</span><span class="p">))</span> <span class="p">{</span>
48
+ <span class="k">throw</span> <span class="k">new</span> <span class="nx">SyntaxError</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">name</span> <span class="o">+</span> <span class="s1">&#39;Module.setData(key, value): value is undefined&#39;</span><span class="p">);</span>
49
49
  <span class="p">}</span>
50
50
 
51
- <span class="k">if</span> <span class="p">(</span><span class="nx">is_typeof</span><span class="p">(</span><span class="nb">String</span><span class="p">,</span> <span class="nx">key</span><span class="p">))</span> <span class="p">{</span>
51
+ <span class="k">if</span> <span class="p">(</span><span class="nx">isTypeof</span><span class="p">(</span><span class="nb">String</span><span class="p">,</span> <span class="nx">key</span><span class="p">))</span> <span class="p">{</span>
52
52
  <span class="k">this</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">value</span><span class="p">;</span>
53
53
  <span class="p">}</span>
54
- <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">is_typeof</span><span class="p">(</span><span class="nb">Object</span><span class="p">,</span> <span class="nx">key</span><span class="p">))</span> <span class="p">{</span>
54
+ <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">isTypeof</span><span class="p">(</span><span class="nb">Object</span><span class="p">,</span> <span class="nx">key</span><span class="p">))</span> <span class="p">{</span>
55
55
  <span class="kd">var</span> <span class="nx">data</span> <span class="o">=</span> <span class="nx">key</span><span class="p">;</span>
56
56
  <span class="k">for</span><span class="p">(</span><span class="kd">var</span> <span class="nx">property</span> <span class="k">in</span> <span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
57
57
  <span class="k">this</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="nx">property</span><span class="p">]</span> <span class="o">=</span> <span class="nx">data</span><span class="p">[</span><span class="nx">property</span><span class="p">];</span>
@@ -1,3 +1,5 @@
1
+ require 'EJS'
2
+
1
3
  module ArchitectureJS
2
4
  class Generator
3
5
  def generate_file(filename, template, path = nil)
@@ -22,7 +24,7 @@ module ModJS
22
24
  module_function :base_dir, :lib_dir
23
25
 
24
26
  class Blueprint < ArchitectureJS::Blueprint
25
- # this line adds the default framework to ArchitectureJS
27
+ # this line adds the framework to ArchitectureJS
26
28
  ArchitectureJS::register_blueprint 'modjs', self
27
29
 
28
30
  def initialize(config, root = nil)
@@ -38,7 +40,7 @@ module ModJS
38
40
  super(@config, root)
39
41
 
40
42
  add_templates "#{ModJS::base_dir}/templates"
41
- @directories = %w'application elements lib models modules plugins spec'
43
+ @directories = %w'application elements lib models modules plugins spec templates'
42
44
  end
43
45
 
44
46
  def create
@@ -82,6 +84,7 @@ module ModJS
82
84
  def update
83
85
  read_config
84
86
  update_application_file
87
+ compile_templates
85
88
  super
86
89
  end
87
90
 
@@ -147,5 +150,32 @@ module ModJS
147
150
  @errors = true
148
151
  puts ArchitectureJS::Notification.error "Sprockets error: #{error.message}"
149
152
  end
153
+
154
+ def compile_templates
155
+ app_name = @config[:name]
156
+ compiled_templates = fetch_templates
157
+ formatted_templates = format_templates(compiled_templates)
158
+ template = ERB.new File.read("#{ModJS::base_dir}/lib/modjs-architecture/templates/templates.erb.js")
159
+
160
+ File.open("#{@root}/application/templates.js", "w+") do |f|
161
+ f << template.result(binding)
162
+ end
163
+ end
164
+
165
+ def fetch_templates
166
+ templates = {}
167
+ Dir.glob("#{@root}/templates/**/*.jst").each do |template|
168
+ name = File.basename(template).gsub(/\.jst$/, '')
169
+ templates[name] = EJS.compile(File.read(template))
170
+ end
171
+ templates
172
+ end
173
+
174
+ def format_templates(compiled_templates)
175
+ formatted_templates = compiled_templates.map do |name, function|
176
+ "\"#{name}\": #{function}"
177
+ end
178
+ end
179
+
150
180
  end # class Project
151
181
  end # module ArchitectureJS
@@ -6,27 +6,27 @@ Mod.Application = (function() {
6
6
 
7
7
  // Constructing an application requires a name.
8
8
  function Application(name) {
9
- if (is_undefined(name)) {
9
+ if (isUndefined(name)) {
10
10
  throw new Error("new Mod.Application(name): name is undefined");
11
11
  }
12
12
 
13
13
  this.name = name;
14
14
  }
15
15
 
16
- //### add_module
16
+ //### addModule
17
17
  // A factory method to attach modules to the application object.
18
18
  // This method makes sure to avaoid naming collisions
19
- Application.prototype.add_module = function(name) {
20
- if (is_undefined(name)) {
21
- throw new Error("Mod.Application.add_module(name): name is undefined");
19
+ Application.prototype.addModule = function(name) {
20
+ if (isUndefined(name)) {
21
+ throw new Error("Mod.Application.addModule(name): name is undefined");
22
22
  }
23
23
 
24
- if (is_defined(this[name])) {
25
- throw new Error("Mod.Application.add_module('" + name + "'): '" + name + "' already declared");
24
+ if (isDefined(this[name])) {
25
+ throw new Error("Mod.Application.addModule('" + name + "'): '" + name + "' already declared");
26
26
  }
27
27
 
28
28
  if (this.name === name) {
29
- throw new Error("Mod.Application.add_module('" + name + "'): a module cannot have the same name as the application. It's bad idea. Do you really want to write " + name + "." + name + "? It's confusing.'");
29
+ throw new Error("Mod.Application.addModule('" + name + "'): a module cannot have the same name as the application. It's bad idea. Do you really want to write " + name + "." + name + "? It's confusing.'");
30
30
  }
31
31
 
32
32
  return this[name] = new Mod.Module(name);