sproutcore 0.9.17 → 0.9.18

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.
Files changed (72) hide show
  1. data/History.txt +45 -2
  2. data/Manifest.txt +10 -0
  3. data/Rakefile +1 -1
  4. data/app_generators/sproutcore/templates/sc-config +8 -2
  5. data/bin/sc-server +4 -0
  6. data/clients/sc_docs/english.lproj/body.css +0 -20
  7. data/clients/sc_docs/english.lproj/body.rhtml +1 -3
  8. data/clients/sc_docs/english.lproj/strings.js +1 -1
  9. data/clients/sc_docs/french.lproj/strings.js +14 -0
  10. data/clients/sc_test_runner/english.lproj/body.css +0 -20
  11. data/clients/sc_test_runner/english.lproj/body.rhtml +1 -3
  12. data/config/hoe.rb +1 -1
  13. data/frameworks/sproutcore/HISTORY +56 -1
  14. data/frameworks/sproutcore/debug/trace.js +81 -0
  15. data/frameworks/sproutcore/debug/unittest.js +2 -1
  16. data/frameworks/sproutcore/english.lproj/buttons.css +5 -2
  17. data/frameworks/sproutcore/english.lproj/core.css +0 -16
  18. data/frameworks/sproutcore/english.lproj/images/sc-theme-sprite.png +0 -0
  19. data/frameworks/sproutcore/english.lproj/splitview.css +83 -0
  20. data/frameworks/sproutcore/english.lproj/theme.css +21 -5
  21. data/frameworks/sproutcore/foundation/object.js +23 -0
  22. data/frameworks/sproutcore/foundation/string.js +4 -3
  23. data/frameworks/sproutcore/lib/core_views.rb +43 -8
  24. data/frameworks/sproutcore/lib/form_views.rb +2 -2
  25. data/frameworks/sproutcore/lib/index.rhtml +1 -1
  26. data/frameworks/sproutcore/mixins/enumerable.js +4 -8
  27. data/frameworks/sproutcore/mixins/selection_support.js +1 -1
  28. data/frameworks/sproutcore/models/collection.js +14 -3
  29. data/frameworks/sproutcore/models/record.js +6 -5
  30. data/frameworks/sproutcore/models/store.js +3 -3
  31. data/frameworks/sproutcore/panes/picker.js +1 -0
  32. data/frameworks/sproutcore/server/rails_server.js +4 -7
  33. data/frameworks/sproutcore/server/server.js +58 -1
  34. data/frameworks/sproutcore/tests/controllers/object.rhtml +1 -1
  35. data/frameworks/sproutcore/tests/models/collection.rhtml +160 -0
  36. data/frameworks/sproutcore/tests/models/model.rhtml +15 -3
  37. data/frameworks/sproutcore/tests/views/collection/base.rhtml +120 -47
  38. data/frameworks/sproutcore/tests/views/collection/source_list_rendering.rhtml +232 -0
  39. data/frameworks/sproutcore/tests/views/view/frame.rhtml +2 -2
  40. data/frameworks/sproutcore/tests/views/view/innerFrame.rhtml +87 -85
  41. data/frameworks/sproutcore/tests/views/view/scrollFrame.rhtml +25 -26
  42. data/frameworks/sproutcore/views/collection/collection.js +5 -1
  43. data/frameworks/sproutcore/views/field/select_field.js +1 -1
  44. data/frameworks/sproutcore/views/radio_group.js +2 -2
  45. data/frameworks/sproutcore/views/split.js +191 -174
  46. data/frameworks/sproutcore/views/split_divider.js +71 -68
  47. data/frameworks/sproutcore/views/view.js +65 -25
  48. data/lib/sproutcore.rb +4 -1
  49. data/lib/sproutcore/build_tools/html_builder.rb +50 -46
  50. data/lib/sproutcore/build_tools/resource_builder.rb +17 -5
  51. data/lib/sproutcore/bundle_installer.rb +3 -1
  52. data/lib/sproutcore/bundle_manifest.rb +4 -3
  53. data/lib/sproutcore/cssmin.rb +195 -0
  54. data/lib/sproutcore/generator_helper.rb +15 -0
  55. data/lib/sproutcore/helpers/capture_helper.rb +2 -22
  56. data/lib/sproutcore/helpers/dom_id_helper.rb +14 -0
  57. data/lib/sproutcore/helpers/static_helper.rb +6 -2
  58. data/lib/sproutcore/helpers/text_helper.rb +1 -1
  59. data/lib/sproutcore/merb.rb +2 -2
  60. data/lib/sproutcore/renderers/erubis.rb +43 -0
  61. data/lib/sproutcore/renderers/haml.rb +28 -0
  62. data/lib/sproutcore/renderers/sass.rb +42 -0
  63. data/lib/sproutcore/version.rb +1 -1
  64. data/lib/sproutcore/view_helpers.rb +40 -46
  65. data/sc_generators/controller/controller_generator.rb +1 -1
  66. data/sc_generators/language/USAGE +5 -7
  67. data/sc_generators/language/language_generator.rb +1 -1
  68. data/sc_generators/language/templates/strings.js +5 -1
  69. data/sc_generators/model/model_generator.rb +1 -1
  70. data/sc_generators/test/test_generator.rb +1 -1
  71. data/sc_generators/view/view_generator.rb +1 -1
  72. metadata +12 -5
data/History.txt CHANGED
@@ -1,7 +1,50 @@
1
+ == 0.9.18
2
+
3
+ * sc-gen should give warning on incorrect usage (Ticket #52) [Alexei Svitkine]
4
+
5
+ * Regression: body.html.erb no longer works (Ticket #119) [Michael Allman]
6
+
7
+ * c[:javascript_libs] included too often (Ticket #125) [Lawrence Pit]
8
+
9
+ * sc-server has to be restarted after error in code is executed (Ticket #43) [macinjosh]
10
+
11
+ * id attribute generated twice for views (Ticket #70) [Alexei Svitkine]
12
+
13
+ * text_area_view missing 'show-hint' class (Ticket #24) [mrc]
14
+
15
+ * Sass support (Ticket #117) [Lawrence Pit]
16
+
17
+ * html tag is missing required attribute xmlns (Ticket #132) [Alexei Svitkine]
18
+
19
+ * c[:resources_relative] = true should be default in sc-config (Ticket #173) [Davide Benini]
20
+
21
+ * text_area_view's generated textarea tag does not validate (Ticket #131) [Alexei Svitkine]
22
+
23
+ * Throws error when using haml (Ticket #179) [Sindre Aarsaethe]
24
+
25
+ * sc-gen language USAGE file wrong and doesn't not generate files correctly
26
+ (Ticket #130) [Trek]
27
+
28
+ * Allow view_helpers (and templates) to call dom_id to generate a guaranteed unique
29
+ DOM id (Ticket #147) [Lawrence Pit]
30
+
31
+ * Fix memory leak in build tool (Ticket #146) [Lawrence Pit]
32
+
33
+ * require('...') doesn't accept .js extension on end of name (Ticket #144) [Lawrence Pit]
34
+
35
+ * -s and --source not working on sc-install (Tickets #143, #145) [Trek]
36
+
37
+ * Add --haml and --sass options to sc-init and sc-client (Ticket #126) [Lawrence Pit]
38
+
39
+ * Refactored rendering.... allow yield :foobar (Ticket #116) [Lawrence Pit]
40
+
41
+ * Compress CSS when build for production (Ticketss #148, #151) [Lawrence Pit]
42
+
1
43
  == 0.9.17
2
44
 
3
- * Fix for Ticket [158]: Fix requirements to load correct version of merb (Paul Barry)
4
- * Fix for Ticket [124]: Proxy doesn't forward GET params with merb 0.9.4 (Lawrence Pit)
45
+ * Fix requirements to load correct version of merb (Ticket #158) [Paul Barry]
46
+
47
+ * Proxy doesn't forward GET params with merb 0.9.4 (Ticket #124) [Lawrence Pit]
5
48
 
6
49
  == 0.9.16
7
50
 
data/Manifest.txt CHANGED
@@ -19,6 +19,7 @@ clients/sc_docs/english.lproj/no_docs.rhtml
19
19
  clients/sc_docs/english.lproj/strings.js
20
20
  clients/sc_docs/english.lproj/tabs.rhtml
21
21
  clients/sc_docs/fixtures/doc.js
22
+ clients/sc_docs/french.lproj/strings.js
22
23
  clients/sc_docs/HISTORY
23
24
  clients/sc_docs/main.js
24
25
  clients/sc_docs/models/doc.js
@@ -58,6 +59,7 @@ frameworks/sproutcore/controllers/collection.js
58
59
  frameworks/sproutcore/controllers/controller.js
59
60
  frameworks/sproutcore/controllers/object.js
60
61
  frameworks/sproutcore/core.js
62
+ frameworks/sproutcore/debug/trace.js
61
63
  frameworks/sproutcore/debug/unittest.js
62
64
  frameworks/sproutcore/drag/drag.js
63
65
  frameworks/sproutcore/drag/drag_data_source.js
@@ -88,6 +90,7 @@ frameworks/sproutcore/english.lproj/panels/top-left-corner.png
88
90
  frameworks/sproutcore/english.lproj/panels/top-right-corner.png
89
91
  frameworks/sproutcore/english.lproj/panes.css
90
92
  frameworks/sproutcore/english.lproj/picker.css
93
+ frameworks/sproutcore/english.lproj/splitview.css
91
94
  frameworks/sproutcore/english.lproj/strings.js
92
95
  frameworks/sproutcore/english.lproj/tab.css
93
96
  frameworks/sproutcore/english.lproj/tests.css
@@ -165,11 +168,13 @@ frameworks/sproutcore/tests/foundation/timer/schedule.rhtml
165
168
  frameworks/sproutcore/tests/globals/window.rhtml
166
169
  frameworks/sproutcore/tests/mixins/enumerable.rhtml
167
170
  frameworks/sproutcore/tests/mixins/observable.rhtml
171
+ frameworks/sproutcore/tests/models/collection.rhtml
168
172
  frameworks/sproutcore/tests/models/model.rhtml
169
173
  frameworks/sproutcore/tests/panes/pane.rhtml
170
174
  frameworks/sproutcore/tests/views/checkbox.rhtml
171
175
  frameworks/sproutcore/tests/views/collection/base.rhtml
172
176
  frameworks/sproutcore/tests/views/collection/incremental_rendering.rhtml
177
+ frameworks/sproutcore/tests/views/collection/source_list_rendering.rhtml
173
178
  frameworks/sproutcore/tests/views/image_cell.rhtml
174
179
  frameworks/sproutcore/tests/views/label_item.rhtml
175
180
  frameworks/sproutcore/tests/views/list.rhtml
@@ -339,8 +344,10 @@ lib/sproutcore/build_tools.rb
339
344
  lib/sproutcore/bundle.rb
340
345
  lib/sproutcore/bundle_installer.rb
341
346
  lib/sproutcore/bundle_manifest.rb
347
+ lib/sproutcore/cssmin.rb
342
348
  lib/sproutcore/generator_helper.rb
343
349
  lib/sproutcore/helpers/capture_helper.rb
350
+ lib/sproutcore/helpers/dom_id_helper.rb
344
351
  lib/sproutcore/helpers/static_helper.rb
345
352
  lib/sproutcore/helpers/tag_helper.rb
346
353
  lib/sproutcore/helpers/text_helper.rb
@@ -351,6 +358,9 @@ lib/sproutcore/library.rb
351
358
  lib/sproutcore/merb/bundle_controller.rb
352
359
  lib/sproutcore/merb/router.rb
353
360
  lib/sproutcore/merb.rb
361
+ lib/sproutcore/renderers/erubis.rb
362
+ lib/sproutcore/renderers/haml.rb
363
+ lib/sproutcore/renderers/sass.rb
354
364
  lib/sproutcore/version.rb
355
365
  lib/sproutcore/view_helpers.rb
356
366
  lib/sproutcore.rb
data/Rakefile CHANGED
@@ -4,6 +4,6 @@ require 'config/hoe' # setup Hoe + all gem configuration
4
4
  APP_ROOT = File.expand_path(File.dirname(__FILE__))
5
5
 
6
6
  # Set directories you want ignored in the manifest.
7
- IGNORE_DIRS = ['assets', 'pkg', 'samples', 'doc']
7
+ IGNORE_DIRS = ['assets', 'pkg', 'samples', 'doc', 'log', 'public', 'tmp']
8
8
 
9
9
  Dir['tasks/**/*.rake'].each { |rake| load rake }
@@ -18,9 +18,14 @@ config :all do |c|
18
18
  # page.
19
19
  c[:required] = [:sproutcore]
20
20
 
21
+
22
+ # Set this to false to locate your clients at absolute paths.
23
+ # (Uncomment and define c[:resources_at] if you set this to false.)
24
+ c[:resources_relative] = true
25
+
21
26
  # This string will be prepended before any URLs that reference JavaScript,
22
27
  # CSS or images in your files.
23
- c[:resources_at] = 'static'
28
+ # c[:resources_at] = 'static'
24
29
 
25
30
  # This string will be prepended before any index.html urls that actually
26
31
  # load your clients. Setting this to an empty string will mount all
@@ -44,9 +49,10 @@ config :all do |c|
44
49
  # c[:preferred_language] = :fr
45
50
 
46
51
  # If you want to use a default root layout template other than the default
47
- # provided by SproutCore, you can specifiy the path name to the index.html
52
+ # provided by SproutCore, you can specifiy the path name to the index.rhtml
48
53
  # here. If you provide a relative path, SproutCore will assume the file
49
54
  # is relative to the root of this project.
55
+ #
50
56
  # c[:layout] = 'lib/index.rhtml'
51
57
 
52
58
  # This is the fully qualified path to the directory you want all of your
data/bin/sc-server CHANGED
@@ -9,6 +9,7 @@ $:.unshift File.join(APP_ROOT,'lib') ;
9
9
  # Require Merb, SproutCore & SproutCore/Merb support
10
10
  require 'rubygems'
11
11
  require 'rubigen'
12
+ gem('merb-core', '>= 0.9.1')
12
13
  require 'merb-core'
13
14
  require 'sproutcore'
14
15
  require 'sproutcore/merb'
@@ -58,6 +59,9 @@ Merb::Config.use { |c|
58
59
  ## Register Exception Handler
59
60
  ##
60
61
 
62
+ # required in 0.9.5-0.9.7, when defining an exception controller
63
+ class Application < Merb::Controller ; end
64
+
61
65
  class Exceptions < Merb::Controller
62
66
  def base
63
67
  params[:exception].to_s
@@ -16,27 +16,7 @@ body {
16
16
  overflow: hidden ;
17
17
  }
18
18
 
19
- .workspace .sidebar {
20
- position: absolute;
21
- left: 0;
22
- top: 0;
23
- width: 200px;
24
- bottom: 0;
25
- }
26
-
27
- .sc-theme .workspace.horizontal .sc-split-divider-view {
28
- position: absolute;
29
- left: 200px;
30
- top: 0;
31
- bottom: 0;
32
- }
33
-
34
19
  .workspace .document_view {
35
- position: absolute;
36
- left: 205px;
37
- right: 0;
38
- top: 0;
39
- bottom: 0;
40
20
  border: none ;
41
21
  background-color: #aaa ;
42
22
  }
@@ -15,7 +15,7 @@
15
15
 
16
16
 
17
17
  <% split_view :workspace, :class => 'sc-app-workspace header footer', :direction => :horizontal do %>
18
- <% view :sidebar, :outlet => true do %>
18
+ <% view :sidebar, :outlet => true, :width => 200 do %>
19
19
  <% scroll_view :source_list, :outlet => true do %>
20
20
  <%= source_list_view :outlet => true,
21
21
  :content_value_key => :title,
@@ -31,8 +31,6 @@
31
31
  <% end %>
32
32
  <% end %>
33
33
 
34
- <%= split_divider_view :outlet => true, :width => 5 %>
35
-
36
34
  <%= tab_view :document_view, :outlet => true,
37
35
  :bind => { :now_showing => 'Docs.docsController.nowShowingContainer' },
38
36
  :lazy_tabs => :true %>
@@ -9,6 +9,6 @@
9
9
  // localized string added to this file!
10
10
  //
11
11
  Object.extend(String.English,{
12
- // "_String Key": "Localized String"
12
+ "_English": "English"
13
13
  }) ;
14
14
 
@@ -0,0 +1,14 @@
1
+ // ==========================================================================
2
+ // Docs French Strings
3
+ // ==========================================================================
4
+
5
+ // Place strings you want to localize here. In your app, use the key and
6
+ // localize it using "key string".loc(). HINT: For your key names, use the
7
+ // english string with an underscore in front. This way you can still see
8
+ // how your UI will look and you'll notice right away when something needs a
9
+ // localized string added to this file!
10
+ //
11
+ Object.extend(String.English,{
12
+ "_English": "French"
13
+ }) ;
14
+
@@ -16,27 +16,7 @@ body {
16
16
  overflow: hidden ;
17
17
  }
18
18
 
19
- .workspace .sidebar {
20
- position: absolute;
21
- left: 0;
22
- top: 0;
23
- width: 200px;
24
- bottom: 0;
25
- }
26
-
27
- .sc-theme .workspace.horizontal .sc-split-divider-view {
28
- position: absolute;
29
- left: 200px;
30
- top: 0;
31
- bottom: 0;
32
- }
33
-
34
19
  .workspace .document_view {
35
- position: absolute;
36
- left: 205px;
37
- right: 0;
38
- top: 0;
39
- bottom: 0;
40
20
  border: none ;
41
21
  background-color: #aaa ;
42
22
  }
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
  <% split_view :workspace, :class => 'sc-app-workspace header footer', :direction => :horizontal do %>
19
- <% view :sidebar, :outlet => true do %>
19
+ <% view :sidebar, :outlet => true, :width => 200 do %>
20
20
  <% scroll_view :source_list, :outlet => true do %>
21
21
  <%= source_list_view :outlet => true,
22
22
  :group => :group,
@@ -30,8 +30,6 @@
30
30
 
31
31
  <% end %>
32
32
  <% end %>
33
-
34
- <%= split_divider_view :outlet => true, :width => 5 %>
35
33
 
36
34
  <% view :document_view, :outlet => true do %>
37
35
  <%= view :outlet => :runner_frame, :tag => :iframe,
data/config/hoe.rb CHANGED
@@ -60,7 +60,7 @@ hoe = Hoe.new(GEM_NAME, VERS) do |p|
60
60
 
61
61
  # == Optional
62
62
  p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
63
- p.extra_deps = [['activesupport', '>= 2.0.2'], ['merb-core', '>= 0.9.1', '< 0.9.5'], ['erubis'], ['rubigen'], ['mongrel'], ['hoe']]
63
+ p.extra_deps = [['activesupport', '>= 2.0.2'], ['merb-core', '>= 0.9.1'], ['erubis'], ['rubigen'], ['mongrel'], ['hoe']]
64
64
 
65
65
  #p.spec_extras = {} # A hash of extra values to set in the gemspec.
66
66
 
@@ -1,6 +1,61 @@
1
+ == sproutcore 0.9.18
2
+
3
+ - picker.js bug (Ticket #82) [Alexei Svitkine]
4
+
5
+ - selection_support.js problem with SelectFieldView (Tickets #103, #104) [Bill Klaila]
6
+
7
+ - Fixed radio enabled display state (Ticket #127) [Gert Hulstein]
8
+
9
+ - CollectionView doesn't resize groups after a frame change (Ticket #12) [Christopher Swasey]
10
+
11
+ - SC.Record.Date should handle GMT formatted strings (Ticket #101) [Joshua Dickens, Erich Ocean]
12
+
13
+ - Missing SC.Collection.removeRecords method (Ticket #102) [mm]
14
+
15
+ - SC.Record.create() inconsistency (Ticket #99) [Michael Allman]
16
+
17
+ - toMany relationship is null (Ticket #166) [Reto Wolf]
18
+
19
+ - SC.CollectionView itemViewForEvent somtimes throws exception on IE8 (Ticket #169)
20
+ [Darryl Fuller]
21
+
22
+ - SC.Collection doesn't update itself properly (Ticket #152) [Christopher Swasey]
23
+
24
+ - SC.Record notifies SC.Store improperly of changes (Ticket #155) [Christopher Swasey]
25
+
26
+ - Basic tests for collections (initial) (Ticket #156) [Christopher Swasey]
27
+
28
+ - problem with record.js; parent-child relationship; and tomcat (Ticket #154) [Bill Klaila]
29
+
30
+ - SC.CollectionController.hasSelection() does not return anything when there is no content
31
+ (Ticket #178) [Maurits Lamers, Erich Ocean]
32
+
33
+ - CollectionView doesn't properly redraw contents if it isn't visible at the time of a
34
+ content change (Ticket #123) [Christopher Swase]
35
+
36
+ - Split view can collapse when thickness becomes less than a given value
37
+ (Ticket #137) [Lawrence Pit]
38
+
39
+ - IE6 Fix (Ticket #162) [sujoykroy]
40
+
41
+ - String.fmt ordered arguments are broken (Ticket #165) [Boris Smus, Erich Ocean]
42
+
43
+ - Reimplementation of Array.invoke breaks Scriptaculous (Ticket #163) [Boris Smus]
44
+
45
+ - record.js/readAttributes() Bug (Ticket #139) [Evin Grano]
46
+
47
+ - Records with multiple toMany relationships mixup data (Ticket #161)
48
+ [Reto Wolf, Erich Ocean]
49
+
50
+ - Segmented buttons are 1 pixel too tall towards the bottom (Ticket #138) [Lawrence Pit]
51
+
52
+ - Split view doesn't honor canCollapse property (Ticket #128) [Lawrence Pit]
53
+
54
+ - Split view doesn't honor min_thickness property (Ticket #129) [Lawrence Pit]
55
+
1
56
  == sproutcore 0.9.17
2
57
 
3
- * Fix require()'s for server/rest_server.js and server/rails_server.js
58
+ - Fix require()'s for server/rest_server.js and server/rails_server.js
4
59
 
5
60
  == sproutcore 0.9.15
6
61
 
@@ -0,0 +1,81 @@
1
+ // ==========================================================================
2
+ // SproutCore
3
+ // Author: Erich Ocean
4
+ // copyright 2006-2008, Sprout Systems, Inc.
5
+ // ==========================================================================
6
+
7
+ require('core');
8
+
9
+ // code originally taken from http://pastie.org/253058, modified since
10
+ // found via: http://eriwen.com/javascript/js-stack-trace/
11
+
12
+ // Prints a stack trace to console.
13
+ // Pass true to print actual function definitions instead.
14
+ $trace = (function () {
15
+
16
+ var mode;
17
+ try {(0)()} catch (e) {
18
+ mode = e.stack ? 'Firefox' : window.opera ? 'Opera' : 'Other';
19
+ }
20
+
21
+ switch (mode) {
22
+ case 'Firefox' : return function (full) {
23
+ var full = full || false;
24
+ try {(0)()} catch (e) {
25
+ console.log(e.stack.replace(/^.*?\n/,'').
26
+ replace(/(?:\n@:0)?\s+$/m,'').
27
+ replace(/^\(/gm,'{anonymous}(').
28
+ split("\n").join('\n\n'));
29
+ }
30
+ };
31
+
32
+ case 'Opera' : return function (full) {
33
+ var full = full || false;
34
+ try {(0)()} catch (e) {
35
+ var lines = e.message.split("\n"),
36
+ ANON = '{anonymous}',
37
+ lineRE = /Line\s+(\d+).*?in\s+(http\S+)(?:.*?in\s+function\s+(\S+))?/i,
38
+ i,j,len;
39
+
40
+ for (i=4,j=0,len=lines.length; i<len; i+=2) {
41
+ if (lineRE.test(lines[i])) {
42
+ lines[j++] = (RegExp.$3 ?
43
+ RegExp.$3 + '()@' + RegExp.$2 + RegExp.$1 :
44
+ ANON + RegExp.$2 + ':' + RegExp.$1) +
45
+ ' -- ' + lines[i+1].replace(/^\s+/,'');
46
+ }
47
+ }
48
+
49
+ lines.splice(j,lines.length-j);
50
+ console.log(lines.join('\n\n'));
51
+ }
52
+ };
53
+
54
+ default : return function (full) {
55
+ var full = full || false;
56
+ var curr = arguments.callee.caller,
57
+ FUNC = 'function', ANON = "{anonymous}",
58
+ fnRE = /function\s*([\w\-$]+)?\s*\(/i,
59
+ stack = [],j=0,
60
+ fn,args,i;
61
+
62
+ while (curr) {
63
+ fn = fnRE.test(curr.toString()) ? RegExp.$1 || ANON : ANON;
64
+ args = stack.slice.call(curr.arguments);
65
+ i = args.length;
66
+
67
+ while (i--) {
68
+ switch (typeof args[i]) {
69
+ case 'string' : args[i] = '"'+args[i].replace(/"/g,'\\"')+'"'; break;
70
+ case 'function': args[i] = FUNC; break;
71
+ }
72
+ }
73
+
74
+ stack[j++] = (full) ? curr.toString() : fn + '(' + args.join() + ')';
75
+ curr = curr.caller;
76
+ }
77
+
78
+ console.log(stack.join('\n\n'));
79
+ };
80
+ }
81
+ })();
@@ -166,7 +166,8 @@ Test.Unit.Runner.prototype = {
166
166
  if (!rootLog) {
167
167
  var el = document.createElement('div') ;
168
168
  el.id = 'test-log' ;
169
- $(el).addClassName('testlog') ;
169
+ var ell = $(el) ; // prevent strange type error when Chrome debug window is open
170
+ if (ell.addClassName) ell.addClassName('testlog') ;
170
171
  var body = document.getElementsByTagName('body')[0] ;
171
172
  body.insertBefore(el, body.firstChild) ;
172
173
  rootLog = el ;