Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Unified Diff: sdk/lib/collection/maps.dart

Issue 18837002: Move toString() to collection classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments. Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/collection/maps.dart
diff --git a/sdk/lib/collection/maps.dart b/sdk/lib/collection/maps.dart
index 303008cc6950a815089473c7b0f4e181b89cda13..3481122f29988f70a3b982e9d4de70d2f67a69f7 100644
--- a/sdk/lib/collection/maps.dart
+++ b/sdk/lib/collection/maps.dart
@@ -59,7 +59,10 @@ class Maps {
static bool isEmpty(Map map) => map.keys.isEmpty;
static bool isNotEmpty(Map map) => map.keys.isNotEmpty;
-
+
+ // A list to identify cyclic maps during toString() calls.
+ static List _toStringList = new List();
+
/**
* Returns a string representing the specified map. The returned string
* looks like this: [:'{key0: value0, key1: value1, ... keyN: valueN}':].
@@ -76,7 +79,32 @@ class Maps {
* A typical implementation of a map's [toString] method will
* simply return the results of this method applied to the collection.
*/
- static String mapToString(Map m) => ToString.mapToString(m);
+ static String mapToString(Map m) {
+ for (int i = 0; i < _toStringList.length; i++) {
+ if (identical(_toStringList[i], m)) { return '{...}'; }
+ }
+
+ var result = new StringBuffer();
+ try {
+ _toStringList.add(m);
+ result.write('{');
+ bool first = true;
+ m.forEach((k, v) {
+ if(!first) {
+ result.write(', ');
+ }
+ first = false;
+ result.write(k);
+ result.write(': ');
+ result.write(v);
+ });
+ result.write('}');
+ } finally {
+ _toStringList.remove(m);
floitsch 2013/07/08 16:12:34 removeLast (with assert).
zarah 2013/07/08 16:57:46 Done.
+ }
+
+ return result.toString();
+ }
static _id(x) => x;

Powered by Google App Engine
This is Rietveld 408576698