sproutcore 0.9.9 → 0.9.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/History.txt +9 -0
  2. data/Manifest.txt +32 -32
  3. data/app_generators/sproutcore/sproutcore_generator.rb +2 -0
  4. data/app_generators/sproutcore/templates/README +5 -5
  5. data/bin/sc-gen +1 -1
  6. data/bin/sproutcore +1 -0
  7. data/frameworks/sproutcore/Core.js +26 -11
  8. data/frameworks/sproutcore/HISTORY +6 -0
  9. data/frameworks/sproutcore/controllers/array.js +1 -1
  10. data/frameworks/sproutcore/drag/drag.js +2 -2
  11. data/frameworks/sproutcore/english.lproj/panes.css +1 -1
  12. data/frameworks/sproutcore/english.lproj/theme.css +4 -4
  13. data/frameworks/sproutcore/foundation/binding.js +2 -1
  14. data/frameworks/sproutcore/foundation/input_manager.js +9 -8
  15. data/frameworks/sproutcore/foundation/path_module.js +1 -1
  16. data/frameworks/sproutcore/lib/core_views.rb +3 -1
  17. data/frameworks/sproutcore/lib/index.rhtml +2 -2
  18. data/frameworks/sproutcore/lib/menu_views.rb +6 -1
  19. data/frameworks/sproutcore/mixins/observable.js +119 -17
  20. data/frameworks/sproutcore/mixins/scrollable.js +5 -3
  21. data/frameworks/sproutcore/tests/views/view/innerFrame.rhtml +3 -1
  22. data/frameworks/sproutcore/views/button/button.js +15 -0
  23. data/frameworks/sproutcore/views/field/textarea_field.js +8 -0
  24. data/frameworks/sproutcore/views/form.js +39 -33
  25. data/frameworks/sproutcore/views/popup_menu.js +7 -11
  26. data/frameworks/sproutcore/views/view.js +31 -7
  27. data/lib/sproutcore/bundle.rb +44 -11
  28. data/lib/sproutcore/library.rb +5 -5
  29. data/lib/sproutcore/merb/bundle_controller.rb +7 -3
  30. data/lib/sproutcore/version.rb +1 -1
  31. data/{generators → sc_generators}/client/README +1 -1
  32. data/{generators → sc_generators}/client/USAGE +0 -0
  33. data/{generators → sc_generators}/client/client_generator.rb +0 -0
  34. data/{generators → sc_generators}/client/templates/core.js +0 -0
  35. data/{generators → sc_generators}/client/templates/english.lproj/body.css +0 -0
  36. data/{generators → sc_generators}/client/templates/english.lproj/body.rhtml +0 -0
  37. data/{generators → sc_generators}/client/templates/english.lproj/strings.js +0 -0
  38. data/{generators → sc_generators}/client/templates/main.js +0 -0
  39. data/{generators → sc_generators}/controller/USAGE +0 -0
  40. data/{generators → sc_generators}/controller/controller_generator.rb +0 -0
  41. data/{generators → sc_generators}/controller/templates/controller.js +0 -0
  42. data/{generators → sc_generators}/controller/templates/test.rhtml +0 -0
  43. data/{generators → sc_generators}/framework/README +1 -1
  44. data/{generators → sc_generators}/framework/USAGE +0 -0
  45. data/{generators → sc_generators}/framework/framework_generator.rb +0 -0
  46. data/{generators → sc_generators}/framework/templates/core.js +0 -0
  47. data/{generators → sc_generators}/framework/templates/english.lproj/strings.js +0 -0
  48. data/{generators → sc_generators}/language/USAGE +0 -0
  49. data/{generators → sc_generators}/language/language_generator.rb +0 -0
  50. data/{generators → sc_generators}/language/templates/strings.js +0 -0
  51. data/{generators → sc_generators}/model/USAGE +0 -0
  52. data/{generators → sc_generators}/model/model_generator.rb +0 -0
  53. data/{generators → sc_generators}/model/templates/fixture.js +0 -0
  54. data/{generators → sc_generators}/model/templates/model.js +0 -0
  55. data/{generators → sc_generators}/model/templates/test.rhtml +0 -0
  56. data/{generators → sc_generators}/test/USAGE +0 -0
  57. data/{generators → sc_generators}/test/templates/test.rhtml +0 -0
  58. data/{generators → sc_generators}/test/test_generator.rb +0 -0
  59. data/{generators → sc_generators}/view/USAGE +0 -0
  60. data/{generators → sc_generators}/view/templates/test.rhtml +0 -0
  61. data/{generators → sc_generators}/view/templates/view.js +0 -0
  62. data/{generators → sc_generators}/view/view_generator.rb +0 -0
  63. metadata +34 -34
@@ -104,7 +104,9 @@ SC.Scrollable = {
104
104
 
105
105
  // compute new sf
106
106
  var newSf = { x: sf.x - (amount.x || 0), y: sf.y - (amount.y || 0) } ;
107
- newSf = this.set('scrollFrame', newSf) ;
107
+ this.set('scrollFrame', newSf) ;
108
+ newSf = this.get('scrollFrame') ;
109
+
108
110
  return { x: newSf.x - sf.x, y: newSf.y - sf.y };
109
111
  },
110
112
 
@@ -141,8 +143,8 @@ SC.Scrollable = {
141
143
  };
142
144
 
143
145
  // if top edge is not visible, shift origin
144
- vo.y += Math.max(0, SC.minY(vo) - SC.minY(vf)) ;
145
- vo.x += Math.max(0, SC.minX(vo) - SC.minX(vf)) ;
146
+ vo.y -= Math.max(0, SC.minY(vo) - SC.minY(vf)) ;
147
+ vo.x -= Math.max(0, SC.minX(vo) - SC.minX(vf)) ;
146
148
 
147
149
  // if bottom edge is not visible, shift origin
148
150
  vo.y += Math.max(0, SC.maxY(vf) - SC.maxY(vo)) ;
@@ -112,7 +112,9 @@ Test.context("CASE 3: manual-layout view with some padding and no border", {
112
112
  },
113
113
 
114
114
  "after frame change, innerFrame should == frame less border, viewFrameDidChange is not required.": function() {
115
- var f = this.v.set('frame', { width: 50, x: 10, y: 10, height: 50 }) ;
115
+ var f ;
116
+
117
+ this.v.set('frame', f = { width: 50, x: 10, y: 10, height: 50 }) ;
116
118
  f.x += CASE3_OFFSET; f.y += CASE3_OFFSET;
117
119
  f.width -= (CASE3_OFFSET*2); f.height -= (CASE3_OFFSET*2) ;
118
120
  //console.log('f: %@ if: %@'.fmt($H(f).inspect(), $H(this.v.get('innerFrame')).inspect()));
@@ -184,6 +184,21 @@ SC.ButtonView = SC.View.extend(SC.Control,
184
184
  return this._title ;
185
185
  }.property(),
186
186
 
187
+ /**
188
+ The button href value.
189
+
190
+ This property is observable and bindable. Can be used to create localized button href values.
191
+ */
192
+ href: function(key, value) {
193
+ var el = this.rootElement;
194
+ if (value !== undefined) {
195
+ if (el) {
196
+ el.setAttribute('href', value);
197
+ }
198
+ }
199
+ return (el) ? el.getAttribute('href') : null;
200
+ }.property(),
201
+
187
202
  /**
188
203
  The name of the action you want triggered when the button is pressed.
189
204
 
@@ -18,6 +18,14 @@ SC.TextareaFieldView = SC.TextFieldView.extend(
18
18
  /** @scope SC.TextareaFieldView.prototype */ {
19
19
 
20
20
  emptyElement: '<textarea></textarea>',
21
+ didBecomeFirstResponder: function() {
22
+ if (this.get('isVisibleInWindow')) {
23
+ this.rootElement.focus();
24
+ this.invokeLater(this._selectRootElement, 1) ;
25
+ }
26
+ // hide the hint text if it is showing.
27
+ this._updateFieldHint() ;
28
+ },
21
29
 
22
30
  insertNewline: function(evt) { evt._stopWhenHandled = false; return true; }
23
31
 
@@ -7,39 +7,45 @@ require('views/view') ;
7
7
  require('views/button/button') ;
8
8
  require('views/field/text_field') ;
9
9
 
10
- // FormView provides a simple way for you to "stage" input by capturing
11
- // data from your views into the form before it is set on your actual
12
- // content object.
13
- //
14
- // HOW IT WORKS
15
- //
16
- // On startup, FormView will walk any child views looking for any views
17
- // with the property "fieldKey". Any views with this key will be saved as
18
- // fields on the form. You can access their value directly on the form by
19
- // getting the value of fieldKey.
20
- //
21
- // Used this way, you can easily combine multiple views into a single,
22
- // bindable object. To gain the full functionality however, you should use
23
- // the content commit capability.
24
- //
25
- // IMPORTANT: FormView defines some properties of its own. If you try to
26
- // name your fields with properties already declared in FormView, they will
27
- // be ignored and a warning will be logged to the console.
28
- //
29
- // CONTENT COMMIT
30
- //
31
- // If you set the content object on a form view, then the form fields will
32
- // automatically be bound to the same named keys on the content object. When
33
- // the content object value's change, the fields on the form will update
34
- // automatically. However, changing values in the fields will not update
35
- // the content object until the form is committed.
36
- //
37
- // You can commit a form promgramatically by calling the commit() method on
38
- // the form view. Alternatively, you can add a button to the form with the
39
- // outlet name submitButton and it will be automatically wired to submit
40
- // the form. You can also create a button named resetButton, it will be
41
- // automatically wired to reset the form.
42
- //
10
+ /**
11
+ FormView provides a simple way for you to focus a group of views onto a
12
+ single content object or set of content objects. It can also be used to
13
+ "stage" input by buffering data from your views into the form before it is
14
+ set on your actual content object. This approach is generally deprecated
15
+ however as the Controller objects now provide this same buffering feature
16
+ in a more robust way.
17
+
18
+ h2. How It Works
19
+
20
+ On startup, FormView will walk any child views looking for any views
21
+ with the property "fieldKey". Any views with this key will be saved as
22
+ fields on the form. You can access their value directly on the form by
23
+ getting the value of fieldKey.
24
+
25
+ Used this way, you can easily combine multiple views into a single,
26
+ bindable object. To gain the full functionality however, you should use
27
+ the content commit capability.
28
+
29
+ IMPORTANT: FormView defines some properties of its own. If you try to
30
+ name your fields with properties already declared in FormView, they will
31
+ be ignored and a warning will be logged to the console.
32
+
33
+ h2. Content Commit
34
+
35
+ If you set the content object on a form view, then the form fields will
36
+ automatically be bound to the same named keys on the content object. When
37
+ the content object value's change, the fields on the form will update
38
+ automatically. Likewise, if you change the value of the field, the value
39
+ of the content object will generally be changed as wel.
40
+
41
+ If you prefer, you can also turn on buffered commits by setting the
42
+ commitChangesImmediately property to NO. This will cause the form to
43
+ buffer any changes to the field values and only forwards them to the content
44
+ when you call commitChanges() on the form. This method of buffering is
45
+ still supported for some simple cases, however it is better to use the newer
46
+ Controller objects that provide this same buffering in a more robust way.
47
+
48
+ */
43
49
  SC.FormView = SC.View.extend({
44
50
 
45
51
  // PROPERTIES
@@ -127,17 +127,13 @@ SC.PopupMenuView = SC.View.extend({
127
127
  if (w > requiredWidth) requiredWidth = w ;
128
128
  child = child.get('nextSibling') ;
129
129
  }
130
-
131
- // loop through children again, set their widths to the required with.
132
- var size = { width: requiredWidth } ;
133
- var child = this.get('firstChild') ;
134
- while(child) {
135
- child.set('size',size) ;
136
- child = child.get('nextSibling') ;
137
- }
138
-
139
- // set this view to the same size.
140
- this.set('size',size) ;
130
+ var oldWidth = this.get("size").width;
131
+ if(requiredWidth != oldWidth)
132
+ {
133
+ var size = { width: requiredWidth };
134
+ // set this view to the same size.
135
+ this.set('size',size) ;
136
+ }
141
137
  }
142
138
 
143
139
  });
@@ -61,7 +61,7 @@ SC.View = SC.Responder.extend(SC.PathModule, SC.DelegateSupport,
61
61
  @param view {SC.View} the view to insert as a child node.
62
62
  @param beforeView {SC.View} view to insert before, or null to insert at
63
63
  end
64
- @returns {void}
64
+ @returns {SC.View} the receiver
65
65
  */
66
66
  insertBefore: function(view, beforeView) {
67
67
  this._insertBefore(view,beforeView,true);
@@ -125,7 +125,7 @@ SC.View = SC.Responder.extend(SC.PathModule, SC.DelegateSupport,
125
125
  This will also remove the view's DOM element from the recievers DOM.
126
126
 
127
127
  @param view {SC.View} the view to remove
128
- @returns {void}
128
+ @returns {SC.View} the receiver
129
129
  */
130
130
  removeChild: function(view) {
131
131
  if (!view) return ;
@@ -163,6 +163,7 @@ SC.View = SC.Responder.extend(SC.PathModule, SC.DelegateSupport,
163
163
 
164
164
  view.didRemoveFromParent(this) ;
165
165
  this.didRemoveChild(view);
166
+ return this;
166
167
  },
167
168
 
168
169
  /**
@@ -175,31 +176,54 @@ SC.View = SC.Responder.extend(SC.PathModule, SC.DelegateSupport,
175
176
 
176
177
  @param view {SC.View} the view to insert in the DOM
177
178
  @param view {SC.View} the view to remove from the DOM.
178
- @returns {void}
179
+ @returns {SC.View} the receiver
179
180
  */
180
181
  replaceChild: function(view, oldView) {
181
182
  this.insertBefore(view,oldView) ; this.removeChild(oldView) ;
183
+ return this;
182
184
  },
183
185
 
184
186
  /**
185
187
  Removes the receiver from its parentNode. If the receiver does not belong
186
188
  to a parentNode, this method does nothing.
187
189
 
188
- @returns {void}
190
+ @returns {null}
189
191
  */
190
192
  removeFromParent: function() {
191
193
  if (this.parentNode) this.parentNode.removeChild(this) ;
194
+ return null ;
192
195
  },
193
196
 
197
+ /**
198
+ Works just like removeFromParent but also removes the view from internal
199
+ caches and sets the rootElement to null so that the view and its DOM can
200
+ be garbage collected.
201
+
202
+ SproutCore includes special gaurds that ensure views and their related
203
+ DOM elements will be garbage collected whenever your web page unloads.
204
+ However, if you create and destroy views frequently while your application
205
+ is running, you should call this method when views are no longer needed
206
+ to ensure they will be garbage collected even while your application is
207
+ still running.
208
+
209
+ @returns {null}
210
+ */
211
+ destroy: function() {
212
+ this.removeFromParent() ;
213
+ delete SC.View._view[SC.guidFor(this)];
214
+ return null ;
215
+ },
216
+
194
217
  /**
195
218
  Appends the specified view to the end of the receivers childNodes array.
196
219
  This is equivalent to calling insertBefore(view, null);
197
220
 
198
221
  @param view {SC.View} the view to insert
199
- @returns {void}
222
+ @returns {SC.View} the receiver
200
223
  */
201
224
  appendChild: function(view) {
202
- this.insertBefore(view,null) ;
225
+ this.insertBefore(view,null) ;
226
+ return this ;
203
227
  },
204
228
 
205
229
  /**
@@ -636,7 +660,7 @@ SC.View = SC.Responder.extend(SC.PathModule, SC.DelegateSupport,
636
660
  @returns {String} the set attribute name
637
661
  */
638
662
  setAttribute: function(attrName, value) {
639
- this.rootElement.setAttribute(atrrName, value) ;
663
+ this.rootElement.setAttribute(attrName, value) ;
640
664
  },
641
665
 
642
666
  /**
@@ -81,9 +81,10 @@ module SproutCore
81
81
 
82
82
  attr_reader :bundle_name, :bundle_type, :required_bundles, :preferred_language
83
83
  attr_reader :javascript_libs, :stylesheet_libs
84
- attr_reader :library, :public_root, :url_prefix, :index_prefix
84
+ attr_reader :library, :public_root, :url_prefix, :index_prefix, :build_prefix
85
85
  attr_reader :source_root, :build_root, :url_root, :index_root
86
86
  attr_reader :build_mode, :layout
87
+ attr_reader :make_resources_relative
87
88
 
88
89
  def library_root
89
90
  @library_root ||= library.nil? ? nil : library.root_path
@@ -175,10 +176,15 @@ module SproutCore
175
176
 
176
177
  # public_root:: The root directory accessible to the web browser.
177
178
  @public_root = normalize_path(opts[:public_root] || 'public')
178
- #
179
+
180
+ @make_resources_relative = opts[:resources_relative] || false
181
+
179
182
  # url_prefix:: The prefix to put in front of all resource requests.
180
- @url_prefix = opts[:url_prefix] || opts[:resources_at] || opts[:at] || 'static'
181
- #
183
+ @url_prefix = opts[:url_prefix] || opts[:resources_at] || opts[:at] || (make_resources_relative ? '../..' : 'static')
184
+
185
+ # build_prefix:: The prefix to put in front of the built files directory. Generally if you are using absolute paths you want your build_prefix to match the url_prefix. If you are using relative paths, you don't want a build prefix.
186
+ @build_prefix = opts[:build_prefix] || (make_resources_relative ? '' : url_prefix)
187
+
182
188
  # index_prefix:: The prefix to put in front of all index.html request.
183
189
  @index_prefix = opts[:index_prefix] || opts[:index_at] || ''
184
190
 
@@ -188,10 +194,17 @@ module SproutCore
188
194
  @source_root = normalize_path(opts[:source_root] || File.join(bundle_type.to_s.pluralize, bundle_name.to_s))
189
195
 
190
196
  # build_root:: The directory that should contain the built files.
191
- @build_root = normalize_path(opts[:build_root] || File.join(public_root, url_prefix.to_s, bundle_name.to_s))
197
+ @build_root = normalize_path(opts[:build_root] || File.join(public_root, build_prefix.to_s, bundle_name.to_s))
192
198
 
193
199
  # url_root:: The url that can be used to reach the built resources
194
- @url_root = opts[:url_root] || ['', (url_prefix.nil? || url_prefix.size==0) ? nil : url_prefix, bundle_name.to_s].compact.join('/')
200
+
201
+ # Note that if the resources are relative, we don't want to include a
202
+ # '/' at the front. Using nil will cause it to be removed during
203
+ # compact.
204
+ @url_root = opts[:url_root] || [
205
+ (make_resources_relative ? nil : ''),
206
+ (url_prefix.nil? || url_prefix.size==0) ? nil : url_prefix,
207
+ bundle_name.to_s].compact.join('/')
195
208
 
196
209
  # index_root:: The root url that can be used to reach retrieve the index.html.
197
210
  @index_root = opts[:index_root] || ['',(index_prefix.nil? || index_prefix.size==0) ? nil : index_prefix, bundle_name.to_s].compact.join('/')
@@ -489,12 +502,32 @@ module SproutCore
489
502
 
490
503
  languages.uniq.each { |lang| build_language(lang) }
491
504
 
492
- # After build is complete, try to copy the index.html file of the preferred language
493
- # to the build_root
505
+ # After build is complete, try to copy the index.html file of the
506
+ # preferred language to the build_root
494
507
  index_entry = entry_for('index.html', :language => preferred_language)
495
508
  if index_entry && File.exists?(index_entry.build_path)
496
- FileUtils.mkdir_p(build_root)
497
- FileUtils.cp_r(index_entry.build_path, File.join(build_root,'index.html'))
509
+
510
+ # If we are publishing relative resources, then the default
511
+ # index.html needs to just redirect to the default language.
512
+ if make_resources_relative
513
+ index_url = index_entry.url.gsub("#{self.index_root}/",'')
514
+ file = %(<html><head>
515
+ <meta http-equiv="refresh" content="0;url=#{index_url}" />
516
+ <script type="text/javascript">
517
+ window.location.href='#{index_url}';
518
+ </script>
519
+ </head>
520
+ <body><a href="#{index_url}">Click here</a> if you are not redirected.</body></html>)
521
+ f = File.open(File.join(build_root, 'index.html'), 'w+')
522
+ f.write(file)
523
+ f.close
524
+
525
+ # Otherwise, just copy the contents of the index.html for the
526
+ # preferred language.
527
+ else
528
+ FileUtils.mkdir_p(build_root)
529
+ FileUtils.cp_r(index_entry.build_path, File.join(build_root,'index.html'))
530
+ end
498
531
  end
499
532
  end
500
533
 
@@ -682,7 +715,7 @@ module SproutCore
682
715
  # Converts the named path to a fully qualified path name using the library
683
716
  # root, if it does not begin with a slash
684
717
  def normalize_path(path)
685
- (path[0] == '/'[0]) ? path : File.join(library_root, path)
718
+ File.expand_path(path, library_root)
686
719
  end
687
720
 
688
721
  end
@@ -167,9 +167,9 @@ module SproutCore
167
167
  end
168
168
 
169
169
  # Returns the computed environment for a particular client or framework.
170
- # This will go up the chain of parent libraries, retrieving and merging any known
171
- # environment settings. The returned options are suitable for passing to the ClientBuilder
172
- # for registration.
170
+ # This will go up the chain of parent libraries, retrieving and merging
171
+ # any known environment settings. The returned options are suitable for
172
+ # passing to the ClientBuilder for registration.
173
173
  def environment_for(bundle_name)
174
174
 
175
175
  is_local_client = client_directories.include?(bundle_name.to_s)
@@ -204,8 +204,8 @@ module SproutCore
204
204
  ret[key] = all[key] if all.include?(key)
205
205
  end
206
206
 
207
- # Either way, if we have local settings for this specific client, they override whatever
208
- # we cooked up just now.
207
+ # Either way, if we have local settings for this specific client, they
208
+ # override whatever we cooked up just now.
209
209
  local_settings = environment[bundle_name.to_sym]
210
210
  ret = ret.merge(local_settings) unless local_settings.nil?
211
211
 
@@ -93,10 +93,14 @@ module SproutCore
93
93
  ret = File.open(build_path)
94
94
 
95
95
 
96
- # In development mode only, immediately delete built composite resources. We want
97
- # each request to come directly to us.
96
+ # In development mode only, immediately delete built composite
97
+ # resources. We want each request to come directly to us.
98
98
  if (current_bundle.build_mode == :development) && (!entry.cacheable?)
99
- FileUtils.rm(build_path)
99
+
100
+ # Deleting composite resources will not work in windows because it
101
+ # does not like to have files you just open deleted. (Its OK on
102
+ # windows)
103
+ FileUtils.rm(build_path) if (RUBY_PLATFORM !~ /mswin32/)
100
104
  end
101
105
 
102
106
  return ret
@@ -2,7 +2,7 @@ module SproutCore #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 9
5
- TINY = 9
5
+ TINY = 10
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -1,3 +1,3 @@
1
- Your new SproutCore client application has been created. To access your application, just start sc-sever and visit your client name in the web browser.
1
+ Your new SproutCore client application has been created. To access your application, just start sc-server and visit your client name in the web browser.
2
2
 
3
3
  If you want to change the deployment settings for your application edit the sc-config.rb file to get started.
File without changes
File without changes
@@ -3,5 +3,5 @@ Your new framework has been created. To include it in your clients, be sure to
3
3
  all:
4
4
  requires: [<%= name %>]
5
5
 
6
- Then restart your sc_server and you should be ready to go.
6
+ Then restart your sc-server and you should be ready to go.
7
7
 
File without changes
File without changes
File without changes
File without changes
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sproutcore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: 0.9.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Jolley
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-06-05 00:00:00 -07:00
12
+ date: 2008-06-17 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -295,38 +295,6 @@ files:
295
295
  - frameworks/sproutcore/views/tab.js
296
296
  - frameworks/sproutcore/views/toolbar.js
297
297
  - frameworks/sproutcore/views/view.js
298
- - generators/client/client_generator.rb
299
- - generators/client/README
300
- - generators/client/templates/core.js
301
- - generators/client/templates/english.lproj/body.css
302
- - generators/client/templates/english.lproj/body.rhtml
303
- - generators/client/templates/english.lproj/strings.js
304
- - generators/client/templates/main.js
305
- - generators/client/USAGE
306
- - generators/controller/controller_generator.rb
307
- - generators/controller/templates/controller.js
308
- - generators/controller/templates/test.rhtml
309
- - generators/controller/USAGE
310
- - generators/framework/framework_generator.rb
311
- - generators/framework/README
312
- - generators/framework/templates/core.js
313
- - generators/framework/templates/english.lproj/strings.js
314
- - generators/framework/USAGE
315
- - generators/language/language_generator.rb
316
- - generators/language/templates/strings.js
317
- - generators/language/USAGE
318
- - generators/model/model_generator.rb
319
- - generators/model/templates/fixture.js
320
- - generators/model/templates/model.js
321
- - generators/model/templates/test.rhtml
322
- - generators/model/USAGE
323
- - generators/test/templates/test.rhtml
324
- - generators/test/test_generator.rb
325
- - generators/test/USAGE
326
- - generators/view/templates/test.rhtml
327
- - generators/view/templates/view.js
328
- - generators/view/USAGE
329
- - generators/view/view_generator.rb
330
298
  - History.txt
331
299
  - jsdoc/app/DocFile.js
332
300
  - jsdoc/app/Doclet.js
@@ -379,6 +347,38 @@ files:
379
347
  - Rakefile
380
348
  - README.txt
381
349
  - sc-config.rb
350
+ - sc_generators/client/client_generator.rb
351
+ - sc_generators/client/README
352
+ - sc_generators/client/templates/core.js
353
+ - sc_generators/client/templates/english.lproj/body.css
354
+ - sc_generators/client/templates/english.lproj/body.rhtml
355
+ - sc_generators/client/templates/english.lproj/strings.js
356
+ - sc_generators/client/templates/main.js
357
+ - sc_generators/client/USAGE
358
+ - sc_generators/controller/controller_generator.rb
359
+ - sc_generators/controller/templates/controller.js
360
+ - sc_generators/controller/templates/test.rhtml
361
+ - sc_generators/controller/USAGE
362
+ - sc_generators/framework/framework_generator.rb
363
+ - sc_generators/framework/README
364
+ - sc_generators/framework/templates/core.js
365
+ - sc_generators/framework/templates/english.lproj/strings.js
366
+ - sc_generators/framework/USAGE
367
+ - sc_generators/language/language_generator.rb
368
+ - sc_generators/language/templates/strings.js
369
+ - sc_generators/language/USAGE
370
+ - sc_generators/model/model_generator.rb
371
+ - sc_generators/model/templates/fixture.js
372
+ - sc_generators/model/templates/model.js
373
+ - sc_generators/model/templates/test.rhtml
374
+ - sc_generators/model/USAGE
375
+ - sc_generators/test/templates/test.rhtml
376
+ - sc_generators/test/test_generator.rb
377
+ - sc_generators/test/USAGE
378
+ - sc_generators/view/templates/test.rhtml
379
+ - sc_generators/view/templates/view.js
380
+ - sc_generators/view/USAGE
381
+ - sc_generators/view/view_generator.rb
382
382
  - script/destroy
383
383
  - script/generate
384
384
  - script/txt2html