sproutcore 0.9.17 → 0.9.18
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +45 -2
- data/Manifest.txt +10 -0
- data/Rakefile +1 -1
- data/app_generators/sproutcore/templates/sc-config +8 -2
- data/bin/sc-server +4 -0
- data/clients/sc_docs/english.lproj/body.css +0 -20
- data/clients/sc_docs/english.lproj/body.rhtml +1 -3
- data/clients/sc_docs/english.lproj/strings.js +1 -1
- data/clients/sc_docs/french.lproj/strings.js +14 -0
- data/clients/sc_test_runner/english.lproj/body.css +0 -20
- data/clients/sc_test_runner/english.lproj/body.rhtml +1 -3
- data/config/hoe.rb +1 -1
- data/frameworks/sproutcore/HISTORY +56 -1
- data/frameworks/sproutcore/debug/trace.js +81 -0
- data/frameworks/sproutcore/debug/unittest.js +2 -1
- data/frameworks/sproutcore/english.lproj/buttons.css +5 -2
- data/frameworks/sproutcore/english.lproj/core.css +0 -16
- data/frameworks/sproutcore/english.lproj/images/sc-theme-sprite.png +0 -0
- data/frameworks/sproutcore/english.lproj/splitview.css +83 -0
- data/frameworks/sproutcore/english.lproj/theme.css +21 -5
- data/frameworks/sproutcore/foundation/object.js +23 -0
- data/frameworks/sproutcore/foundation/string.js +4 -3
- data/frameworks/sproutcore/lib/core_views.rb +43 -8
- data/frameworks/sproutcore/lib/form_views.rb +2 -2
- data/frameworks/sproutcore/lib/index.rhtml +1 -1
- data/frameworks/sproutcore/mixins/enumerable.js +4 -8
- data/frameworks/sproutcore/mixins/selection_support.js +1 -1
- data/frameworks/sproutcore/models/collection.js +14 -3
- data/frameworks/sproutcore/models/record.js +6 -5
- data/frameworks/sproutcore/models/store.js +3 -3
- data/frameworks/sproutcore/panes/picker.js +1 -0
- data/frameworks/sproutcore/server/rails_server.js +4 -7
- data/frameworks/sproutcore/server/server.js +58 -1
- data/frameworks/sproutcore/tests/controllers/object.rhtml +1 -1
- data/frameworks/sproutcore/tests/models/collection.rhtml +160 -0
- data/frameworks/sproutcore/tests/models/model.rhtml +15 -3
- data/frameworks/sproutcore/tests/views/collection/base.rhtml +120 -47
- data/frameworks/sproutcore/tests/views/collection/source_list_rendering.rhtml +232 -0
- data/frameworks/sproutcore/tests/views/view/frame.rhtml +2 -2
- data/frameworks/sproutcore/tests/views/view/innerFrame.rhtml +87 -85
- data/frameworks/sproutcore/tests/views/view/scrollFrame.rhtml +25 -26
- data/frameworks/sproutcore/views/collection/collection.js +5 -1
- data/frameworks/sproutcore/views/field/select_field.js +1 -1
- data/frameworks/sproutcore/views/radio_group.js +2 -2
- data/frameworks/sproutcore/views/split.js +191 -174
- data/frameworks/sproutcore/views/split_divider.js +71 -68
- data/frameworks/sproutcore/views/view.js +65 -25
- data/lib/sproutcore.rb +4 -1
- data/lib/sproutcore/build_tools/html_builder.rb +50 -46
- data/lib/sproutcore/build_tools/resource_builder.rb +17 -5
- data/lib/sproutcore/bundle_installer.rb +3 -1
- data/lib/sproutcore/bundle_manifest.rb +4 -3
- data/lib/sproutcore/cssmin.rb +195 -0
- data/lib/sproutcore/generator_helper.rb +15 -0
- data/lib/sproutcore/helpers/capture_helper.rb +2 -22
- data/lib/sproutcore/helpers/dom_id_helper.rb +14 -0
- data/lib/sproutcore/helpers/static_helper.rb +6 -2
- data/lib/sproutcore/helpers/text_helper.rb +1 -1
- data/lib/sproutcore/merb.rb +2 -2
- data/lib/sproutcore/renderers/erubis.rb +43 -0
- data/lib/sproutcore/renderers/haml.rb +28 -0
- data/lib/sproutcore/renderers/sass.rb +42 -0
- data/lib/sproutcore/version.rb +1 -1
- data/lib/sproutcore/view_helpers.rb +40 -46
- data/sc_generators/controller/controller_generator.rb +1 -1
- data/sc_generators/language/USAGE +5 -7
- data/sc_generators/language/language_generator.rb +1 -1
- data/sc_generators/language/templates/strings.js +5 -1
- data/sc_generators/model/model_generator.rb +1 -1
- data/sc_generators/test/test_generator.rb +1 -1
- data/sc_generators/view/view_generator.rb +1 -1
- 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
|
4
|
-
|
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.
|
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 %>
|
@@ -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'
|
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
|
-
|
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)
|
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 ;
|