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