extjs-mvc 0.4.0.b → 0.4.0.d

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 (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
- });