Index: tool/input_sdk/private/debugger.dart |
diff --git a/tool/input_sdk/private/debugger.dart b/tool/input_sdk/private/debugger.dart |
index 43d553d2e171c45c9bb0fcb2f113a4915d396d16..975ad5eed40fec8fec195adfc616e45de7b5ae69 100644 |
--- a/tool/input_sdk/private/debugger.dart |
+++ b/tool/input_sdk/private/debugger.dart |
@@ -10,12 +10,17 @@ import 'dart:core'; |
import 'dart:collection'; |
import 'dart:html' as html; |
-/// Config object to pass to devtools to signal that an object should not be |
+/// Config String to pass to devtools to signal that an object should not be |
/// formatted by the Dart formatter. This is used to specify that an Object |
/// should just be displayed using the regular JavaScript view instead of a |
/// custom Dart view. For example, this is used to display the JavaScript view |
/// of a Dart Function as a child of the regular Function object. |
-const skipDartConfig = const Object(); |
+const skipDartConfig = "skipDartConfig"; |
+ |
+/// Config String to pass to devtools to signal that a map key object should |
+/// have its toString() displayed by the Dart formatter. |
+const keyToStringConfig = "keyToStringConfig"; |
Jacob
2016/06/03 23:11:50
A cleaner solution would be to have an
enum of co
priscillalee
2016/06/07 22:58:01
Used a class JsonMLConfig that simulated an enum i
|
+ |
final int maxIterableChildrenToDisplay = 50; |
var _devtoolsFormatter = new JsonMLFormatter(new DartFormatter()); |
@@ -85,8 +90,9 @@ bool hasMethod(object, String name) { |
/// [JsonMLFormatter] consumes [NameValuePair] objects and |
class NameValuePair { |
- NameValuePair({this.name, this.value, bool skipDart}) |
- : skipDart = skipDart == true; |
+ NameValuePair({this.name, this.value, bool skipDart, bool keyToString}) |
Jacob
2016/06/03 23:11:50
change this to just take an entry of the
enum Jso
priscillalee
2016/06/07 22:58:01
Done.
|
+ : skipDart = skipDart == true, |
+ keyToString = keyToString == true; |
// Define equality and hashCode so that NameValuePair can be used |
// in a Set to dedupe entries with duplicate names. |
@@ -96,12 +102,13 @@ class NameValuePair { |
final String name; |
final Object value; |
final bool skipDart; |
+ final bool keyToString; |
} |
class MapEntry { |
MapEntry({this.key, this.value}); |
- final String key; |
+ final Object key; |
final Object value; |
} |
@@ -200,6 +207,10 @@ class JsonMLFormatter { |
var c = _simpleFormatter.preview(object); |
if (c == null) return null; |
+ if (identical(config, keyToStringConfig)) { |
Jacob
2016/06/03 23:11:50
switch to using == instead of identical
priscillalee
2016/06/07 22:58:01
Done.
|
+ c = object.toString(); |
+ } |
+ |
// Indicate this is a Dart Object by using a Dart background color. |
// This is stylistically a bit ugly but it eases distinguishing Dart and |
// JS objects. |
@@ -233,6 +244,9 @@ class JsonMLFormatter { |
if (child.skipDart) { |
objectTag.addAttribute('config', skipDartConfig); |
} |
+ if (child.keyToString) { |
+ objectTag.addAttribute('config', keyToStringConfig); |
+ } |
if (!_simpleFormatter.hasChildren(child.value)) { |
li.setStyle("padding-left: 13px;"); |
} |
@@ -561,7 +575,7 @@ class MapEntryFormatter implements Formatter { |
bool hasChildren(object) => true; |
List<NameValuePair> children(object) => <NameValuePair>[ |
- new NameValuePair(name: 'key', value: object.key), |
+ new NameValuePair(name: 'key', value: object.key, keyToString: true), |
new NameValuePair(name: 'value', value: object.value) |
]; |
} |