From 5e134e6b8b1bcfe19a0b5bb94de02792d4501823 Mon Sep 17 00:00:00 2001 From: "sra@google.com" Date: Thu, 23 Aug 2012 03:50:16 +0000 Subject: [PATCH] Conversions between JavaScript objects and Maps. Review URL: https://chromiumcodereview.appspot.com//10870030 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11208 260f80e4-7a28-3924-810f-c04153c831b5 --- lib/html/dart2js/html_dart2js.dart | 16 ++++++++++++---- lib/html/src/dart2js_Conversions.dart | 16 ++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/lib/html/dart2js/html_dart2js.dart b/lib/html/dart2js/html_dart2js.dart index f14d542ece8..5ba916d5c53 100644 --- a/lib/html/dart2js/html_dart2js.dart +++ b/lib/html/dart2js/html_dart2js.dart @@ -38573,15 +38573,23 @@ _convertDartToNative_ImageData(ImageData imageData) { /// Converts a JavaScript object with properties into a Dart Map. +/// Not suitable for nested objects. Map _convertNativeToDart_Dictionary(object) { // TODO: Implement. - return object; + var dict = {}; + for (final key in JS('List', 'Object.getOwnPropertyNames(#)', object)) { + dict[key] = JS('var', '#[#]', object, key); + } + return dict; } -/// Converts a Dart map into a JavaScript object with properties. +/// Converts a flat Dart map into a JavaScript object with properties. _convertDartToNative_Dictionary(Map dict) { - // TODO: Implement. - return dict; + var object = JS('var', '{}'); + dict.forEach((String key, value) { + JS('void', '#[#] = #', object, key, value); + }); + return object; } diff --git a/lib/html/src/dart2js_Conversions.dart b/lib/html/src/dart2js_Conversions.dart index e0e2ff2289a..8c6ab8372dc 100644 --- a/lib/html/src/dart2js_Conversions.dart +++ b/lib/html/src/dart2js_Conversions.dart @@ -84,15 +84,23 @@ _convertDartToNative_ImageData(ImageData imageData) { /// Converts a JavaScript object with properties into a Dart Map. +/// Not suitable for nested objects. Map _convertNativeToDart_Dictionary(object) { // TODO: Implement. - return object; + var dict = {}; + for (final key in JS('List', 'Object.getOwnPropertyNames(#)', object)) { + dict[key] = JS('var', '#[#]', object, key); + } + return dict; } -/// Converts a Dart map into a JavaScript object with properties. +/// Converts a flat Dart map into a JavaScript object with properties. _convertDartToNative_Dictionary(Map dict) { - // TODO: Implement. - return dict; + var object = JS('var', '{}'); + dict.forEach((String key, value) { + JS('void', '#[#] = #', object, key, value); + }); + return object; }