extjs-mvc 0.4.0.b → 0.4.0.d

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. data/Rakefile +6 -9
  2. data/VERSION +1 -1
  3. data/bin/extjs-mvc +19 -0
  4. data/lib/extjs-mvc.rb +13 -67
  5. data/lib/{js → vendor}/App.js +0 -0
  6. data/lib/{js → vendor}/MVC.js +0 -0
  7. data/lib/{js → vendor}/Presenter.js +0 -0
  8. data/lib/{js → vendor}/README.rdoc +0 -0
  9. data/lib/{js → vendor}/controller/Controller.js +0 -0
  10. data/lib/{js → vendor}/controller/CrudController.js +0 -0
  11. data/lib/{js → vendor}/lib/Array.js +0 -0
  12. data/lib/{js → vendor}/lib/Booter.js +4 -3
  13. data/lib/{js → vendor}/lib/ClassManager.js +0 -0
  14. data/lib/{js → vendor}/lib/ControllerClassManager.js +0 -0
  15. data/lib/{js → vendor}/lib/Dependencies.js +0 -0
  16. data/lib/{js → vendor}/lib/DispatchMatcher.js +0 -0
  17. data/lib/{js → vendor}/lib/Dispatcher.js +0 -0
  18. data/lib/{js → vendor}/lib/Environment.js +0 -0
  19. data/lib/{js → vendor}/lib/Inflector.js +17 -0
  20. data/lib/{js → vendor}/lib/ModelClassManager.js +0 -0
  21. data/lib/{js → vendor}/lib/Route.js +0 -0
  22. data/lib/{js → vendor}/lib/Router.js +0 -0
  23. data/lib/{js → vendor}/lib/String.js +0 -0
  24. data/lib/{js → vendor}/lib/ViewClassManager.js +0 -0
  25. data/lib/{js → vendor}/lib/notes.txt +0 -0
  26. data/lib/{js → vendor}/model/AdapterManager.js +0 -0
  27. data/lib/{js → vendor}/model/Association.js +0 -0
  28. data/lib/{js → vendor}/model/Base.js +0 -0
  29. data/lib/{js → vendor}/model/BelongsToAssociation.js +0 -0
  30. data/lib/{js → vendor}/model/Cache.js +0 -0
  31. data/lib/{js → vendor}/model/HasManyAssociation.js +0 -0
  32. data/lib/{js → vendor}/model/Model.js +0 -0
  33. data/lib/{js → vendor}/model/UrlBuilder.js +0 -0
  34. data/lib/{js → vendor}/model/adapters/AbstractAdapter.js +0 -0
  35. data/lib/{js → vendor}/model/adapters/MemoryAdapter.js +0 -0
  36. data/lib/{js → vendor}/model/adapters/RESTAdapter.js +0 -0
  37. data/lib/{js → vendor}/model/adapters/RESTJSONAdapter.js +0 -0
  38. data/lib/{js → vendor}/model/adapters/notes.txt +0 -0
  39. data/lib/{js → vendor}/model/associations/Association.js +0 -0
  40. data/lib/{js → vendor}/model/associations/notes.txt +0 -0
  41. data/lib/{js → vendor}/model/validations/Errors.js +0 -0
  42. data/lib/{js → vendor}/model/validations/Plugin.js +0 -0
  43. data/lib/{js → vendor}/model/validations/Validations.js +0 -0
  44. data/lib/{js → vendor}/notes/Charts.graffle +0 -0
  45. data/lib/{js → vendor}/overrides/Ext.Component.js +0 -0
  46. data/lib/{js → vendor}/overrides/Ext.extend.js +0 -0
  47. data/lib/{js → vendor}/spec/Array.spec.js +0 -0
  48. data/lib/{js → vendor}/spec/ExtMVC.spec.js +0 -0
  49. data/lib/{js → vendor}/spec/Model.spec.js +0 -0
  50. data/lib/{js → vendor}/spec/OS.spec.js +0 -0
  51. data/lib/{js → vendor}/spec/Router.spec.js +0 -0
  52. data/lib/{js → vendor}/spec/SpecHelper.js +0 -0
  53. data/lib/{js → vendor}/spec/String.spec.js +0 -0
  54. data/lib/{js → vendor}/spec/model/AbstractAdapter.spec.js +0 -0
  55. data/lib/{js → vendor}/spec/model/Associations.spec.js +0 -0
  56. data/lib/{js → vendor}/spec/model/Cache.spec.js +0 -0
  57. data/lib/{js → vendor}/spec/model/RESTAdapter.spec.js +0 -0
  58. data/lib/{js → vendor}/spec/model/ValidationErrors.spec.js +0 -0
  59. data/lib/{js → vendor}/spec/model/Validations.spec.js +0 -0
  60. data/lib/{js → vendor}/spec/model/ValidationsPlugin.spec.js +0 -0
  61. data/lib/{js → vendor}/spec/suite.html +0 -0
  62. data/lib/{js → vendor}/specs-old/JSSpec.css +0 -0
  63. data/lib/{js → vendor}/specs-old/JSSpec.js +0 -0
  64. data/lib/{js → vendor}/specs-old/all.html +0 -0
  65. data/lib/{js → vendor}/specs-old/base.js +0 -0
  66. data/lib/{js → vendor}/specs-old/controller.js +0 -0
  67. data/lib/{js → vendor}/specs-old/diff_match_patch.js +0 -0
  68. data/lib/{js → vendor}/specs-old/model.js +0 -0
  69. data/lib/{js → vendor}/specs-old/route.js +0 -0
  70. data/lib/{js → vendor}/specs-old/router.js +0 -0
  71. data/lib/{js → vendor}/specs-old/string.js +0 -0
  72. data/lib/{js → vendor}/testrunner/JSpecFormatter.js +0 -0
  73. data/lib/{js → vendor}/testrunner/TestClient.js +0 -0
  74. data/lib/{js → vendor}/testrunner/TestGrid.js +0 -0
  75. data/lib/{js → vendor}/testrunner/TestRunner.js +0 -0
  76. data/lib/{js → vendor}/testrunner/TestViewport.js +0 -0
  77. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/EXAMPLE.html +0 -0
  78. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/LICENSE +0 -0
  79. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/README.markdown +0 -0
  80. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/jquery-1.2.3.js +0 -0
  81. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/jquery.fn.js +0 -0
  82. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/jquery.print.js +0 -0
  83. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.assets.js +0 -0
  84. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.behaviors.js +0 -0
  85. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.builder.js +0 -0
  86. data/lib/{js → vendor}/vendor/screw-unit/lib/screw.css +0 -0
  87. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.events.js +0 -0
  88. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.matchers.js +0 -0
  89. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.server.js +0 -0
  90. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/spec/behaviors_spec.js +0 -0
  91. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/spec/matchers_spec.js +0 -0
  92. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/spec/print_spec.js +0 -0
  93. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/spec/spec_helper.js +0 -0
  94. data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/spec/suite.html +0 -0
  95. data/lib/{js → vendor}/view/FormWindow.js +0 -0
  96. data/lib/{js → vendor}/view/HasManyEditorGridPanel.js +0 -0
  97. data/lib/{js → vendor}/view/scaffold/Edit.js +0 -0
  98. data/lib/{js → vendor}/view/scaffold/Index.js +0 -0
  99. data/lib/{js → vendor}/view/scaffold/New.js +0 -0
  100. data/lib/{js → vendor}/view/scaffold/ScaffoldFormPanel.js +0 -0
  101. data/lib/{js/build → vendor.yml} +7 -1
  102. metadata +110 -203
  103. data/bin/xmvc +0 -13
  104. data/lib/extjs-mvc/README +0 -20
  105. data/lib/extjs-mvc/builder.rb +0 -83
  106. data/lib/extjs-mvc/builders/all_builder.rb +0 -15
  107. data/lib/extjs-mvc/builders/app_builder.rb +0 -36
  108. data/lib/extjs-mvc/builders/base.rb +0 -138
  109. data/lib/extjs-mvc/builders/css_builder.rb +0 -36
  110. data/lib/extjs-mvc/builders/docs_builder.rb +0 -20
  111. data/lib/extjs-mvc/builders/mvc_builder.rb +0 -33
  112. data/lib/extjs-mvc/builders/plugin_builder.rb +0 -53
  113. data/lib/extjs-mvc/cli.rb +0 -52
  114. data/lib/extjs-mvc/generator.rb +0 -79
  115. data/lib/extjs-mvc/generators/app.rb +0 -57
  116. data/lib/extjs-mvc/generators/base.rb +0 -53
  117. data/lib/extjs-mvc/generators/controller.rb +0 -41
  118. data/lib/extjs-mvc/generators/model.rb +0 -41
  119. data/lib/extjs-mvc/generators/scaffold.rb +0 -17
  120. data/lib/extjs-mvc/generators/templates/Controller.js +0 -17
  121. data/lib/extjs-mvc/generators/templates/Model.js +0 -9
  122. data/lib/extjs-mvc/generators/templates/ModelSpec.js +0 -12
  123. data/lib/extjs-mvc/generators/templates/View.js +0 -16
  124. data/lib/extjs-mvc/generators/templates/_Action.js +0 -7
  125. data/lib/extjs-mvc/generators/templates/app/README.rdoc +0 -152
  126. data/lib/extjs-mvc/generators/templates/app/app/App.js +0 -64
  127. data/lib/extjs-mvc/generators/templates/app/app/controllers/ApplicationController.js +0 -10
  128. data/lib/extjs-mvc/generators/templates/app/app/controllers/HomeController.js +0 -10
  129. data/lib/extjs-mvc/generators/templates/app/app/views/home/Index.js +0 -17
  130. data/lib/extjs-mvc/generators/templates/app/app/views/layout/Menu.js +0 -23
  131. data/lib/extjs-mvc/generators/templates/app/config/application.js +0 -1
  132. data/lib/extjs-mvc/generators/templates/app/config/boot.js +0 -67
  133. data/lib/extjs-mvc/generators/templates/app/config/build.xml +0 -77
  134. data/lib/extjs-mvc/generators/templates/app/config/database.js +0 -4
  135. data/lib/extjs-mvc/generators/templates/app/config/environment.json +0 -58
  136. data/lib/extjs-mvc/generators/templates/app/config/environments/development.json +0 -1
  137. data/lib/extjs-mvc/generators/templates/app/config/environments/production.json +0 -4
  138. data/lib/extjs-mvc/generators/templates/app/config/routes.js +0 -27
  139. data/lib/extjs-mvc/generators/templates/app/config/settings.yml +0 -3
  140. data/lib/extjs-mvc/generators/templates/app/public/index.html +0 -19
  141. data/lib/extjs-mvc/generators/templates/app/public/stylesheets/ext-mvc-all.css +0 -49
  142. data/lib/extjs-mvc/generators/templates/app/spec/SpecHelper.js +0 -0
  143. data/lib/extjs-mvc/generators/templates/app/spec/index.html +0 -66
  144. data/lib/extjs-mvc/generators/templates/app/vendor/screw-unit/lib/screw.css +0 -90
  145. data/lib/extjs-mvc/generators/templates/scaffold/ScaffoldController.js +0 -18
  146. data/lib/extjs-mvc/generators/view.rb +0 -29
  147. data/lib/extjs-mvc/plugin.rb +0 -105
  148. data/lib/extjs-mvc/scripts.rb +0 -15
  149. data/lib/extjs-mvc/settings.rb +0 -75
  150. data/lib/extjs-mvc/setup.rb +0 -5
  151. data/lib/extjs-mvc/stats.rb +0 -241
  152. data/lib/extjs-mvc/test.rb +0 -11
  153. data/lib/extjs-mvc/testserver.ru +0 -95
  154. data/lib/extjs-mvc/ui.rb +0 -58
  155. data/lib/extjs-mvc/update.rb +0 -73
  156. data/lib/js/vendor/screw-unit/EXAMPLE.html +0 -68
  157. data/lib/js/vendor/screw-unit/LICENSE +0 -22
  158. data/lib/js/vendor/screw-unit/README.markdown +0 -307
  159. data/lib/js/vendor/screw-unit/lib/jquery-1.2.3.js +0 -3408
  160. data/lib/js/vendor/screw-unit/lib/jquery.fn.js +0 -29
  161. data/lib/js/vendor/screw-unit/lib/jquery.print.js +0 -108
  162. data/lib/js/vendor/screw-unit/lib/screw.assets.js +0 -36
  163. data/lib/js/vendor/screw-unit/lib/screw.behaviors.js +0 -91
  164. data/lib/js/vendor/screw-unit/lib/screw.builder.js +0 -80
  165. data/lib/js/vendor/screw-unit/lib/screw.events.js +0 -42
  166. data/lib/js/vendor/screw-unit/lib/screw.matchers.js +0 -145
  167. data/lib/js/vendor/screw-unit/lib/screw.server.js +0 -21
  168. data/lib/js/vendor/screw-unit/spec/behaviors_spec.js +0 -178
  169. data/lib/js/vendor/screw-unit/spec/matchers_spec.js +0 -237
  170. data/lib/js/vendor/screw-unit/spec/print_spec.js +0 -119
  171. data/lib/js/vendor/screw-unit/spec/spec_helper.js +0 -0
  172. data/lib/js/vendor/screw-unit/spec/suite.html +0 -18
@@ -1,138 +0,0 @@
1
-
2
- module ExtJS
3
- module MVC
4
- module Builder
5
- class Base
6
-
7
- # Subclasses must implement this method to return the name of the file that concatenated output will be saved to
8
- def output_filename
9
- raise
10
- end
11
-
12
- # Does the actual building - just concatenates file_list and optionally minifies
13
- def build
14
- concatenate(file_list, output_filename)
15
- system('growlnotify -m "Built ' + name + '"')
16
-
17
- if should_minify
18
- minify output_filename
19
- system('growlnotify -m "Minified ' + name + '"')
20
- end
21
-
22
- puts message
23
- end
24
-
25
- # Indicates whether the outputted filename should also be minified (defaults to false)
26
- def should_minify
27
- false
28
- end
29
-
30
- def name
31
- "Unknown Package"
32
- end
33
-
34
- def message
35
- "Build complete"
36
- end
37
-
38
- def description
39
- directory_name
40
- end
41
-
42
- # Returns an array of all files to be concatenated, in the order they should be included
43
- def file_list
44
- has_build_file? ? order_from_build_file : guess_build_order
45
- end
46
-
47
- def has_build_file?
48
- File.exists?(build_file_name)
49
- end
50
-
51
- def build_file_name
52
- "#{directory_name}/build"
53
- end
54
-
55
- # Subclasses can override this method to return the string name of the directory under while the file_list resides
56
- def directory_name
57
- "./"
58
- end
59
-
60
- # Returns an array of all of the files listed in the build file
61
- def order_from_build_file
62
- build_files = []
63
- file = File.open(build_file_name, "r")
64
-
65
- while (line = file.gets)
66
- line.gsub!(/\n/, '')
67
- next if line =~ /^#/ || line.length.zero?
68
-
69
- filename = "#{directory_name}/#{line}"
70
-
71
- if File.exists?(filename)
72
- build_files.push(filename) unless build_files.include?(filename)
73
- else
74
- js_files_in_glob(filename).each {|filename| build_files.push(filename) unless build_files.include?(filename)}
75
- end
76
- end
77
-
78
- build_files
79
- end
80
-
81
- # Returns an array of all the .js files found in the plugin dir, in the order in which they are found
82
- # (ignores the 'PluginName-all.js' file)
83
- def guess_build_order
84
- js_files_in_glob("#{directory_name}/**/*.js")
85
- end
86
-
87
- def js_files_in_glob(glob)
88
- Dir[glob].select {|fileName| Regexp.new(output_filename).match(fileName).nil?}
89
- end
90
-
91
- private
92
-
93
- # Concatenates an array of files together and saves
94
- def concatenate(files, concatenated_filename, baseDir = './')
95
- #remove old files, create blank ones again
96
- if File.exists?(concatenated_filename)
97
- File.delete(concatenated_filename)
98
- # puts "Deleted old #{concatenated_filename}"
99
- end
100
- FileUtils.touch(concatenated_filename)
101
-
102
- count = 0
103
- file = File.open(concatenated_filename, 'w') do |f|
104
- files.each do |i|
105
- # remove the directory the app is in if add_dir is supplied
106
- i = i.gsub(Regexp.new(ENV['app_dir']), '').gsub(/$(\/*)(.*)/, '\2') if ENV['app_dir']
107
-
108
- f.puts(IO.read(File.join(baseDir, i)))
109
- f.puts("\n")
110
- count += 1
111
- end
112
- end
113
-
114
- # puts "Concatenated #{count} files into #{concatenated_filename}"
115
- # puts
116
- end
117
-
118
- # Minifies a file using YUI compressor
119
- def minify(filename, minified_filename = nil)
120
- if minified_filename.nil?
121
- minified_filename = filename.gsub(/\.js$/, '-min.js')
122
- end
123
-
124
- if File.exists?(minified_filename)
125
- FileUtils.rm(minified_filename)
126
- # puts "Deleted old #{minified_filename}"
127
- end
128
-
129
- system("java -jar vendor/yui-compressor/build/yuicompressor-2.4.jar #{filename} -o #{minified_filename}")
130
-
131
- # puts "Created minified file #{minified_filename}"
132
- # puts
133
- end
134
-
135
- end
136
- end
137
- end
138
- end
@@ -1,36 +0,0 @@
1
- module Ext
2
- module MVC
3
- class CssBuilder < Builder
4
- def self.instances(args = [])
5
- [ExtMVC::CssBuilder.new]
6
- end
7
-
8
- def file_list
9
- # build to production environment
10
- environment = ExtMVC.mvc_development_environment
11
-
12
- return ExtJS::MVC.css_files_for(environment)
13
- end
14
-
15
- def name
16
- "Ext MVC Application Stylesheets"
17
- end
18
-
19
- def message
20
- "Built #{name}"
21
- end
22
-
23
- def description
24
- "Your #{name}"
25
- end
26
-
27
- def output_filename
28
- "public/stylesheets/application-all.css"
29
- end
30
-
31
- def directory_name
32
- "public/stylesheets/"
33
- end
34
- end
35
- end
36
- end
@@ -1,20 +0,0 @@
1
- module Ext
2
- module MVC
3
- class DocsBuilder < Builder
4
- def self.instances(args = [])
5
- [ExtMVC::DocsBuilder.new]
6
- end
7
-
8
- def build
9
- system("java -jar vendor/ext-doc/ext-doc.jar -p config/build.xml -o docs -t vendor/ext-doc/template/ext/template.xml -verbose")
10
- app_name = ExtMVC.settings['docs']['title'] rescue ExtMVC.environment["namespace"] || "Ext MVC"
11
- logo = ExtMVC.settings['docs']['logo'] rescue "resources/extjs.gif"
12
-
13
- {:app_name => app_name, :logo => logo}.each_pair do |key, value|
14
- ExtMVC.gsub_file("docs/index.html", "<%= @#{key} %>", value)
15
- ExtMVC.gsub_file("docs/welcome.html", "<%= @#{key} %>", value)
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,33 +0,0 @@
1
- module Ext
2
- module MVC
3
- class MVCBuilder < Builder
4
- def self.instances(args = [])
5
- [ExtMVC::MVCBuilder.new]
6
- end
7
-
8
- def output_filename
9
- "#{directory_name}/ext-mvc-all.js"
10
- end
11
-
12
- def directory_name
13
- "vendor/mvc"
14
- end
15
-
16
- def should_minify
17
- true
18
- end
19
-
20
- def name
21
- "Ext MVC"
22
- end
23
-
24
- def message
25
- "Built #{name}"
26
- end
27
-
28
- def description
29
- "The #{name} framework (#{directory_name})"
30
- end
31
- end
32
- end
33
- end
@@ -1,53 +0,0 @@
1
- module ExtJS
2
- module MVC
3
- class PluginBuilder < Builder
4
- # returns an array of PluginBuilder instances based on input from the command line.
5
- # The sole argument should be an array, where the first element will usually be a plugin name, or 'all'
6
- def self.instances(args = [])
7
- name = args[0] || 'all'
8
-
9
- if name == 'all'
10
- self.all_plugin_names.collect {|name| ExtMVC::PluginBuilder.new(name)}
11
- else
12
- [ExtMVC::PluginBuilder.new(name)]
13
- end
14
- end
15
-
16
- attr_accessor :name
17
-
18
- def initialize(name)
19
- @name = name
20
- end
21
-
22
- def output_filename
23
- "#{directory_name}/#{name}-all.js"
24
- end
25
-
26
- def message
27
- "Built the #{name} plugin"
28
- end
29
-
30
- def description
31
- "The #{name} plugin (#{directory_name})"
32
- end
33
-
34
- def directory_name
35
- "#{ExtMVC::PluginBuilder.plugins_directory}/#{@name}"
36
- end
37
-
38
- # The plugins directory, relative to the directory the build command is run from
39
- def self.plugins_directory
40
- "vendor/plugins"
41
- end
42
-
43
- private
44
-
45
- #Gets the name of each plugin directory inside vendor/plugins and calls self.plugin with it
46
- def self.all_plugin_names
47
- Dir.entries(self.plugins_directory).select {|fileName|
48
- File.directory?("#{self.plugins_directory}/#{fileName}") && (fileName =~ /^\./) != 0
49
- }
50
- end
51
- end
52
- end
53
- end
data/lib/extjs-mvc/cli.rb DELETED
@@ -1,52 +0,0 @@
1
- require 'thor'
2
-
3
- require 'jammit-core'
4
- require 'jammit-core/cli'
5
-
6
- module ExtJS
7
- module MVC
8
- class CLI < Thor
9
- ARGV = ::ARGV.dup
10
-
11
- desc "generate", "Generate model, controller, view or app"
12
- def generate(which, *params)
13
- ExtJS::MVC.ensure_in_app unless which == 'app'
14
- ExtJS::MVC::Generator.dispatch(which, *params)
15
- end
16
-
17
- desc "build", "Build stuff"
18
- def build(name = :all, *params)
19
- ExtJS::MVC.ensure_in_app
20
- ExtJS::MVC::BuilderManager.dispatch(name, *params)
21
- end
22
-
23
- desc "plugin", "Manage plugins"
24
- def plugin
25
- ExtJS::MVC.ensure_in_app
26
- ExtJS::MVC::Plugin.new('Frak')
27
- end
28
-
29
- desc "stats", "View code statistics"
30
- def stats
31
- ExtJS::MVC.ensure_in_app
32
- #ExtJS::MVC::Stats.new('Frak')
33
- end
34
-
35
- desc "namespace", "Change the application's namespace"
36
- def namespace(name)
37
- ExtJS::MVC.ensure_in_app
38
- ExtJS::MVC::Generator.dispatch("namespace", name)
39
- end
40
-
41
- def initialize(args=ARGV, config={}, options={})
42
-
43
- ExtJS::MVC.ui = UI::Shell.new(shell)
44
-
45
- super
46
- end
47
-
48
- private
49
-
50
- end
51
- end
52
- end
@@ -1,79 +0,0 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
-
3
- require 'hpricot'
4
- require 'generators/base'
5
- require 'generators/app'
6
- require 'generators/model'
7
- require 'generators/view'
8
- require 'generators/controller'
9
- require 'generators/scaffold'
10
-
11
- module ExtJS
12
- module MVC
13
- module Generator
14
-
15
- @@generators = %w(app model controller scaffold view namespace)
16
- def self.dispatch(generator, *params)
17
-
18
- unless @@generators.include?(generator)
19
- raise MVC::ArgumentError.new("Must use one of the following: " + @@generators.join(", ").downcase)
20
- end
21
-
22
- name = params.shift
23
-
24
- case generator
25
- when "app"
26
- App.new(name).generate!
27
- when "model"
28
- fields = params.select {|arg| arg != "--force"}.collect {|f| f.split(":")}
29
- Model.new(name, fields).generate!
30
- when "controller"
31
- actions = params.select {|arg| arg != "--force"}
32
- Controller.new(name, actions).generate!
33
- when "scaffold"
34
- fields = params.select {|arg| arg != "--force"}.collect {|f| f.split(":")}
35
- Scaffold.new(name, fields).generate!
36
- when "view"
37
- package = name
38
- name = params.shift
39
- View.new(package, name).generate!
40
- when "namespace"
41
- self.namespace(name)
42
-
43
- end
44
- end
45
-
46
- # overwrites all instances of 'MyApp' with the namespace provided
47
- def self.namespace(namespace)
48
- current = ExtJS::MVC.namespace
49
-
50
- configs = %w(
51
- config/settings.yml
52
- config/application.js
53
- )
54
- Dir["app/controllers/*.js"].each do |f|
55
- write_namespace(f, current, namespace)
56
- end
57
- Dir["app/views/*/*.js"].each do |f|
58
- write_namespace(f, current, namespace)
59
- end
60
- configs.each {|f|
61
- write_namespace(f, current, namespace)
62
- }
63
- end
64
-
65
- private
66
-
67
- def self.write_namespace(f, current, namespace)
68
- ExtJS::MVC.ui.confirm(" namespacing #{f}")
69
- gsub_file(f, current, namespace)
70
- end
71
-
72
- #find/replace in a file. Stolen/adapted from Rails
73
- def self.gsub_file(filename, regexp, *args, &block)
74
- content = File.read(filename).gsub(regexp, *args, &block)
75
- File.open(filename, 'wb') { |file| file.write(content) }
76
- end
77
- end
78
- end
79
- end
@@ -1,57 +0,0 @@
1
- module ExtJS
2
- module MVC
3
- module Generator
4
- class App < Base
5
-
6
- def initialize(name, namespace=nil)
7
-
8
- @name = name
9
- @namespace = namespace || Extlib::Inflection.camelize(name)
10
- end
11
-
12
- def generate!
13
- if File.exists?(@name)
14
- raise ExtJS::MVC::AppAlreadyExists.new("An app named #{@name} already exists")
15
- end
16
- FileUtils.mkdir(@name)
17
- Dir["#{TEMPLATE_PATH}/app/*"].each do |f|
18
- FileUtils.cp_r(f, @name)
19
- end
20
-
21
- FileUtils.cp_r("#{ExtJS::MVC::ROOT}/js", "#{@name}/vendor")
22
- FileUtils.mv("#{@name}/vendor/js", "#{@name}/vendor/mvc")
23
-
24
- show_files
25
-
26
- # Build assets.
27
- ExtJS::MVC::BuilderManager.dispatch(:setup, {
28
- :asset_root => File.expand_path('.', @name)
29
- })
30
- end
31
-
32
- private
33
-
34
- def notify(f)
35
- @re ||= Regexp.new("#{@name}\/(.*)")
36
- ExtJS::MVC.ui.confirm(" create #{f.match(@re)[1]}")
37
- end
38
-
39
- def show_files
40
- Dir["#{@name}/*"].reject {|dir|
41
- dir.match(/public|vendor/) ? true : false
42
- }.each do |dir|
43
- Dir["#{dir}/**/*.*"].each do |f|
44
- notify(f)
45
- end
46
- end
47
- Dir["#{@name}/vendor/*"].each do |f|
48
- notify(f)
49
- end
50
- Dir["#{@name}/public/*"].each do |f|
51
- notify(f)
52
- end
53
- end
54
- end
55
- end
56
- end
57
- end
@@ -1,53 +0,0 @@
1
- module ExtJS
2
- module MVC
3
- module Generator
4
- class Base
5
-
6
- TEMPLATE_PATH = "#{File.dirname(__FILE__)}/templates"
7
-
8
- def initialize *args
9
- @gsubs ||= {}
10
- @gsubs['namespace'] = ExtJS::MVC.environment['namespace']
11
- end
12
-
13
- protected
14
- def ensure_directories_present! *args
15
- args.each do |a|
16
- Dir.mkdir(a) unless File.exists?(a)
17
- end
18
- end
19
-
20
- def ensure_no_overwrite! *args
21
- args.each do |a|
22
- if File.exists?(a) && !ARGV.include?("--force")
23
- raise ExtJS::MVC::FileExists.new("File already exists: #{a}")
24
- end
25
- end
26
- end
27
-
28
- def template(template_filename, destination_filename)
29
- #write the file
30
- File.open(destination_filename, 'w') {|f| f.puts(render_template(template_filename))}
31
-
32
- ExtJS::MVC.ui.confirm(" Created #{destination_filename}")
33
- end
34
-
35
- def render_template(template_filename, gsubs = @gsubs)
36
- #grab the template file text
37
- template_text = IO.read("#{TEMPLATE_PATH}/#{template_filename}")
38
-
39
- #translate the template file text
40
- gsubs.each_pair do |key, value|
41
- template_text.gsub!(Regexp.new("<%= @#{key} %>"), value)
42
- end
43
-
44
- template_text
45
- end
46
-
47
- def include_script html_filename, script_filename, dom_id
48
-
49
- end
50
- end
51
- end
52
- end
53
- end
@@ -1,41 +0,0 @@
1
- module ExtJS
2
- module MVC
3
- module Generator
4
- class Controller < Base
5
- def initialize(name, actions = [])
6
- super
7
-
8
- @name = name
9
- @actions = actions
10
- @package = name.downcase
11
-
12
- @gsubs.merge!({
13
- 'controller_name' => "#{name.capitalize}Controller",
14
- 'short_name' => @package,
15
- 'actions' => generate_actions
16
- })
17
-
18
- @controller_filename = "app/controllers/#{@gsubs['controller_name']}.js"
19
- end
20
-
21
- def generate!
22
- ensure_no_overwrite! @controller_filename
23
- ensure_directories_present! "app", "app/controllers"
24
-
25
- template "Controller.js", @controller_filename
26
-
27
- generate_views!
28
- end
29
-
30
- private
31
- def generate_actions
32
- @actions.collect {|act| render_template("_Action.js", {'action_name' => act})}.join("")
33
- end
34
-
35
- def generate_views!
36
- @actions.each {|a| View.new(@package, a).generate!}
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,41 +0,0 @@
1
- module ExtJS
2
- module MVC
3
- module Generator
4
- class Model < Base
5
- def initialize(name, fields = [])
6
- super
7
-
8
- @fields = fields
9
-
10
- @gsubs['name'] = name.capitalize
11
- @gsubs['model_name'] = name
12
- @gsubs['inst_name'] = name.downcase
13
- @gsubs['fields'] = fields.collect {|f| field_template(f[0], f[1])}.join(",\n")
14
-
15
- @model_filename = "app/models/#{@gsubs['name']}.js"
16
- @spec_filename = "spec/models/#{@gsubs['name']}.spec.js"
17
- end
18
-
19
- def generate!
20
- ensure_no_overwrite! @model_filename, @spec_filename
21
-
22
- ensure_directories_present! "app", "app/models"
23
- ensure_directories_present! "spec", "spec/models"
24
-
25
- template "Model.js", @model_filename
26
- template "ModelSpec.js", @spec_filename
27
- end
28
-
29
- private
30
- def field_template(name, type)
31
- padding = longest_field_length - name.length
32
- " {name: '#{name}', #{" " * padding}type: '#{type}'}"
33
- end
34
-
35
- def longest_field_length
36
- @fields.collect {|f| f[0].length}.max
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,17 +0,0 @@
1
- module ExtJS
2
- module MVC
3
- module Generator
4
- class Scaffold < Base
5
- def initialize(name, fields = [])
6
- super
7
- @fields = fields
8
- @name = name
9
- end
10
-
11
- def generate!
12
- Model.new(@name, @fields).generate!
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,17 +0,0 @@
1
- /**
2
- * @class <%= @namespace %>.controllers.<%= @controller_name %>
3
- * @extends ExtMVC.Controller
4
- */
5
- <%= @namespace %>.controllers.<%= @controller_name %> = Ext.extend(ExtMVC.Controller, {
6
- constructor: function() {
7
- //super
8
- <%= @namespace %>.controllers.<%= @controller_name %>.superclass.constructor.call(this, {
9
- viewsPackage: <%= @namespace %>.views.<%= @short_name %>
10
- });
11
- <%= @actions %>
12
- }
13
- });
14
-
15
- ExtMVC.OS.getOS().registerController('<%= @short_name %>', <%= @namespace %>.controllers.<%= @controller_name %>);
16
-
17
- Ext.ns('<%= @namespace %>.views.<%= @short_name %>');
@@ -1,9 +0,0 @@
1
- /**
2
- * @class <%= @name %>
3
- * @extends ExtMVC.model.Base
4
- */
5
- ExtMVC.model.define("<%= @name %>", {
6
- fields: [
7
- <%= @fields %>
8
- ]
9
- });
@@ -1,12 +0,0 @@
1
- Screw.Unit(function() {
2
- describe("The <%= @name %> class", function() {
3
- var <%= @inst_name %>;
4
- before(function() {
5
- <%= @inst_name %> = new <%= @namespace %>.models.<%= @name %>({
6
- //set fields for this model here
7
- });
8
- });
9
-
10
- //create your unit tests here
11
- });
12
- });
@@ -1,16 +0,0 @@
1
- /**
2
- * @class <%= @namespace %>.views.<%= @view_namespace %>.<%= @name %>
3
- * @extends Ext.Panel
4
- * A default generated view
5
- */
6
- <%= @namespace %>.views.<%= @view_namespace %>.<%= @name %> = Ext.extend(Ext.Panel, {
7
-
8
- initComponent: function() {
9
- Ext.applyIf(this, {
10
- title: "<%= @name %> Template",
11
- html: "Find me in <%= @filename %>"
12
- });
13
-
14
- <%= @namespace %>.views.<%= @view_namespace %>.<%= @name %>.superclass.initComponent.apply(this, arguments);
15
- }
16
- });