joosy 0.1.0.RC3 → 0.1.0.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. data/.gitignore +0 -2
  2. data/Gemfile +2 -13
  3. data/Gemfile.lock +62 -80
  4. data/Guardfile +15 -21
  5. data/MIT-LICENSE +2 -2
  6. data/README.rdoc +3 -0
  7. data/app/helpers/joosy/sprockets_helper.rb +11 -23
  8. data/joosy.gemspec +3 -3
  9. data/lib/joosy/forms.rb +12 -2
  10. data/lib/joosy/rails/engine.rb +1 -9
  11. data/lib/joosy/rails/version.rb +2 -2
  12. data/lib/joosy-rails.rb +5 -0
  13. data/lib/rails/generators/joosy/application_generator.rb +3 -13
  14. data/lib/rails/generators/joosy/joosy_base.rb +2 -2
  15. data/lib/rails/generators/joosy/layout_generator.rb +1 -8
  16. data/lib/rails/generators/joosy/page_generator.rb +6 -21
  17. data/lib/rails/generators/joosy/preloader_generator.rb +7 -14
  18. data/lib/rails/generators/joosy/templates/app/layouts/application.js.coffee +0 -1
  19. data/lib/rails/generators/joosy/templates/app/layouts/template.js.coffee +1 -1
  20. data/lib/rails/generators/joosy/templates/app/pages/application.js.coffee +1 -1
  21. data/lib/rails/generators/joosy/templates/app/pages/template.js.coffee +3 -3
  22. data/lib/rails/generators/joosy/templates/app/routes.js.coffee +1 -7
  23. data/lib/rails/generators/joosy/templates/app/widgets/template.js.coffee +2 -2
  24. data/lib/rails/generators/joosy/templates/app.js.coffee +0 -3
  25. data/lib/rails/generators/joosy/templates/app_preloader.js.coffee.erb +12 -9
  26. data/lib/rails/generators/joosy/templates/preload.html.erb +6 -5
  27. data/lib/rails/generators/joosy/templates/preload.html.haml +5 -3
  28. data/lib/rails/generators/joosy/templates/preload.html.slim +21 -0
  29. data/lib/rails/generators/joosy/widget_generator.rb +1 -8
  30. data/spec/javascripts/helpers/spec_helper.js.coffee +0 -20
  31. data/spec/javascripts/joosy/core/modules/container_spec.js.coffee +27 -24
  32. data/spec/javascripts/joosy/core/modules/events_spec.js.coffee +18 -42
  33. data/spec/javascripts/joosy/core/modules/filters_spec.js.coffee +27 -27
  34. data/spec/javascripts/joosy/core/modules/log_spec.js.coffee +3 -3
  35. data/spec/javascripts/joosy/core/modules/module_spec.js.coffee +15 -6
  36. data/spec/javascripts/joosy/core/modules/time_manager_spec.js.coffee +7 -12
  37. data/spec/javascripts/joosy/core/modules/widget_manager_spec.js.coffee +17 -31
  38. data/tmp/javascripts/.gitignore +1 -0
  39. data/tmp/spec/javascripts/helpers/.gitignore +1 -0
  40. data/vendor/assets/javascripts/base64.js +135 -0
  41. data/vendor/assets/javascripts/joosy/core/application.js.coffee +26 -0
  42. data/vendor/assets/javascripts/joosy/core/form.js.coffee +87 -0
  43. data/vendor/assets/javascripts/joosy/core/joosy.js.coffee +62 -0
  44. data/vendor/assets/javascripts/joosy/core/layout.js.coffee +38 -0
  45. data/vendor/assets/javascripts/joosy/core/modules/container.js.coffee +51 -0
  46. data/vendor/assets/javascripts/joosy/core/modules/events.js.coffee +17 -0
  47. data/vendor/assets/javascripts/joosy/core/modules/filters.js.coffee +39 -0
  48. data/vendor/assets/javascripts/joosy/core/modules/log.js.coffee +12 -0
  49. data/vendor/assets/javascripts/joosy/core/modules/module.js.coffee +28 -0
  50. data/vendor/assets/javascripts/joosy/core/modules/time_manager.js.coffee +23 -0
  51. data/vendor/assets/javascripts/joosy/core/modules/widgets_manager.js.coffee +45 -0
  52. data/vendor/assets/javascripts/joosy/core/page.js.coffee +136 -0
  53. data/vendor/assets/javascripts/joosy/core/resource/rest.js.coffee +69 -0
  54. data/vendor/assets/javascripts/joosy/core/resource/rest_collection.js.coffee +42 -0
  55. data/vendor/assets/javascripts/joosy/core/router.js.coffee +75 -0
  56. data/vendor/assets/javascripts/joosy/core/widget.js.coffee +35 -0
  57. data/vendor/assets/javascripts/joosy/preloader/development.js.coffee +27 -0
  58. data/vendor/assets/javascripts/joosy/preloader/production.js.coffee +84 -0
  59. data/{app → vendor}/assets/javascripts/joosy.js.coffee +0 -0
  60. data/vendor/assets/javascripts/jquery.form.js +963 -978
  61. data/vendor/assets/javascripts/sugar.js +1 -1
  62. metadata +48 -77
  63. data/.codoopts +0 -5
  64. data/README.md +0 -95
  65. data/app/assets/javascripts/joosy/core/application.js.coffee +0 -50
  66. data/app/assets/javascripts/joosy/core/form.js.coffee +0 -304
  67. data/app/assets/javascripts/joosy/core/helpers/view.js.coffee +0 -30
  68. data/app/assets/javascripts/joosy/core/joosy.js.coffee +0 -129
  69. data/app/assets/javascripts/joosy/core/layout.js.coffee +0 -162
  70. data/app/assets/javascripts/joosy/core/modules/container.js.coffee +0 -104
  71. data/app/assets/javascripts/joosy/core/modules/events.js.coffee +0 -123
  72. data/app/assets/javascripts/joosy/core/modules/filters.js.coffee +0 -67
  73. data/app/assets/javascripts/joosy/core/modules/log.js.coffee +0 -36
  74. data/app/assets/javascripts/joosy/core/modules/module.js.coffee +0 -105
  75. data/app/assets/javascripts/joosy/core/modules/renderer.js.coffee +0 -195
  76. data/app/assets/javascripts/joosy/core/modules/time_manager.js.coffee +0 -46
  77. data/app/assets/javascripts/joosy/core/modules/widgets_manager.js.coffee +0 -84
  78. data/app/assets/javascripts/joosy/core/page.js.coffee +0 -375
  79. data/app/assets/javascripts/joosy/core/preloader.js.coffee +0 -13
  80. data/app/assets/javascripts/joosy/core/resource/collection.js.coffee +0 -174
  81. data/app/assets/javascripts/joosy/core/resource/generic.js.coffee +0 -254
  82. data/app/assets/javascripts/joosy/core/resource/rest.js.coffee +0 -197
  83. data/app/assets/javascripts/joosy/core/resource/rest_collection.js.coffee +0 -125
  84. data/app/assets/javascripts/joosy/core/router.js.coffee +0 -163
  85. data/app/assets/javascripts/joosy/core/templaters/rails_jst.js.coffee +0 -36
  86. data/app/assets/javascripts/joosy/core/widget.js.coffee +0 -80
  87. data/app/assets/javascripts/joosy/preloaders/caching.js.coffee +0 -169
  88. data/app/assets/javascripts/joosy/preloaders/inline.js.coffee +0 -56
  89. data/lib/joosy.rb +0 -9
  90. data/lib/rails/generators/joosy/resource_generator.rb +0 -29
  91. data/lib/rails/generators/joosy/templates/app/helpers/application.js.coffee +0 -4
  92. data/lib/rails/generators/joosy/templates/app/pages/welcome/index.js.coffee +0 -22
  93. data/lib/rails/generators/joosy/templates/app/resources/template.js.coffee +0 -2
  94. data/lib/rails/generators/joosy/templates/app/templates/layouts/application.jst.hamlc +0 -2
  95. data/lib/rails/generators/joosy/templates/app/templates/pages/welcome/index.jst.hamlc +0 -7
  96. data/spec/javascripts/joosy/core/application_spec.js.coffee +0 -40
  97. data/spec/javascripts/joosy/core/form_spec.js.coffee +0 -184
  98. data/spec/javascripts/joosy/core/joosy_spec.js.coffee +0 -72
  99. data/spec/javascripts/joosy/core/layout_spec.js.coffee +0 -50
  100. data/spec/javascripts/joosy/core/modules/renderer_spec.js.coffee +0 -185
  101. data/spec/javascripts/joosy/core/page_spec.js.coffee +0 -178
  102. data/spec/javascripts/joosy/core/resource/collection_spec.js.coffee +0 -84
  103. data/spec/javascripts/joosy/core/resource/generic_spec.js.coffee +0 -118
  104. data/spec/javascripts/joosy/core/resource/rest_collection_spec.js.coffee +0 -58
  105. data/spec/javascripts/joosy/core/resource/rest_spec.js.coffee +0 -129
  106. data/spec/javascripts/joosy/core/router_spec.js.coffee +0 -123
  107. data/spec/javascripts/joosy/core/templaters/rails_jst_spec.js.coffee +0 -25
  108. data/spec/javascripts/joosy/core/widget_spec.js.coffee +0 -40
  109. data/spec/javascripts/joosy/preloaders/caching_spec.js.coffee +0 -36
  110. data/spec/javascripts/joosy/preloaders/inline_spec.js.coffee +0 -16
  111. data/spec/javascripts/support/assets/coolface.jpg +0 -0
  112. data/spec/javascripts/support/assets/okay.jpg +0 -0
  113. data/spec/javascripts/support/assets/test.js +0 -1
  114. data/spec/javascripts/support/sinon-ie-1.3.1.js +0 -82
  115. data/vendor/assets/javascripts/metamorph.js +0 -409
@@ -2705,7 +2705,7 @@
2705
2705
  *
2706
2706
  ***/
2707
2707
  'capitalize': function(all) {
2708
- var reg = all ? /^\S|\s\S/g : /^\S/;
2708
+ var reg = all ? /\b[a-z]/g : /^[a-z]/;
2709
2709
  return this.toLowerCase().replace(reg, function(letter) {
2710
2710
  return letter.toUpperCase();
2711
2711
  });
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joosy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.RC3
4
+ version: 0.1.0.alpha
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -12,22 +12,22 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-03-26 00:00:00.000000000 Z
15
+ date: 2012-01-22 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rails
19
- requirement: &70217100158800 !ruby/object:Gem::Requirement
19
+ requirement: &70187501327360 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ! '>='
23
23
  - !ruby/object:Gem::Version
24
- version: 3.1.0
24
+ version: 3.0.0
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *70217100158800
27
+ version_requirements: *70187501327360
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: coffee-rails
30
- requirement: &70217100158280 !ruby/object:Gem::Requirement
30
+ requirement: &70187501326940 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ! '>='
@@ -35,10 +35,10 @@ dependencies:
35
35
  version: '0'
36
36
  type: :runtime
37
37
  prerelease: false
38
- version_requirements: *70217100158280
38
+ version_requirements: *70187501326940
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: jquery-rails
41
- requirement: &70217100157620 !ruby/object:Gem::Requirement
41
+ requirement: &70187501326480 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ! '>='
@@ -46,21 +46,21 @@ dependencies:
46
46
  version: '0'
47
47
  type: :runtime
48
48
  prerelease: false
49
- version_requirements: *70217100157620
49
+ version_requirements: *70187501326480
50
50
  - !ruby/object:Gem::Dependency
51
- name: haml_coffee_assets
52
- requirement: &70217100152480 !ruby/object:Gem::Requirement
51
+ name: guard
52
+ requirement: &70187501326060 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
55
  - - ! '>='
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
- type: :runtime
58
+ type: :development
59
59
  prerelease: false
60
- version_requirements: *70217100152480
60
+ version_requirements: *70187501326060
61
61
  - !ruby/object:Gem::Dependency
62
- name: guard
63
- requirement: &70217100151860 !ruby/object:Gem::Requirement
62
+ name: guard-shell
63
+ requirement: &70187501325640 !ruby/object:Gem::Requirement
64
64
  none: false
65
65
  requirements:
66
66
  - - ! '>='
@@ -68,10 +68,10 @@ dependencies:
68
68
  version: '0'
69
69
  type: :development
70
70
  prerelease: false
71
- version_requirements: *70217100151860
71
+ version_requirements: *70187501325640
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: guard-coffeescript
74
- requirement: &70217100151160 !ruby/object:Gem::Requirement
74
+ requirement: &70187501325220 !ruby/object:Gem::Requirement
75
75
  none: false
76
76
  requirements:
77
77
  - - ! '>='
@@ -79,10 +79,10 @@ dependencies:
79
79
  version: '0'
80
80
  type: :development
81
81
  prerelease: false
82
- version_requirements: *70217100151160
82
+ version_requirements: *70187501325220
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: guard-sprockets
85
- requirement: &70217100150300 !ruby/object:Gem::Requirement
85
+ requirement: &70187501324800 !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
88
88
  - - ! '>='
@@ -90,10 +90,10 @@ dependencies:
90
90
  version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
- version_requirements: *70217100150300
93
+ version_requirements: *70187501324800
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: jasmine
96
- requirement: &70217100149860 !ruby/object:Gem::Requirement
96
+ requirement: &70187501324380 !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ! '>='
@@ -101,50 +101,24 @@ dependencies:
101
101
  version: '0'
102
102
  type: :development
103
103
  prerelease: false
104
- version_requirements: *70217100149860
104
+ version_requirements: *70187501324380
105
105
  description: A gem wrapper to include Joosy via the asset pipeline.
106
106
  email: boris@roundlake.ru
107
107
  executables: []
108
108
  extensions: []
109
109
  extra_rdoc_files: []
110
110
  files:
111
- - .codoopts
112
111
  - .gitignore
113
112
  - Gemfile
114
113
  - Gemfile.lock
115
114
  - Guardfile
116
115
  - MIT-LICENSE
117
- - README.md
116
+ - README.rdoc
118
117
  - Rakefile
119
- - app/assets/javascripts/joosy.js.coffee
120
- - app/assets/javascripts/joosy/core/application.js.coffee
121
- - app/assets/javascripts/joosy/core/form.js.coffee
122
- - app/assets/javascripts/joosy/core/helpers/view.js.coffee
123
- - app/assets/javascripts/joosy/core/joosy.js.coffee
124
- - app/assets/javascripts/joosy/core/layout.js.coffee
125
- - app/assets/javascripts/joosy/core/modules/container.js.coffee
126
- - app/assets/javascripts/joosy/core/modules/events.js.coffee
127
- - app/assets/javascripts/joosy/core/modules/filters.js.coffee
128
- - app/assets/javascripts/joosy/core/modules/log.js.coffee
129
- - app/assets/javascripts/joosy/core/modules/module.js.coffee
130
- - app/assets/javascripts/joosy/core/modules/renderer.js.coffee
131
- - app/assets/javascripts/joosy/core/modules/time_manager.js.coffee
132
- - app/assets/javascripts/joosy/core/modules/widgets_manager.js.coffee
133
- - app/assets/javascripts/joosy/core/page.js.coffee
134
- - app/assets/javascripts/joosy/core/preloader.js.coffee
135
- - app/assets/javascripts/joosy/core/resource/collection.js.coffee
136
- - app/assets/javascripts/joosy/core/resource/generic.js.coffee
137
- - app/assets/javascripts/joosy/core/resource/rest.js.coffee
138
- - app/assets/javascripts/joosy/core/resource/rest_collection.js.coffee
139
- - app/assets/javascripts/joosy/core/router.js.coffee
140
- - app/assets/javascripts/joosy/core/templaters/rails_jst.js.coffee
141
- - app/assets/javascripts/joosy/core/widget.js.coffee
142
- - app/assets/javascripts/joosy/preloaders/caching.js.coffee
143
- - app/assets/javascripts/joosy/preloaders/inline.js.coffee
144
118
  - app/helpers/joosy/sprockets_helper.rb
145
119
  - app/views/layouts/json_wrapper.json.erb
146
120
  - joosy.gemspec
147
- - lib/joosy.rb
121
+ - lib/joosy-rails.rb
148
122
  - lib/joosy/forms.rb
149
123
  - lib/joosy/rails/engine.rb
150
124
  - lib/joosy/rails/version.rb
@@ -153,61 +127,58 @@ files:
153
127
  - lib/rails/generators/joosy/layout_generator.rb
154
128
  - lib/rails/generators/joosy/page_generator.rb
155
129
  - lib/rails/generators/joosy/preloader_generator.rb
156
- - lib/rails/generators/joosy/resource_generator.rb
157
130
  - lib/rails/generators/joosy/templates/app.js.coffee
158
- - lib/rails/generators/joosy/templates/app/helpers/application.js.coffee
159
131
  - lib/rails/generators/joosy/templates/app/layouts/application.js.coffee
160
132
  - lib/rails/generators/joosy/templates/app/layouts/template.js.coffee
161
133
  - lib/rails/generators/joosy/templates/app/pages/application.js.coffee
162
134
  - lib/rails/generators/joosy/templates/app/pages/template.js.coffee
163
- - lib/rails/generators/joosy/templates/app/pages/welcome/index.js.coffee
164
- - lib/rails/generators/joosy/templates/app/resources/template.js.coffee
165
135
  - lib/rails/generators/joosy/templates/app/routes.js.coffee
166
- - lib/rails/generators/joosy/templates/app/templates/layouts/application.jst.hamlc
167
- - lib/rails/generators/joosy/templates/app/templates/pages/welcome/index.jst.hamlc
168
136
  - lib/rails/generators/joosy/templates/app/widgets/template.js.coffee
169
137
  - lib/rails/generators/joosy/templates/app_controller.rb
170
138
  - lib/rails/generators/joosy/templates/app_preloader.js.coffee.erb
171
139
  - lib/rails/generators/joosy/templates/preload.html.erb
172
140
  - lib/rails/generators/joosy/templates/preload.html.haml
141
+ - lib/rails/generators/joosy/templates/preload.html.slim
173
142
  - lib/rails/generators/joosy/widget_generator.rb
174
143
  - spec/javascripts/helpers/spec_helper.js.coffee
175
- - spec/javascripts/joosy/core/application_spec.js.coffee
176
- - spec/javascripts/joosy/core/form_spec.js.coffee
177
- - spec/javascripts/joosy/core/joosy_spec.js.coffee
178
- - spec/javascripts/joosy/core/layout_spec.js.coffee
179
144
  - spec/javascripts/joosy/core/modules/container_spec.js.coffee
180
145
  - spec/javascripts/joosy/core/modules/events_spec.js.coffee
181
146
  - spec/javascripts/joosy/core/modules/filters_spec.js.coffee
182
147
  - spec/javascripts/joosy/core/modules/log_spec.js.coffee
183
148
  - spec/javascripts/joosy/core/modules/module_spec.js.coffee
184
- - spec/javascripts/joosy/core/modules/renderer_spec.js.coffee
185
149
  - spec/javascripts/joosy/core/modules/time_manager_spec.js.coffee
186
150
  - spec/javascripts/joosy/core/modules/widget_manager_spec.js.coffee
187
- - spec/javascripts/joosy/core/page_spec.js.coffee
188
- - spec/javascripts/joosy/core/resource/collection_spec.js.coffee
189
- - spec/javascripts/joosy/core/resource/generic_spec.js.coffee
190
- - spec/javascripts/joosy/core/resource/rest_collection_spec.js.coffee
191
- - spec/javascripts/joosy/core/resource/rest_spec.js.coffee
192
- - spec/javascripts/joosy/core/router_spec.js.coffee
193
- - spec/javascripts/joosy/core/templaters/rails_jst_spec.js.coffee
194
- - spec/javascripts/joosy/core/widget_spec.js.coffee
195
- - spec/javascripts/joosy/preloaders/caching_spec.js.coffee
196
- - spec/javascripts/joosy/preloaders/inline_spec.js.coffee
197
- - spec/javascripts/support/assets/coolface.jpg
198
- - spec/javascripts/support/assets/okay.jpg
199
- - spec/javascripts/support/assets/test.js
200
151
  - spec/javascripts/support/jasmine.yml
201
152
  - spec/javascripts/support/jasmine_config.rb
202
153
  - spec/javascripts/support/jasmine_runner.rb
203
154
  - spec/javascripts/support/sinon-1.3.1.js
204
- - spec/javascripts/support/sinon-ie-1.3.1.js
155
+ - tmp/javascripts/.gitignore
156
+ - tmp/spec/javascripts/helpers/.gitignore
157
+ - vendor/assets/javascripts/base64.js
205
158
  - vendor/assets/javascripts/inflection.js
159
+ - vendor/assets/javascripts/joosy.js.coffee
160
+ - vendor/assets/javascripts/joosy/core/application.js.coffee
161
+ - vendor/assets/javascripts/joosy/core/form.js.coffee
162
+ - vendor/assets/javascripts/joosy/core/joosy.js.coffee
163
+ - vendor/assets/javascripts/joosy/core/layout.js.coffee
164
+ - vendor/assets/javascripts/joosy/core/modules/container.js.coffee
165
+ - vendor/assets/javascripts/joosy/core/modules/events.js.coffee
166
+ - vendor/assets/javascripts/joosy/core/modules/filters.js.coffee
167
+ - vendor/assets/javascripts/joosy/core/modules/log.js.coffee
168
+ - vendor/assets/javascripts/joosy/core/modules/module.js.coffee
169
+ - vendor/assets/javascripts/joosy/core/modules/time_manager.js.coffee
170
+ - vendor/assets/javascripts/joosy/core/modules/widgets_manager.js.coffee
171
+ - vendor/assets/javascripts/joosy/core/page.js.coffee
172
+ - vendor/assets/javascripts/joosy/core/resource/rest.js.coffee
173
+ - vendor/assets/javascripts/joosy/core/resource/rest_collection.js.coffee
174
+ - vendor/assets/javascripts/joosy/core/router.js.coffee
175
+ - vendor/assets/javascripts/joosy/core/widget.js.coffee
176
+ - vendor/assets/javascripts/joosy/preloader/development.js.coffee
177
+ - vendor/assets/javascripts/joosy/preloader/production.js.coffee
206
178
  - vendor/assets/javascripts/jquery.form.js
207
179
  - vendor/assets/javascripts/jquery.hashchange.js
208
- - vendor/assets/javascripts/metamorph.js
209
180
  - vendor/assets/javascripts/sugar.js
210
- homepage: http://github.com/roundlake/joosy
181
+ homepage: http://github.com/roundlake/joosy-rails
211
182
  licenses: []
212
183
  post_install_message:
213
184
  rdoc_options: []
data/.codoopts DELETED
@@ -1,5 +0,0 @@
1
- --readme README.md
2
- --title "Joosy API"
3
- --verbose
4
- --output-dir ./doc
5
- ./app
data/README.md DELETED
@@ -1,95 +0,0 @@
1
- ![Joosy](http://f.cl.ly/items/2N2J453J2B353F1A0t0I/joocy1.1.png)
2
-
3
- ## What is Joosy
4
-
5
- Joosy is a full-featured javascript MVC framework, which mostly follows Rails philosophy, particularly in preferring conventions over configuration. It helps you to avoid boilerplate and makes it easy to maintain and extend the app.
6
-
7
- Joosy allows you to create web apps which work completely in the browser. So that, it helps you to relocate all your Rails Views to the client side. It also helps you with managing the growing quantity of JS code. On another hand, it makes your backend to have exactly one function -- to be a simple REST provider. That leads to easier development support and improves the scalability greatly.
8
-
9
- Joosy doesn't compete with jQuery. It is built on the top of [jQuery](http://jquery.com/), and utilizes [CoffeeScript](http://coffeescript.org/). It either includes [Sugar.js](http://sugarjs.com/) in role of ActiveSupport to make your life even better.
10
-
11
- Finally, Joosy boosts your development drastically.
12
-
13
- ### How is Joosy different from X
14
-
15
- We share quite different goals and totally differ in ways to achieve it. While existing MVC frameworks define basic entities for you and leave you alone with application basic patterns and solutions, Joosy tries to give convention for each of them.
16
-
17
- #### [Backbone](http://documentcloud.github.com/backbone/)
18
-
19
- In Backbone or Spine you only have abstract Views, Models and "Packs of …" and you should even decide on your own what's Controller for you. Joosy gives you the ready plan on how to move on to the success. If you ever used Rails you know that feeling: you concentrate on _what_ you create and not on _how_ to structure it.
20
-
21
- #### [Ember](http://emberjs.com/)
22
-
23
- Ember is the closest framework by spirit. But it still doesn't give you enough conventions and is even more abstract than Backbone in several parts. It either limits you to Handlebars. Joosy rendering system is built on top of same solution, Morpher. That said you can bind your variables dynamically just like in Ember. But it allows you to any templates syntax.
24
-
25
- ### The Joosy MVC Interpretation
26
-
27
- You probably are familiar with the concept of MVC. It's a pattern to keep code DRY, isolate business logic from the UI. However the concept of Model-View-Controller just doesn't work for browser applications. There are numerous reasons for that that can't be fit into this introduction. Instead we'll tell you what we propose.
28
-
29
- #### Views
30
-
31
- In Joosy views are just views. Set of files (in templates/ folder). They do not differ from Rails and give you quite the same abilities (including helpers!). Besides that Joosy has renderDynamic which allows you to bind your variables to HTML representation tightly. You change variable value, Joosy changes HTML.
32
-
33
- By default Joosy comes with Coffee-Haml (which looks and works pretty much like Ruby Haml). Combined with Sugar.js it will feel very similar to Ruby and server-side and will provide you the easiest migration.
34
-
35
- #### Controllers
36
-
37
- Unlike server-side, client-side has a state. At server-side you only have incoming data and you convert it to output data. At client-side you work with events. To handle correct bootstrap and help you organize your code well, we have 3 entities which play the role of controller. Their organizing functions are similar but they behavior dramatically different at bootstrap.
38
-
39
- They are:
40
-
41
- ###### Pages
42
- Pages are the heart of the entire application. They are used to fetch data, bind events, setup widgets, trig visual effects, and pass the data to the templates.
43
-
44
- ###### Layouts
45
- Layouts are mainly used to set a part of your page that won't be reloaded often. Pages are wrapped into Layouts. Just like pages Layouts can bind events and setup widgets. Consider layouts as a bit extended version of what you have in Rails.
46
-
47
- ###### Widgets
48
- Widgets are needed to keep your code DRY. They help you organize it in reusable modules.
49
-
50
- #### Models
51
-
52
- There are some facts that should be noted to explain it how we understand browser-side models.
53
-
54
- * In most cases you will want to leave your logic on server-side. In a real models.
55
- * You rarely want to make 5 HTTP requests instead of 1.
56
- * In most cases you will have to give user a Form as a way to change anything.
57
- * You'll get different possible set of fields depending on case you use your model at.
58
-
59
- With all that in mind we came up to the fact: you can not reproduce real models in browser nor you should try to. What you need is a comfortable channel between browser and server-side to get structured data, work with that and send it back. That's mainly a transport and interface task while models are MUCH more than that. To solve this task Joosy offers you two things:
60
-
61
- ###### Resources
62
- Resource is wrapper on top of JSON dump which will help you to get data from server, parse it and structure it. It will trigger 'changed' if you change resource, will map inline hashes in other resources if possible and do all other magic stuff you expect from your model when you read data. Resources either define Collections. In most cases you can say Resources are fully-functional read part of what you get used to as model.
63
-
64
- ###### Forms
65
- After you got your data as resources and used it to display something, you'll need to change it. While resource defines modification methods like _save_ and _destroy_ most of complex modifications should go through Joosy.Form. It turns your form into AJAX and binds the resource to it. It handles file uploads, it gives you upload progress callback and makes it a dream to handle. Joosy.Form will either understand standard Rails invalidation response and will mark invalidated fields with ".field_with_errors" out of box.
66
-
67
-
68
- ## What is Joosy good for
69
-
70
- Joosy is intended to ease building of modern medium and large-sized browser-based applications, minimize code base while providing more features and what's most important, giving you ready conventions for typical tasks.
71
-
72
- Compare Joosy to Backbone like Rails to Sinatra. While Rails engine is much more powerful, Sinatra still has a lot of cases to be used at. If all you need is to enable some RICHness on one of your pages, Joosy can handle that. But Backbone will do the trick with lesser dependencies. If you need to move complete web-resource to browser Joosy will do the task at its Best.
73
-
74
- ## What's next?
75
-
76
- We have a set of guidelines showing you, step-by-step, how to create a Joosy application. Follow them at our [Guides site](http://guides.joosy.ws/).
77
-
78
- ### Hello world app
79
-
80
- Add Joosy gem to your Gemfile:
81
-
82
- gem 'joosy'
83
-
84
- Using built-in generators you can quickly generate small app inside your Rails app to see Joosy application from inside a bit.
85
-
86
- rails g joosy:application dummy
87
- rails g joosy:preloader dummy
88
-
89
- Now you can `rails s` and see Joosy placeholder at [localhost:3000/dummy](http://localhost:3000/dummy)
90
-
91
- Generated application will consist of one `Layout` and one `Page` both including very basic practices of Joosy.
92
-
93
- # License
94
-
95
- Joosy is licensed under MIT: [www.opensource.org/licenses/MIT](www.opensource.org/licenses/MIT)
@@ -1,50 +0,0 @@
1
- #= require joosy/core/joosy
2
-
3
- #
4
- # Joosy Application container
5
- #
6
- Joosy.Application =
7
- Pages: {}
8
- Layouts: {}
9
- Controls: {}
10
-
11
- loading: true
12
-
13
- #
14
- # Starts Joosy application by binding to element and bootstraping routes
15
- #
16
- # @param [String] name Name of app (the dir its located in)
17
- # @param [String] selector jQuery-compatible selector of root application element
18
- # @param [Object] options
19
- #
20
- initialize: (@name, @selector, options={}) ->
21
- @[key] = value for key, value of options
22
- @templater = new Joosy.Templaters.RailsJST @name
23
-
24
- Joosy.Router.__setupRoutes()
25
-
26
- @sandboxSelector = Joosy.uuid()
27
- @content().after "<div id='#{@sandboxSelector}' style='display:none'></div>"
28
- @sandboxSelector = '#' + @sandboxSelector
29
-
30
- #
31
- # Gets current application root node
32
- #
33
- content: ->
34
- $(@selector)
35
-
36
- #
37
- # Gets current application sandbox node
38
- #
39
- sandbox: ->
40
- $(@sandboxSelector)
41
-
42
- #
43
- # Switches to given page
44
- #
45
- # @param [Joosy.Page] page The class (not object) of page to load
46
- # @param [Object] params Hash of page params
47
- #
48
- setCurrentPage: (page, params) ->
49
- #if @page not instanceof page
50
- @page = new page params, @page