depo 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +71 -0
  3. data/Rakefile +50 -0
  4. data/generators/depo_config/USAGE +5 -0
  5. data/generators/depo_config/depo_config_generator.rb +8 -0
  6. data/generators/depo_config/templates/depo.rb +9 -0
  7. data/generators/dijit/USAGE +0 -0
  8. data/generators/dijit/dijit_generator.rb +34 -0
  9. data/generators/dijit/templates/class.js +30 -0
  10. data/generators/dijit/templates/style.css +4 -0
  11. data/generators/dijit/templates/test.html +15 -0
  12. data/generators/dijit/templates/test.js +11 -0
  13. data/generators/dpage/USAGE +33 -0
  14. data/generators/dpage/dpage_generator.rb +39 -0
  15. data/generators/dpage/templates/app/controllers.js +12 -0
  16. data/generators/dpage/templates/app/models.js +5 -0
  17. data/generators/dpage/templates/app/views.js +4 -0
  18. data/generators/dpage/templates/controller.rb +8 -0
  19. data/generators/dpage/templates/default_stylesheets/all.css +0 -0
  20. data/generators/dpage/templates/default_stylesheets/common.css +11 -0
  21. data/generators/dpage/templates/default_stylesheets/reset.css +51 -0
  22. data/generators/dpage/templates/default_stylesheets/theme_override.css +3 -0
  23. data/generators/dpage/templates/dpage.css +6 -0
  24. data/generators/dpage/templates/dpage.js +4 -0
  25. data/generators/dpage/templates/helper.rb +9 -0
  26. data/generators/dpage/templates/helper_test.rb +5 -0
  27. data/generators/dpage/templates/view.haml +28 -0
  28. data/init.rb +2 -0
  29. data/install.rb +1 -0
  30. data/lib/depo/build.rb +53 -0
  31. data/lib/depo/config.rb +82 -0
  32. data/lib/depo/dijit_conventions.rb +101 -0
  33. data/lib/depo/tasks.rb +1 -0
  34. data/lib/depo/templates/dojo_src.tpl +4 -0
  35. data/lib/depo/templates/profile.js +8 -0
  36. data/lib/depo/view_helpers.rb +32 -0
  37. data/lib/depo.rb +36 -0
  38. data/tasks/depo.rake +29 -0
  39. data/test/action_pack_test.rb +49 -0
  40. data/test/build_profile_test.rb +32 -0
  41. data/test/config_test.rb +55 -0
  42. data/test/database.yml +6 -0
  43. data/test/generators_test.rb +59 -0
  44. data/test/path_utils_test.rb +18 -0
  45. data/test/rails_root/public/ria/src/app/my/Dijit.js +28 -0
  46. data/test/rails_root/public/ria/src/app/tests/my/Dijit.html +16 -0
  47. data/test/rails_root/public/ria/src/app/tests/my/Dijit.js +11 -0
  48. data/test/rails_root/public/ria/src/app/themes/tundra/my/Dijit.css +4 -0
  49. data/test/test_helper.rb +104 -0
  50. data/uninstall.rb +1 -0
  51. metadata +133 -0
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 [name of plugin creator]
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,71 @@
1
+ = Depo (Dojo On Rails)
2
+
3
+ Is attempt to automate many tasks and practices in building RIA using Dojo and Rails.
4
+
5
+ == Installation
6
+
7
+ 1. sudo gem install depo
8
+ or in config/environment.rb:
9
+ ...
10
+ config.gem 'depo'
11
+ ...
12
+ >> sudo rake gems:install
13
+ 1. rake dojo:install
14
+
15
+
16
+ == FEATURES ABSTRACT:
17
+
18
+ * Some conventions and practices about Dojo-Rails project structure and management
19
+ * Automate dojo installation and update
20
+ * Automate builds
21
+ * Generators for custom widgets (DijitGenerator) and one page applications
22
+ * ActionView Helper
23
+
24
+ == SAMPLE CONFIGURATION:
25
+ Depo.configure {
26
+ author 'niquola'
27
+ themes ['basic']
28
+ default_theme 'basic'
29
+ dojo_version '1.4.1'
30
+ base_webpath '/myapplication'
31
+
32
+ build_options {
33
+ cssOptimize 'comments.keepLines'
34
+ optimize 'shrinksafe.keepLines'
35
+ cssImportIgnore '../dijit.css'
36
+ internStrings 'true'
37
+ }
38
+
39
+ build_profile {
40
+ libs<< 'app'
41
+
42
+ pages<< "app.pages.dashboard"
43
+ pages<< "app.pages.admin"
44
+ }
45
+ }
46
+
47
+
48
+ == LICENSE:
49
+
50
+ (The MIT License)
51
+
52
+ Copyright (c) 2010 niquola
53
+
54
+ Permission is hereby granted, free of charge, to any person obtaining
55
+ a copy of this software and associated documentation files (the
56
+ 'Software'), to deal in the Software without restriction, including
57
+ without limitation the rights to use, copy, modify, merge, publish,
58
+ distribute, sublicense, and/or sell copies of the Software, and to
59
+ permit persons to whom the Software is furnished to do so, subject to
60
+ the following conditions:
61
+
62
+ The above copyright notice and this permission notice shall be
63
+ included in all copies or substantial portions of the Software.
64
+
65
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
66
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
67
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
68
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
69
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
70
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
71
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,50 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ require 'rake/rdoctask'
5
+ require 'rake/gempackagetask'
6
+
7
+ desc 'Default: run unit tests.'
8
+ task :default => :test
9
+
10
+ desc 'Test the dojo_on_rails plugin.'
11
+ Rake::TestTask.new(:test) do |t|
12
+ t.libs << 'lib'
13
+ t.libs << 'test'
14
+ #t.pattern = 'test/*_test.rb'
15
+ t.test_files = FileList['test/*_test.rb']
16
+ t.verbose = true
17
+ end
18
+
19
+ desc 'Generate documentation for the dojo_on_rails plugin.'
20
+ Rake::RDocTask.new(:rdoc) do |rdoc|
21
+ rdoc.rdoc_dir = 'rdoc'
22
+ rdoc.title = 'depo'
23
+ rdoc.options << '--line-numbers' << '--inline-source'
24
+ rdoc.rdoc_files.include('README.rdoc')
25
+ rdoc.rdoc_files.include('lib/**/*.rb')
26
+ end
27
+
28
+ PKG_FILES = FileList[ '[a-zA-Z]*', 'generators/**/*', 'lib/**/*', 'rails/**/*', 'tasks/**/*', 'test/**/*' ]
29
+
30
+ spec = Gem::Specification.new do |s|
31
+ s.name = "depo"
32
+ s.version = "0.0.1"
33
+ s.author = "niquola, smecsia"
34
+ s.email = "niquola@gmail.com"
35
+ #s.homepage = ""
36
+ s.platform = Gem::Platform::RUBY
37
+ s.summary = "Rails & Dojo integration"
38
+ s.add_dependency('dojo_src')
39
+ s.add_dependency('rails', '>= 2.3.5')
40
+ s.add_dependency('kung_figure', '0.0.2')
41
+ s.files = PKG_FILES.to_a
42
+ s.require_path = "lib"
43
+ s.has_rdoc = false
44
+ s.extra_rdoc_files = ["README.rdoc"]
45
+ end
46
+
47
+ desc 'Turn this plugin into a gem.'
48
+ Rake::GemPackageTask.new(spec) do |pkg|
49
+ pkg.gem_spec = spec
50
+ end
@@ -0,0 +1,5 @@
1
+ Description:
2
+ Generate depo config
3
+
4
+ Modules Example:
5
+ `./script/generate depo_config
@@ -0,0 +1,8 @@
1
+ class DepoConfigGenerator < Rails::Generator::Base
2
+ def manifest
3
+ record do |m|
4
+ m.directory File.join('config')
5
+ m.template "depo.rb", File.join('config','depo.rb')
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ Depo.configure do
2
+ root 'public'
3
+ author 'yorname'
4
+ generators do
5
+ head_of_test_page <<-HTML
6
+ <!-- some code to title of test page -->
7
+ HTML
8
+ end
9
+ end
File without changes
@@ -0,0 +1,34 @@
1
+ class DijitGenerator < Rails::Generator::Base
2
+ attr :dijit
3
+
4
+ def extract_opts!(args)
5
+ @dijit_full_name = args.shift
6
+ @dijit=Depo::DijitConventions.new(@dijit_full_name)
7
+ end
8
+
9
+ def assigns
10
+ @assigns ||= {:assigns=>dijit.to_hash.merge(:config=>Depo.config)}
11
+ end
12
+
13
+ def test?
14
+ true
15
+ end
16
+
17
+ def style?
18
+ true
19
+ end
20
+
21
+ def manifest
22
+ record do |m|
23
+ extract_opts!(args)
24
+ m.directory dijit.package_path
25
+ m.directory dijit.style_dir_path
26
+ m.directory dijit.test_dir_path
27
+
28
+ m.template "class.js", dijit.class_path, assigns
29
+ m.template "test.js", dijit.test_code_path,assigns if test?
30
+ m.template "test.html", dijit.test_page_path,assigns if test?
31
+ m.template "style.css", dijit.style_path,assigns if style?
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,30 @@
1
+ /**
2
+ * <%= dijit_full_name %>
3
+ * Created by <%= config.author %>
4
+ **/
5
+ dojo.provide("<%= dijit_full_name %>");
6
+ <% if dijit_base_class != 'null' %>
7
+ dojo.require("<%= dijit_base_class %>");
8
+ <% end %>
9
+ (function () {
10
+ //here go private vars and functions
11
+ dojo.declare("<%= dijit_full_name %>",<%= dijit_base_class %>, {
12
+ // summary:
13
+ // HERE WIDGET SUMMARY
14
+
15
+ // baseClass: [protected] String
16
+ baseClass: "<%= dijit_style_class_name %>",
17
+ //templateString: dojo.cache("<%= dijit_package_name %>", "templates/<%= dijit_class_name %>.html"),
18
+ //widgetsInTemplate: true,
19
+ //buildRendering: function () {
20
+ //this.inherited(arguments);
21
+ //},
22
+ //layout: function () {
23
+ //var cb = this._contentBox;
24
+ //dojo.marginBox(this.containerNode, cb);
25
+ //},
26
+ //postCreate: function () {
27
+ //this.inherited(arguments);
28
+ //}
29
+ });
30
+ });
@@ -0,0 +1,4 @@
1
+ .<%= dijit_style_class_name %> {
2
+ }
3
+ .<%= dijit_style_class_name %>Container {
4
+ }
@@ -0,0 +1,15 @@
1
+ <?xml version='1.0' encoding='utf-8' ?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html>
4
+ <head>
5
+ <title><%= dijit_full_name %></title>
6
+
7
+ <script type="text/javascript" src="/ria/src/dojo/dojo.js" djConfig="isDebug:false,parseOnLoad:true"> </script>
8
+ <script src="<%= dijit_class_name %>.js"></script>
9
+ <%= config.generators.head_of_test_page %>
10
+ <link rel="stylesheet" href="/<%= style_path %>" type="text/css" />
11
+ </head>
12
+ <body class="app">
13
+ </body>
14
+ </html>
15
+
@@ -0,0 +1,11 @@
1
+ dojo.require("doh.runner");
2
+ //dojo.require("dojo.robot");
3
+ dojo.require("<%= dijit_full_name %>");
4
+
5
+ dojo.addOnLoad(function () {
6
+ doh.register("<%= dijit_full_name %>", [
7
+ function test(t) {
8
+ t.t(false,"not implemented");
9
+ }]);
10
+ doh.run();
11
+ });
@@ -0,0 +1,33 @@
1
+ Description:
2
+ Stubs out a new controller,its views and page.js with page.css. Pass the controller name, either
3
+ CamelCased or under_scored, and a list of views as arguments. The name of js will be action name.
4
+
5
+
6
+ TODO update documentation
7
+
8
+ To create a controller within a module, specify the controller name as a
9
+ path like 'parent_module/controller_name'.
10
+
11
+ This generates a controller class in app/controllers, view templates in
12
+ app/views/controller_name, a helper class in app/helpers, a functional
13
+ test suite in test/functional and a helper test suite in test/unit/helpers.
14
+
15
+ Example:
16
+ `./script/generate controller CreditCard open debit credit close`
17
+
18
+ Credit card controller with URLs like /credit_card/debit.
19
+ Controller: app/controllers/credit_card_controller.rb
20
+ Functional Test: test/functional/credit_card_controller_test.rb
21
+ Views: app/views/credit_card/debit.html.erb [...]
22
+ Helper: app/helpers/credit_card_helper.rb
23
+ Helper Test: test/unit/helpers/credit_card_helper_test.rb
24
+
25
+ Modules Example:
26
+ `./script/generate controller 'admin/credit_card' suspend late_fee`
27
+
28
+ Credit card admin controller with URLs /admin/credit_card/suspend.
29
+ Controller: app/controllers/admin/credit_card_controller.rb
30
+ Functional Test: test/functional/admin/credit_card_controller_test.rb
31
+ Views: app/views/admin/credit_card/debit.html.erb [...]
32
+ Helper: app/helpers/admin/credit_card_helper.rb
33
+ Helper Test: test/unit/helpers/admin/credit_card_helper_test.rb
@@ -0,0 +1,39 @@
1
+ class DpageGenerator < Rails::Generator::NamedBase
2
+ def manifest
3
+ record do |m|
4
+ # Check for class naming collisions.
5
+ m.class_collisions "#{class_name}Controller", "#{class_name}ControllerTest", "#{class_name}Helper", "#{class_name}HelperTest"
6
+
7
+ action = actions[0]
8
+ page=Depo::DijitConventions.new("#{Depo.config.default_page_lib}.#{action}")
9
+
10
+ # Controller, helper, views, and test directories.
11
+ m.directory File.join('app/controllers', class_path)
12
+ m.directory File.join('app/helpers', class_path)
13
+ m.directory File.join('app/views', class_path, file_name)
14
+ m.directory File.join('test/unit/helpers', class_path)
15
+ m.directory page.package_path
16
+
17
+ # Controller class, functional test, and helper class.
18
+ m.template 'controller.rb',
19
+ File.join('app/controllers',
20
+ class_path,
21
+ "#{file_name}_controller.rb")
22
+
23
+ m.template 'helper.rb',
24
+ File.join('app/helpers',
25
+ class_path,
26
+ "#{file_name}_helper.rb")
27
+
28
+ m.template 'helper_test.rb',
29
+ File.join('test/unit/helpers',
30
+ class_path,
31
+ "#{file_name}_helper_test.rb")
32
+
33
+ path = File.join('app/views', class_path, file_name, "#{action}.haml")
34
+ m.template 'view.haml', path, :assigns => { :action => action, :path => path }
35
+
36
+ m.template 'dpage.js', page.class_path, :assigns => { :page_name=> page.dijit_full_name }
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,12 @@
1
+ (function() {
2
+ var controllers = dojo.provide('<%= app_name%>.controllers');
3
+ //published actions
4
+ controllers.actions = {
5
+ startup: function() {},
6
+ exit: function() {}
7
+ };
8
+ //views topics two level hash
9
+ controllers.views = {};
10
+ //models topics three level hash
11
+ controllers.models = {};
12
+ })();
@@ -0,0 +1,5 @@
1
+ (function() {
2
+ //dojo.require('kley.rails.Store');
3
+ var models = dojo.provide('<%= app_name %>.models');
4
+ //models.myModel = new kley.rails.Store('patients');
5
+ })();
@@ -0,0 +1,4 @@
1
+ (function() {
2
+ var views = dojo.provide('<%= app_name %>.views');
3
+ views.jsIdFromTemplate = function(view) {};
4
+ })();
@@ -0,0 +1,8 @@
1
+ class <%= class_name %>Controller < ApplicationController
2
+ <% for action in actions -%>
3
+ def <%= action %>
4
+ end
5
+
6
+ <% end -%>
7
+ end
8
+
@@ -0,0 +1,11 @@
1
+ @import url(reset.css);
2
+ @import url(../../../dijit/themes/tundra/tundra.css);
3
+ html,body,#mainContainer{
4
+ width:100%;
5
+ height:100%;
6
+ }
7
+ #topContainer{
8
+ }
9
+ #leftContainer, #trailingContainer{
10
+ width:15em;
11
+ }
@@ -0,0 +1,51 @@
1
+ html, body, div, span, applet, object, iframe,
2
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
3
+ a, abbr, acronym, address, big, cite, code,
4
+ del, dfn, em, font, img, ins, kbd, q, s, samp,
5
+ small, strike, strong, sub, sup, tt, var,
6
+ b, u, i, center,
7
+ dl, dt, dd, ol, ul, li,
8
+ fieldset, form, label, legend,
9
+ table, caption, tbody, tfoot, thead, tr, th, td {
10
+ margin: 0;
11
+ padding: 0;
12
+ border: 0;
13
+ outline: 0;
14
+ font-size: 100%;
15
+ vertical-align: baseline;
16
+ background: transparent;
17
+ }
18
+ body {
19
+ line-height: 1;
20
+ }
21
+ ol, ul {
22
+ list-style: none;
23
+ }
24
+ blockquote, q {
25
+ quotes: none;
26
+ }
27
+ blockquote:before, blockquote:after,
28
+ q:before, q:after {
29
+ content: '';
30
+ content: none;
31
+ }
32
+
33
+ /* remember to define focus styles! */
34
+ :focus {
35
+ outline: 0;
36
+ }
37
+
38
+ /* remember to highlight inserts somehow! */
39
+ ins {
40
+ text-decoration: none;
41
+ }
42
+ del {
43
+ text-decoration: line-through;
44
+ }
45
+
46
+ /* tables still need 'cellspacing="0"' in the markup */
47
+ table {
48
+ border-collapse: collapse;
49
+ border-spacing: 0;
50
+ }
51
+
@@ -0,0 +1,3 @@
1
+ .tundra .dijitBorderContainer-child{
2
+ border:1px solid #ccf;
3
+ }
@@ -0,0 +1,6 @@
1
+ @import url(common.css);
2
+ /**
3
+ * import here files specific for this page
4
+ * @import url('../../../dojox/grid/themes/tundraGrid.js');
5
+ ** /
6
+
@@ -0,0 +1,4 @@
1
+ dojo.provide('<%= page_name%>');
2
+
3
+ dojo.addOnLoad(function() {
4
+ });
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ class <%= class_name %>ControllerTest < ActionController::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
9
+
@@ -0,0 +1,5 @@
1
+ require 'test_helper'
2
+
3
+ class <%= class_name %>HelperTest < ActionView::TestCase
4
+ end
5
+
@@ -0,0 +1,28 @@
1
+
2
+ !!! XML
3
+ !!! Strict
4
+ %html
5
+ %head
6
+ %title <%= action %>
7
+ =dojo :app=> '<%= action %>'
8
+ %body{:class=>theme}
9
+ #mainContainer{ :dojoType => "dijit.layout.BorderContainer"}
10
+ #topContainer{ :region => "top", :dojoType => "dijit.layout.ContentPane" }
11
+ %h1#logo Dojo On Rails
12
+ #leftContainer{ :region => "leading", :dojoType => "dijit.layout.AccordionContainer" }
13
+ %div{ :dojoType => "dijit.layout.ContentPane", :title => "pane #1" }
14
+ accordion pane #1
15
+ %div{ :dojoType => "dijit.layout.ContentPane", :title => "pane #2" }
16
+ accordion pane #2
17
+ %div{ :dojoType => "dijit.layout.ContentPane", :title => "pane #3" }
18
+ accordion pane #3
19
+ #centerContainer{ :region => "center", :dojoType => "dijit.layout.TabContainer" }
20
+ %div{ :dojoType => "dijit.layout.ContentPane", :title => "Content Viewer" , :jsId=>'views.contentViewer'}
21
+ WE NEED YOUR HELP
22
+ %div{ :dojoType => "dijit.layout.ContentPane", :title => "tab #2" }
23
+ TEST IT AND SEND FEEDBACK TO US
24
+ %div{ :dojoType => "dijit.layout.ContentPane", :title => "tab #3" }
25
+ PARTICIPATE IN DEVELOPMENT
26
+ #trailingContainer{ :region => "trailing", :dojoType => "dijit.layout.ContentPane" , :jsId=> 'views.console'}
27
+ %h3 Log:
28
+ #bottomContainer{ :region => "bottom", :dojoType => "dijit.layout.ContentPane" } nicolA
data/init.rb ADDED
@@ -0,0 +1,2 @@
1
+ # Include hook code here
2
+
data/install.rb ADDED
@@ -0,0 +1 @@
1
+ # Install hook code here
data/lib/depo/build.rb ADDED
@@ -0,0 +1,53 @@
1
+ require 'erb'
2
+ require 'fileutils'
3
+
4
+ module Depo
5
+ class Build
6
+ class << self
7
+ def generate_profile(opts={})
8
+ @rails_root = opts[:rails_root] if opts.key?(:rails_root)
9
+ profile_content = profile_template.result(binding)
10
+ open(profile_path,'w') do |f|
11
+ f<< profile_content
12
+ end
13
+ end
14
+
15
+ def profile_path
16
+ raise "I need RAILS ROOT to generate profile" unless Object.const_defined? :RAILS_ROOT
17
+ file_path = File.join(RAILS_ROOT,Depo.config.profile_path)
18
+ file_dir = File.dirname(file_path)
19
+ unless File.exists?(file_dir)
20
+ FileUtils.mkdir_p(file_dir)
21
+ end
22
+ file_path
23
+ end
24
+
25
+ def profile_template
26
+ return @template if @template
27
+ tpl_string = IO.readlines("#{File.dirname(__FILE__)}/templates/profile.js",'').to_s
28
+ @template = ERB.new(tpl_string)
29
+ end
30
+
31
+ def layers
32
+ Depo.config.build_profile.pages.map do |page|
33
+ file="../#{page.gsub('.','/')}.js"
34
+ <<-JS
35
+ {
36
+ name:"#{file}",
37
+ dependencies: ["#{page}"]
38
+ }
39
+ JS
40
+ end.join(',')
41
+ end
42
+
43
+ def prefixes
44
+ result = %w{dijit dojox}.map{|lib| %Q<["#{lib}","../#{lib}"]>}
45
+ Depo.config.build_profile.libs.each do |lib|
46
+ result<< %Q<["#{lib}","#{@rails_root}/#{Depo.config.src_path}/#{lib}"]>
47
+ end
48
+ "#{result.join(',')}"
49
+ end
50
+
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,82 @@
1
+ module Depo
2
+ class Config < KungFigure::Base
3
+ define_prop :root,'public/ria'
4
+ define_prop :webroot,'public'
5
+ define_prop :base_webpath,''
6
+ define_prop :author,'NotConfigured'
7
+ define_prop :themes,['tundra']
8
+ define_prop :default_theme,'tundra'
9
+ define_prop :profile_path,'tmp/dojo_build_profile.js'
10
+ define_prop :default_page_lib,'app.pages'
11
+ define_prop :dojo_version,'1.4.102'
12
+ define_prop :enable_dojofy, true
13
+
14
+ def src_path
15
+ "#{root}/src"
16
+ end
17
+
18
+ def builds_path
19
+ "#{root}/builds"
20
+ end
21
+
22
+ def root_webpath
23
+ "#{base_webpath}#{root.gsub(webroot, "")}"
24
+ end
25
+
26
+ def src_webpath
27
+ "#{base_webpath}#{src_path.gsub(webroot, "")}"
28
+ end
29
+
30
+ def last_build_webpath
31
+ "#{base_webpath}#{(Dir[File.join(builds_path,'*')].max).to_s.gsub(webroot, "")}"
32
+ end
33
+
34
+ def env_dj_config(env)
35
+ return (env == "production") ? environments.productionDjConfig : environments.developmentDjConfig
36
+ end
37
+
38
+ def env_root_webpath(env)
39
+ return (env == "production") ? last_build_webpath : src_webpath
40
+ end
41
+
42
+ def buildscripts_path
43
+ File.join(src_path,'util','buildscripts')
44
+ end
45
+
46
+ def to_hash
47
+ @props
48
+ end
49
+
50
+ class Generators < KungFigure::Base
51
+ define_prop :head_of_test_page,''
52
+ end
53
+
54
+ class Environments < KungFigure::Base
55
+ define_prop :developmentDjConfig, 'parseOnLoad:true,isDebug:true'
56
+ define_prop :productionDjConfig, 'parseOnLoad:true,isDebug:false'
57
+ end
58
+
59
+ class BuildProfile < KungFigure::Base
60
+ define_prop :libs,[]
61
+ define_prop :pages,[]
62
+ end
63
+
64
+ class BuildOptions < KungFigure::Base
65
+ define_prop :cssOptimize,'comments.keepLines'
66
+ define_prop :optimize,'shrinksafe.keepLines'
67
+ define_prop :cssImportIgnore,'../dijit.css'
68
+ define_prop :internStrings, 'false'
69
+
70
+ #FIXME: fix kung_figure to do such things simpler
71
+ def get_options
72
+ {
73
+ :cssOptimize => cssOptimize,
74
+ :optimize=> optimize,
75
+ :cssImportIgnore=>cssImportIgnore,
76
+ :internStrings=>internStrings
77
+ }
78
+ end
79
+ end
80
+ end
81
+
82
+ end