ninjs 0.13.1 → 0.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. data/Gemfile +1 -3
  2. data/Gemfile.lock +1 -67
  3. data/README.md +348 -0
  4. data/Rakefile +2 -4
  5. data/VERSION +1 -1
  6. data/bin/ninjs +196 -39
  7. data/lib/ninjs/command.rb +23 -64
  8. data/lib/ninjs/configuration.rb +16 -38
  9. data/lib/ninjs/generator.rb +23 -12
  10. data/lib/ninjs/project.rb +7 -6
  11. data/ninjs.gemspec +9 -33
  12. data/repository/ninjs/core/module.js +32 -105
  13. data/repository/ninjs/docs/Data/ClassHierarchy.nd +0 -0
  14. data/repository/ninjs/docs/Data/ConfigFileInfo.nd +0 -0
  15. data/repository/ninjs/docs/Data/IndexInfo.nd +0 -0
  16. data/repository/ninjs/docs/Data/SymbolTable.nd +0 -0
  17. data/repository/ninjs/extensions/ninjs.jquery.js +67 -0
  18. metadata +74 -100
  19. data/README.textile +0 -287
  20. data/tmp/metric_fu/output/churn.html +0 -692
  21. data/tmp/metric_fu/output/flay.html +0 -566
  22. data/tmp/metric_fu/output/flay.js +0 -11
  23. data/tmp/metric_fu/output/flog.html +0 -2392
  24. data/tmp/metric_fu/output/flog.js +0 -12
  25. data/tmp/metric_fu/output/hotspots.html +0 -3607
  26. data/tmp/metric_fu/output/index.html +0 -572
  27. data/tmp/metric_fu/output/lib_ninjs.rb.html +0 -49
  28. data/tmp/metric_fu/output/lib_ninjs_command.rb.html +0 -137
  29. data/tmp/metric_fu/output/lib_ninjs_configuration.rb.html +0 -107
  30. data/tmp/metric_fu/output/lib_ninjs_project.rb.html +0 -236
  31. data/tmp/metric_fu/output/rcov.html +0 -566
  32. data/tmp/metric_fu/output/rcov.js +0 -11
  33. data/tmp/metric_fu/output/reek.html +0 -1294
  34. data/tmp/metric_fu/output/reek.js +0 -20
  35. data/tmp/metric_fu/output/roodi.html +0 -599
  36. data/tmp/metric_fu/output/roodi.js +0 -11
  37. data/tmp/metric_fu/report.yml +0 -1548
@@ -1,36 +1,47 @@
1
1
  module Ninjs
2
2
  class Generator
3
3
 
4
+ attr_writer :alias, :app_name
5
+
4
6
  def initialize(project, name)
5
7
  @project = project
6
8
  @name = name
9
+ @alias = false
10
+ @app_name = @use_alias ? 'app' : @project.config.name
7
11
  end
8
12
 
9
- def generate_module_file(with = { :elements => false, :model => false })
13
+ def generate_module_file(with = { :elements => false, :model => false })
14
+
10
15
  File.open "#{@project.project_path}modules/#{@name.downcase}.module.js", "w" do |file|
11
- file << "(function(){\n"
12
- file << "\tvar self = " + @project.config.name + ".add_module('" + @name + "');\n\n"
13
- file << "\t" + '//= require "../elements/' + @name.downcase + '.elements.js"' + "\n\n" if with[:elements]
14
- file << "\t" + '//= require "../models/' + @name.downcase + '.model.js"' + "\n\n" if with[:model]
15
- file << "\t#{@project.config.name}." + @name + ".actions = function() {\n\n\t};\n\n"
16
- file << "\t#{@project.config.name}." + @name + ".run();\n"
17
- file << "})();"
16
+ file << "(function(#{@app_name if @alias}){\n"
17
+ file << "\tvar self = #{@app_name}.add_module('#{@name}');\n\n"
18
+ file << "\t" + '//= require "../elements/' + @name.downcase + '.elements"' + "\n\n" if with[:elements]
19
+ file << "\t" + '//= require "../models/' + @name.downcase + '.model"' + "\n\n" if with[:model]
20
+ file << "\t #{@app_name}.#{@name}.actions = function() {\n\n\t};\n\n"
21
+ file << "\t #{@app_name}.#{@name}.run();\n"
22
+ file << "})(#{@project.config.name if @alias});"
18
23
  Ninjs::Notification.added "created #{@name.downcase}.module.js"
19
24
  end unless File.exists? "#{@project.project_path}modules/#{@name.downcase}.module.js"
25
+
26
+ self
20
27
  end
21
28
 
22
- def generate_elements_file
29
+ def generate_elements_file
23
30
  File.open("#{@project.project_path}elements/#{@name.downcase}" + ".elements.js", "w") do |file|
24
- file << @project.config.name + "." + @name + ".elements(function({\n\n}));"
31
+ file << "#{@app_name}.#{@name}.elements({\n\n});"
25
32
  Ninjs::Notification.added "created #{@name.downcase}.elements.js"
26
33
  end unless File.exists? "#{@project.project_path}elements/#{@name.downcase}.elements.js"
34
+
35
+ self
27
36
  end
28
37
 
29
- def generate_model_file
38
+ def generate_model_file
30
39
  File.open "#{@project.project_path}models/#{@name.downcase}.model.js", "w" do |file|
31
- file << @project.config.name + "." + @name + ".set_data({\n\t\n});"
40
+ file << "#{@app_name}.#{@name}.set_data({\n\t\n});"
32
41
  Ninjs::Notification.added "created #{@name.downcase}.model.js"
33
42
  end unless File.exists? "#{@project.project_path}models/#{@name.downcase}.model.js"
43
+
44
+ self
34
45
  end
35
46
 
36
47
  end
@@ -12,6 +12,7 @@ module Ninjs
12
12
  @project_path = Dir.getwd + path
13
13
  @modules = Array.new
14
14
  @config = Ninjs::Configuration.new @project_path, name
15
+ @app_filename = @config.name.downcase
15
16
  end
16
17
 
17
18
  def add_slashes(dir)
@@ -64,12 +65,12 @@ module Ninjs
64
65
  end
65
66
 
66
67
  def create_ninjs_application_file
67
- filename = "#{@project_path}application/#{@config.app_filename}.js"
68
+ filename = "#{@project_path}application/#{@app_filename}.js"
68
69
 
69
70
  File.open(filename, "w+") do |file|
70
71
  file << "//-- Ninjs #{Time.now.to_s} --//\n"
71
72
  file << File.open("#{@project_path}lib/nin.js", 'r').readlines.join('')
72
- file << "\nvar #{@config.name} = new NinjsApplication('#{@config.base_url}', '#{@config.test_path}');"
73
+ file << "\nvar #{@config.name} = new NinjsApplication();"
73
74
  end
74
75
  end
75
76
 
@@ -127,7 +128,7 @@ module Ninjs
127
128
 
128
129
  ninjs_lib_secretary = Sprockets::Secretary.new(
129
130
  :root => "#{Ninjs::BASE_DIR}",
130
- :asset_root => @config.asset_root || @project_path.gsub(/[a-zA-z0-9\.\-\_\s]+\/$/, ''),
131
+ :asset_root => @config.asset_root,
131
132
  :load_path => ["repository"],
132
133
  :source_files => ["#{module_src}"]
133
134
  )
@@ -144,7 +145,7 @@ module Ninjs
144
145
  end
145
146
 
146
147
  def update_application_file
147
- application_file = "#{@project_path}application/#{@config.app_filename}.js"
148
+ application_file = "#{@project_path}application/#{@app_filename}.js"
148
149
 
149
150
  File.open(application_file, "w+") do |file|
150
151
  write_dependencies(file)
@@ -166,7 +167,7 @@ module Ninjs
166
167
  def write_core(file)
167
168
  file << "/*---------- Ninjs core ../lib/nin.js ----------*/\n"
168
169
  file << "//= require \"../lib/nin.js\"\n\n"
169
- file << "\nvar #{@config.name} = new NinjsApplication('#{@config.base_url}', '#{@config.test_path}');\n\n"
170
+ file << "\nvar #{@config.name} = new NinjsApplication();\n\n"
170
171
  end
171
172
 
172
173
  def write_autoload(file)
@@ -181,7 +182,7 @@ module Ninjs
181
182
  begin
182
183
  ninjs_lib_secretary = Sprockets::Secretary.new(
183
184
  :root => "#{Ninjs::BASE_DIR}",
184
- :asset_root => @config.asset_root || @project_path.gsub(/[a-zA-z0-9\.\-\_\s]+\/$/, ''),
185
+ :asset_root => @config.asset_root,
185
186
  :load_path => ["repository"],
186
187
  :source_files => ["#{file}"]
187
188
  )
@@ -5,18 +5,18 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ninjs}
8
- s.version = "0.13.1"
8
+ s.version = "0.13.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dayton Nolan"]
12
- s.date = %q{2011-04-10}
12
+ s.date = %q{2011-05-04}
13
13
  s.default_executable = %q{ninjs}
14
14
  s.description = %q{Ninjs is a ruby application and small javascript framework that helps you build clean, modular javascript applications. Ninjs encourages "Good Parts" best practices and the Crockford school Module pattern (http://www.crockford.com/). The ninjs command line application is an automatic compiler, written in ruby, and based on the Sprockets library (http://getsprockets.org/).}
15
15
  s.email = %q{daytonn@gmail.com}
16
16
  s.executables = ["ninjs"]
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
19
- "README.textile"
19
+ "README.md"
20
20
  ]
21
21
  s.files = [
22
22
  ".bundle/config",
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  "Gemfile",
25
25
  "Gemfile.lock",
26
26
  "LICENSE",
27
- "README.textile",
27
+ "README.md",
28
28
  "Rakefile",
29
29
  "VERSION",
30
30
  "bin/ninjs",
@@ -186,6 +186,7 @@ Gem::Specification.new do |s|
186
186
  "repository/ninjs/docs/search/VariablesR.html",
187
187
  "repository/ninjs/docs/search/VariablesT.html",
188
188
  "repository/ninjs/docs/styles/main.css",
189
+ "repository/ninjs/extensions/ninjs.jquery.js",
189
190
  "repository/ninjs/tests/index.html",
190
191
  "repository/ninjs/tests/ninjs.test.js",
191
192
  "repository/ninjs/tests/ninjs.utilities.test.js",
@@ -282,37 +283,19 @@ Gem::Specification.new do |s|
282
283
  "tmp/ff9e83aa019b712b90200b8d1b8fa0c7e14576af.json",
283
284
  "tmp/metric_fu/_data/20110305.yml",
284
285
  "tmp/metric_fu/output/bluff-min.js",
285
- "tmp/metric_fu/output/churn.html",
286
286
  "tmp/metric_fu/output/excanvas.js",
287
- "tmp/metric_fu/output/flay.html",
288
- "tmp/metric_fu/output/flay.js",
289
- "tmp/metric_fu/output/flog.html",
290
- "tmp/metric_fu/output/flog.js",
291
- "tmp/metric_fu/output/hotspots.html",
292
- "tmp/metric_fu/output/index.html",
293
287
  "tmp/metric_fu/output/js-class.js",
294
- "tmp/metric_fu/output/lib_ninjs.rb.html",
295
- "tmp/metric_fu/output/lib_ninjs_command.rb.html",
296
- "tmp/metric_fu/output/lib_ninjs_configuration.rb.html",
297
288
  "tmp/metric_fu/output/lib_ninjs_dependencies.rb.html",
298
289
  "tmp/metric_fu/output/lib_ninjs_helpers.rb.html",
299
290
  "tmp/metric_fu/output/lib_ninjs_manifest.rb.html",
300
- "tmp/metric_fu/output/lib_ninjs_project.rb.html",
301
291
  "tmp/metric_fu/output/rails_best_practices.js",
302
- "tmp/metric_fu/output/rcov.html",
303
- "tmp/metric_fu/output/rcov.js",
304
- "tmp/metric_fu/output/reek.html",
305
- "tmp/metric_fu/output/reek.js",
306
- "tmp/metric_fu/output/roodi.html",
307
- "tmp/metric_fu/output/roodi.js",
308
- "tmp/metric_fu/report.yml",
309
292
  "tmp/metric_fu/scratch/rcov/rcov.txt"
310
293
  ]
311
294
  s.homepage = %q{http://github.com/textnotspeech/ninjs}
312
295
  s.licenses = ["MIT"]
313
296
  s.require_paths = ["lib"]
314
297
  s.rubyforge_project = %q{nowarning}
315
- s.rubygems_version = %q{1.3.7}
298
+ s.rubygems_version = %q{1.5.2}
316
299
  s.summary = %q{ninjs is a command line application to help you write clean, modular javascript applications.}
317
300
  s.test_files = [
318
301
  "spec/ninjs_spec.rb",
@@ -320,15 +303,12 @@ Gem::Specification.new do |s|
320
303
  ]
321
304
 
322
305
  if s.respond_to? :specification_version then
323
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
324
306
  s.specification_version = 3
325
307
 
326
308
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
327
- s.add_runtime_dependency(%q<rubikon>, [">= 0"])
328
309
  s.add_runtime_dependency(%q<fssm>, [">= 0"])
329
310
  s.add_runtime_dependency(%q<jsmin>, [">= 0"])
330
- s.add_runtime_dependency(%q<sprockets>, [">= 0"])
331
- s.add_development_dependency(%q<metric_fu>, [">= 0"])
311
+ s.add_runtime_dependency(%q<sprockets>, ["= 1.0.2"])
332
312
  s.add_development_dependency(%q<shoulda>, [">= 0"])
333
313
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
334
314
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
@@ -340,11 +320,9 @@ Gem::Specification.new do |s|
340
320
  s.add_runtime_dependency(%q<sprockets>, [">= 0"])
341
321
  s.add_development_dependency(%q<rspec>, [">= 0"])
342
322
  else
343
- s.add_dependency(%q<rubikon>, [">= 0"])
344
323
  s.add_dependency(%q<fssm>, [">= 0"])
345
324
  s.add_dependency(%q<jsmin>, [">= 0"])
346
- s.add_dependency(%q<sprockets>, [">= 0"])
347
- s.add_dependency(%q<metric_fu>, [">= 0"])
325
+ s.add_dependency(%q<sprockets>, ["= 1.0.2"])
348
326
  s.add_dependency(%q<shoulda>, [">= 0"])
349
327
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
350
328
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
@@ -357,11 +335,9 @@ Gem::Specification.new do |s|
357
335
  s.add_dependency(%q<rspec>, [">= 0"])
358
336
  end
359
337
  else
360
- s.add_dependency(%q<rubikon>, [">= 0"])
361
338
  s.add_dependency(%q<fssm>, [">= 0"])
362
339
  s.add_dependency(%q<jsmin>, [">= 0"])
363
- s.add_dependency(%q<sprockets>, [">= 0"])
364
- s.add_dependency(%q<metric_fu>, [">= 0"])
340
+ s.add_dependency(%q<sprockets>, ["= 1.0.2"])
365
341
  s.add_dependency(%q<shoulda>, [">= 0"])
366
342
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
367
343
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
@@ -1,70 +1,17 @@
1
- /*
2
- File: module.js
3
-
4
- Class: NinjsModule
5
- A NinjsModule is an object which encapsulates a certain behavior or functionality.
6
-
7
- Parameters:
8
- name - the name of the module
9
-
10
- See Also:
11
- <NinjsApplication>
12
- */
13
1
  var NinjsModule = function(name) {
14
- /*
15
- Variable: data
16
- The module's data object
17
- */
2
+ this.dom = {};
18
3
  this.data = {};
19
- /*
20
- Variable: name
21
- The module's name (string)
22
- */
23
4
  this.name = name;
24
- /*
25
- Variable: run_tests (beta)
26
- Boolean to turn tests on/off
27
- */
28
5
  this.run_tests = false;
29
- /*
30
- Variable: tests (beta)
31
- Array of test files to run
32
- */
33
6
  this.tests = [];
34
7
  };
35
8
 
36
- /*
37
- Method: actions
38
- The actions method contains code to be executed when run is called. This method is a placeholder to be overwritten.
39
-
40
- > MyModule.actions = function() {
41
- > // define actions here
42
- >};
43
- */
44
9
  NinjsModule.method('actions', function() {});
45
10
 
46
-
47
- /*
48
- Method: run
49
- Waits for the DOM to load then calls execute.
50
-
51
- > MyModule.run();
52
- */
53
11
  NinjsModule.method('run', function() {
54
12
  this.call_on_ready(this.execute);
55
13
  });
56
14
 
57
- /*
58
- Method: call_on_ready
59
- Waits for the DOM to be ready and then executes a callback.
60
-
61
- Parameters:
62
- callback - function to be called when the DOM is ready
63
-
64
- > MyModule.call_on_ready(function() {
65
- > // some code to execute when the DOM is ready
66
- > });
67
- */
68
15
  NinjsModule.method('call_on_ready', function(callback) {
69
16
  var timer;
70
17
  var module = this;
@@ -84,12 +31,6 @@ NinjsModule.method('call_on_ready', function(callback) {
84
31
  check_ready();
85
32
  });
86
33
 
87
- /*
88
- Method: execute
89
- Wrapper method that set's up the environment and then calls actions.
90
-
91
- > MyModule.execute();
92
- */
93
34
  NinjsModule.method('execute', function() {
94
35
  if (this.run_tests) {
95
36
  this._run_tests();
@@ -98,40 +39,39 @@ NinjsModule.method('execute', function() {
98
39
  this.actions();
99
40
  });
100
41
 
101
- /*
102
- Method: elements
103
- Method to define module elements.
104
-
105
- Parameters:
106
- callback - function to define a module's elements
107
-
108
- > MyModule.elements(function() {
109
- > // element definitions go here
110
- > });
111
- */
112
- NinjsModule.method('elements', function(callback) {
113
- this.call_on_ready(callback);
42
+ NinjsModule.method('elements', function(elements) {
43
+ try {
44
+ if (is_undefined(elements)) {
45
+ if (is_typeof(Object, elements)) {
46
+ throw new SyntaxError("NinjsModule.elements(elements): elements is undefined");
47
+ }
48
+ else if (is_string(elements)) {
49
+ throw new SyntaxError("NinjsModule.elements(name): name is undefined");
50
+ }
51
+ }
52
+
53
+ // If first argument is a string, retrieve the element
54
+ if (is_string(elements)) {
55
+ var name = elements;
56
+ return is_defined(this.dom[name]) ? this.dom[name] : undefined;
57
+ }
58
+ // Set elements
59
+ else {
60
+ this.call_on_ready(function() {
61
+ for(var key in elements) {
62
+ if (elements.hasOwnProperty(key)) {
63
+ this.dom[key] = elements[key];
64
+ }
65
+ }
66
+ });
67
+ }
68
+ }
69
+ catch(error) {
70
+ alert(error.message);
71
+ }
72
+
114
73
  });
115
74
 
116
-
117
- /*
118
- Method: set_data
119
- Adds properties to the module's data object.
120
-
121
- Parameters:
122
- key - string or object (if string = key, if object sets multiple properties)
123
- value - value of key if key is string
124
-
125
- > MyModule.set_data('some_key', 'some_value');
126
- > MyModule.data.some_key === 'some_value'
127
-
128
- > MyModule.set_data({
129
- > 'property_one': 'value_one',
130
- > 'property_two': 'value_two'
131
- > });
132
- > MyModule.data.property_one === 'value_one'
133
- > MyModule.data.property_two === 'value_two'
134
- */
135
75
  NinjsModule.method('set_data', function(key, value) {
136
76
  try {
137
77
  if (is_undefined(key)) {
@@ -159,23 +99,10 @@ NinjsModule.method('set_data', function(key, value) {
159
99
  }
160
100
  });
161
101
 
162
- /*
163
- Method: add_test
164
- Adds a test file to the tests array (beta).
165
-
166
- Parameters:
167
- test_file - File to add to the tests array
168
-
169
- > MyModule.add_test('mytest.test.js');
170
- */
171
102
  NinjsModule.method('add_test', function(test_file) {
172
103
  this.tests.push(test_file);
173
104
  });
174
105
 
175
- /*
176
- Method: _run_tests
177
- Runs the test files in the test array. This method is automatically called by the execute method if run_tests === true
178
- */
179
106
  NinjsModule.method('_run_tests', function() {
180
107
  var test_template = [];
181
108
  test_template.push('<div class="test-results" title="Test Results">');
@@ -0,0 +1,67 @@
1
+ (function($) {
2
+
3
+ NinjsModule.prototype.elements = function(elements, force) {
4
+ var self = this;
5
+
6
+ unless(is_defined(force), function() {
7
+ force = false;
8
+ });
9
+
10
+ if (is_string(elements)) {
11
+ var key = elements;
12
+
13
+ try {
14
+ if (is_undefined(self.dom[key])) {
15
+ throw new SyntaxError("NinjsModule.elements('" + key + "'): " + self.name + ".dom." + key + " is undefined");
16
+ }
17
+
18
+ if (is_string(self.dom[key])) {
19
+ var selection = $(self.dom[key]);
20
+
21
+ unless(selection.length === 0, function() {
22
+ return self.dom[key] = selection;
23
+ }, function() {
24
+ return self.dom[key];
25
+ });
26
+ }
27
+ else {
28
+ if (self.dom[key].length === 0 || force) {
29
+
30
+ var return_obj = undefined;
31
+
32
+ if (is_string(force)) {
33
+ var selector = self.dom[key].selector;
34
+ self.dom[key] = $(force).find(selector);
35
+ self.dom[key].selector = selector;
36
+
37
+ return_obj = self.dom[key];
38
+ }
39
+
40
+ var selection = $(self.dom[key].selector);
41
+ unless(selection.length === 0, function() {
42
+ return_obj = selection;
43
+ });
44
+
45
+ return return_obj;
46
+ }
47
+ else {
48
+ return self.dom[key];
49
+ }
50
+ }
51
+ }
52
+ catch(error) {
53
+ alert(error.message);
54
+ }
55
+ }
56
+ else if (is_typeof(Object, elements)){
57
+ self.call_on_ready(function() {
58
+ for(var key in elements) {
59
+ if (elements.hasOwnProperty(key)) {
60
+ self.dom[key] = elements[key];
61
+ }
62
+ }
63
+ });
64
+ }
65
+ };
66
+
67
+ })(jQuery);