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.
- data/Rakefile +6 -9
- data/VERSION +1 -1
- data/bin/extjs-mvc +19 -0
- data/lib/extjs-mvc.rb +13 -67
- data/lib/{js → vendor}/App.js +0 -0
- data/lib/{js → vendor}/MVC.js +0 -0
- data/lib/{js → vendor}/Presenter.js +0 -0
- data/lib/{js → vendor}/README.rdoc +0 -0
- data/lib/{js → vendor}/controller/Controller.js +0 -0
- data/lib/{js → vendor}/controller/CrudController.js +0 -0
- data/lib/{js → vendor}/lib/Array.js +0 -0
- data/lib/{js → vendor}/lib/Booter.js +4 -3
- data/lib/{js → vendor}/lib/ClassManager.js +0 -0
- data/lib/{js → vendor}/lib/ControllerClassManager.js +0 -0
- data/lib/{js → vendor}/lib/Dependencies.js +0 -0
- data/lib/{js → vendor}/lib/DispatchMatcher.js +0 -0
- data/lib/{js → vendor}/lib/Dispatcher.js +0 -0
- data/lib/{js → vendor}/lib/Environment.js +0 -0
- data/lib/{js → vendor}/lib/Inflector.js +17 -0
- data/lib/{js → vendor}/lib/ModelClassManager.js +0 -0
- data/lib/{js → vendor}/lib/Route.js +0 -0
- data/lib/{js → vendor}/lib/Router.js +0 -0
- data/lib/{js → vendor}/lib/String.js +0 -0
- data/lib/{js → vendor}/lib/ViewClassManager.js +0 -0
- data/lib/{js → vendor}/lib/notes.txt +0 -0
- data/lib/{js → vendor}/model/AdapterManager.js +0 -0
- data/lib/{js → vendor}/model/Association.js +0 -0
- data/lib/{js → vendor}/model/Base.js +0 -0
- data/lib/{js → vendor}/model/BelongsToAssociation.js +0 -0
- data/lib/{js → vendor}/model/Cache.js +0 -0
- data/lib/{js → vendor}/model/HasManyAssociation.js +0 -0
- data/lib/{js → vendor}/model/Model.js +0 -0
- data/lib/{js → vendor}/model/UrlBuilder.js +0 -0
- data/lib/{js → vendor}/model/adapters/AbstractAdapter.js +0 -0
- data/lib/{js → vendor}/model/adapters/MemoryAdapter.js +0 -0
- data/lib/{js → vendor}/model/adapters/RESTAdapter.js +0 -0
- data/lib/{js → vendor}/model/adapters/RESTJSONAdapter.js +0 -0
- data/lib/{js → vendor}/model/adapters/notes.txt +0 -0
- data/lib/{js → vendor}/model/associations/Association.js +0 -0
- data/lib/{js → vendor}/model/associations/notes.txt +0 -0
- data/lib/{js → vendor}/model/validations/Errors.js +0 -0
- data/lib/{js → vendor}/model/validations/Plugin.js +0 -0
- data/lib/{js → vendor}/model/validations/Validations.js +0 -0
- data/lib/{js → vendor}/notes/Charts.graffle +0 -0
- data/lib/{js → vendor}/overrides/Ext.Component.js +0 -0
- data/lib/{js → vendor}/overrides/Ext.extend.js +0 -0
- data/lib/{js → vendor}/spec/Array.spec.js +0 -0
- data/lib/{js → vendor}/spec/ExtMVC.spec.js +0 -0
- data/lib/{js → vendor}/spec/Model.spec.js +0 -0
- data/lib/{js → vendor}/spec/OS.spec.js +0 -0
- data/lib/{js → vendor}/spec/Router.spec.js +0 -0
- data/lib/{js → vendor}/spec/SpecHelper.js +0 -0
- data/lib/{js → vendor}/spec/String.spec.js +0 -0
- data/lib/{js → vendor}/spec/model/AbstractAdapter.spec.js +0 -0
- data/lib/{js → vendor}/spec/model/Associations.spec.js +0 -0
- data/lib/{js → vendor}/spec/model/Cache.spec.js +0 -0
- data/lib/{js → vendor}/spec/model/RESTAdapter.spec.js +0 -0
- data/lib/{js → vendor}/spec/model/ValidationErrors.spec.js +0 -0
- data/lib/{js → vendor}/spec/model/Validations.spec.js +0 -0
- data/lib/{js → vendor}/spec/model/ValidationsPlugin.spec.js +0 -0
- data/lib/{js → vendor}/spec/suite.html +0 -0
- data/lib/{js → vendor}/specs-old/JSSpec.css +0 -0
- data/lib/{js → vendor}/specs-old/JSSpec.js +0 -0
- data/lib/{js → vendor}/specs-old/all.html +0 -0
- data/lib/{js → vendor}/specs-old/base.js +0 -0
- data/lib/{js → vendor}/specs-old/controller.js +0 -0
- data/lib/{js → vendor}/specs-old/diff_match_patch.js +0 -0
- data/lib/{js → vendor}/specs-old/model.js +0 -0
- data/lib/{js → vendor}/specs-old/route.js +0 -0
- data/lib/{js → vendor}/specs-old/router.js +0 -0
- data/lib/{js → vendor}/specs-old/string.js +0 -0
- data/lib/{js → vendor}/testrunner/JSpecFormatter.js +0 -0
- data/lib/{js → vendor}/testrunner/TestClient.js +0 -0
- data/lib/{js → vendor}/testrunner/TestGrid.js +0 -0
- data/lib/{js → vendor}/testrunner/TestRunner.js +0 -0
- data/lib/{js → vendor}/testrunner/TestViewport.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/EXAMPLE.html +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/LICENSE +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/README.markdown +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/jquery-1.2.3.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/jquery.fn.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/jquery.print.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.assets.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.behaviors.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.builder.js +0 -0
- data/lib/{js → vendor}/vendor/screw-unit/lib/screw.css +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.events.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.matchers.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/lib/screw.server.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/spec/behaviors_spec.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/spec/matchers_spec.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/spec/print_spec.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/spec/spec_helper.js +0 -0
- data/lib/{extjs-mvc/generators/templates/app → vendor}/vendor/screw-unit/spec/suite.html +0 -0
- data/lib/{js → vendor}/view/FormWindow.js +0 -0
- data/lib/{js → vendor}/view/HasManyEditorGridPanel.js +0 -0
- data/lib/{js → vendor}/view/scaffold/Edit.js +0 -0
- data/lib/{js → vendor}/view/scaffold/Index.js +0 -0
- data/lib/{js → vendor}/view/scaffold/New.js +0 -0
- data/lib/{js → vendor}/view/scaffold/ScaffoldFormPanel.js +0 -0
- data/lib/{js/build → vendor.yml} +7 -1
- metadata +110 -203
- data/bin/xmvc +0 -13
- data/lib/extjs-mvc/README +0 -20
- data/lib/extjs-mvc/builder.rb +0 -83
- data/lib/extjs-mvc/builders/all_builder.rb +0 -15
- data/lib/extjs-mvc/builders/app_builder.rb +0 -36
- data/lib/extjs-mvc/builders/base.rb +0 -138
- data/lib/extjs-mvc/builders/css_builder.rb +0 -36
- data/lib/extjs-mvc/builders/docs_builder.rb +0 -20
- data/lib/extjs-mvc/builders/mvc_builder.rb +0 -33
- data/lib/extjs-mvc/builders/plugin_builder.rb +0 -53
- data/lib/extjs-mvc/cli.rb +0 -52
- data/lib/extjs-mvc/generator.rb +0 -79
- data/lib/extjs-mvc/generators/app.rb +0 -57
- data/lib/extjs-mvc/generators/base.rb +0 -53
- data/lib/extjs-mvc/generators/controller.rb +0 -41
- data/lib/extjs-mvc/generators/model.rb +0 -41
- data/lib/extjs-mvc/generators/scaffold.rb +0 -17
- data/lib/extjs-mvc/generators/templates/Controller.js +0 -17
- data/lib/extjs-mvc/generators/templates/Model.js +0 -9
- data/lib/extjs-mvc/generators/templates/ModelSpec.js +0 -12
- data/lib/extjs-mvc/generators/templates/View.js +0 -16
- data/lib/extjs-mvc/generators/templates/_Action.js +0 -7
- data/lib/extjs-mvc/generators/templates/app/README.rdoc +0 -152
- data/lib/extjs-mvc/generators/templates/app/app/App.js +0 -64
- data/lib/extjs-mvc/generators/templates/app/app/controllers/ApplicationController.js +0 -10
- data/lib/extjs-mvc/generators/templates/app/app/controllers/HomeController.js +0 -10
- data/lib/extjs-mvc/generators/templates/app/app/views/home/Index.js +0 -17
- data/lib/extjs-mvc/generators/templates/app/app/views/layout/Menu.js +0 -23
- data/lib/extjs-mvc/generators/templates/app/config/application.js +0 -1
- data/lib/extjs-mvc/generators/templates/app/config/boot.js +0 -67
- data/lib/extjs-mvc/generators/templates/app/config/build.xml +0 -77
- data/lib/extjs-mvc/generators/templates/app/config/database.js +0 -4
- data/lib/extjs-mvc/generators/templates/app/config/environment.json +0 -58
- data/lib/extjs-mvc/generators/templates/app/config/environments/development.json +0 -1
- data/lib/extjs-mvc/generators/templates/app/config/environments/production.json +0 -4
- data/lib/extjs-mvc/generators/templates/app/config/routes.js +0 -27
- data/lib/extjs-mvc/generators/templates/app/config/settings.yml +0 -3
- data/lib/extjs-mvc/generators/templates/app/public/index.html +0 -19
- data/lib/extjs-mvc/generators/templates/app/public/stylesheets/ext-mvc-all.css +0 -49
- data/lib/extjs-mvc/generators/templates/app/spec/SpecHelper.js +0 -0
- data/lib/extjs-mvc/generators/templates/app/spec/index.html +0 -66
- data/lib/extjs-mvc/generators/templates/app/vendor/screw-unit/lib/screw.css +0 -90
- data/lib/extjs-mvc/generators/templates/scaffold/ScaffoldController.js +0 -18
- data/lib/extjs-mvc/generators/view.rb +0 -29
- data/lib/extjs-mvc/plugin.rb +0 -105
- data/lib/extjs-mvc/scripts.rb +0 -15
- data/lib/extjs-mvc/settings.rb +0 -75
- data/lib/extjs-mvc/setup.rb +0 -5
- data/lib/extjs-mvc/stats.rb +0 -241
- data/lib/extjs-mvc/test.rb +0 -11
- data/lib/extjs-mvc/testserver.ru +0 -95
- data/lib/extjs-mvc/ui.rb +0 -58
- data/lib/extjs-mvc/update.rb +0 -73
- data/lib/js/vendor/screw-unit/EXAMPLE.html +0 -68
- data/lib/js/vendor/screw-unit/LICENSE +0 -22
- data/lib/js/vendor/screw-unit/README.markdown +0 -307
- data/lib/js/vendor/screw-unit/lib/jquery-1.2.3.js +0 -3408
- data/lib/js/vendor/screw-unit/lib/jquery.fn.js +0 -29
- data/lib/js/vendor/screw-unit/lib/jquery.print.js +0 -108
- data/lib/js/vendor/screw-unit/lib/screw.assets.js +0 -36
- data/lib/js/vendor/screw-unit/lib/screw.behaviors.js +0 -91
- data/lib/js/vendor/screw-unit/lib/screw.builder.js +0 -80
- data/lib/js/vendor/screw-unit/lib/screw.events.js +0 -42
- data/lib/js/vendor/screw-unit/lib/screw.matchers.js +0 -145
- data/lib/js/vendor/screw-unit/lib/screw.server.js +0 -21
- data/lib/js/vendor/screw-unit/spec/behaviors_spec.js +0 -178
- data/lib/js/vendor/screw-unit/spec/matchers_spec.js +0 -237
- data/lib/js/vendor/screw-unit/spec/print_spec.js +0 -119
- data/lib/js/vendor/screw-unit/spec/spec_helper.js +0 -0
- 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
|
data/lib/extjs-mvc/generator.rb
DELETED
@@ -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
|
-
/**
|
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,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
|
-
});
|