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

Side by Side Diff: packages/polymer/lib/deserialize.dart

Issue 2312183003: Removed Polymer from Observatory deps (Closed)
Patch Set: Created 4 years, 3 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 unified diff | Download patch
« no previous file with comments | « packages/polymer/lib/deploy.dart ('k') | packages/polymer/lib/html_element_names.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 library polymer.deserialize;
6
7 import 'dart:convert' show JSON;
8
9 final _typeHandlers = {
10 String: (x, _) => x,
11 Null: (x, _) => x,
12 DateTime: (x, def) {
13 // TODO(jmesserly): shouldn't need to try-catch here
14 // See: https://code.google.com/p/dart/issues/detail?id=1878
15 try {
16 return DateTime.parse(x);
17 } catch (e) {
18 return def;
19 }
20 },
21 bool: (x, _) => x != 'false',
22 int: (x, def) => int.parse(x, onError: (_) => def),
23 double: (x, def) => double.parse(x, (_) => def),
24 };
25
26 /// Convert representation of [value] based on [type] and [currentValue].
27 Object deserializeValue(String value, Object currentValue, Type type) {
28 var handler = _typeHandlers[type];
29 if (handler != null) return handler(value, currentValue);
30
31 try {
32 // If the string is an object, we can parse is with the JSON library.
33 // include convenience replace for single-quotes. If the author omits
34 // quotes altogether, parse will fail.
35 return JSON.decode(value.replaceAll("'", '"'));
36
37 // TODO(jmesserly): deserialized JSON is not assignable to most objects in
38 // Dart. We should attempt to convert it appropriately.
39 } catch (e) {
40 // The object isn't valid JSON, return the raw value
41 return value;
42 }
43 }
OLDNEW
« no previous file with comments | « packages/polymer/lib/deploy.dart ('k') | packages/polymer/lib/html_element_names.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698