From 674848648aa5560dd2c83786e196b9ad7b6ce2f9 Mon Sep 17 00:00:00 2001 From: Tobias Bosch Date: Tue, 17 Feb 2015 14:29:40 -0800 Subject: [PATCH] feat(facade): add support for `Date` Also refactors the dart transpilar to expose the type mappings for future changes. --- modules/angular2/src/facade/lang.dart | 11 ++++++++++- modules/angular2/src/facade/lang.es6 | 10 ++++++++++ .../src/outputgeneration/DartParseTreeWriter.js | 10 ++-------- tools/transpiler/src/type_mapping.js | 8 ++++++++ 4 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 tools/transpiler/src/type_mapping.js diff --git a/modules/angular2/src/facade/lang.dart b/modules/angular2/src/facade/lang.dart index 21ce1f3d46..33ef216697 100644 --- a/modules/angular2/src/facade/lang.dart +++ b/modules/angular2/src/facade/lang.dart @@ -1,6 +1,6 @@ library angular.core.facade.lang; -export 'dart:core' show Type, RegExp, print; +export 'dart:core' show Type, RegExp, print, DateTime; import 'dart:math' as math; import 'dart:convert' as convert; @@ -183,3 +183,12 @@ class Json { static parse(String s) => convert.JSON.decode(s); static stringify(data) => convert.JSON.encode(data); } + +class DateWrapper { + static fromMillis(int ms) { + return new DateTime.fromMillisecondsSinceEpoch(ms); + } + static now() { + return new DateTime.now(); + } +} diff --git a/modules/angular2/src/facade/lang.es6 b/modules/angular2/src/facade/lang.es6 index 05a03ef171..485933a97b 100644 --- a/modules/angular2/src/facade/lang.es6 +++ b/modules/angular2/src/facade/lang.es6 @@ -3,6 +3,7 @@ export {_global as global}; export var Type = Function; export var Math = _global.Math; +export var Date = _global.Date; var assertionsEnabled_ = typeof assert !== 'undefined'; @@ -250,3 +251,12 @@ export function print(obj) { // Can't be all uppercase as our transpiler would think it is a special directive... export var Json = _global.JSON; + +export class DateWrapper { + static fromMillis(ms) { + return new Date(ms); + } + static now() { + return new Date(); + } +} diff --git a/tools/transpiler/src/outputgeneration/DartParseTreeWriter.js b/tools/transpiler/src/outputgeneration/DartParseTreeWriter.js index 6e4b9f8939..896d9dcd2b 100644 --- a/tools/transpiler/src/outputgeneration/DartParseTreeWriter.js +++ b/tools/transpiler/src/outputgeneration/DartParseTreeWriter.js @@ -32,6 +32,7 @@ import {ParseTreeWriter as JavaScriptParseTreeWriter, ObjectLiteralExpression} f import {ImportedBinding, BindingIdentifier} from 'traceur/src/syntax/trees/ParseTrees'; import {IdentifierToken} from 'traceur/src/syntax/IdentifierToken'; import {EXPORT_STAR, NAMED_EXPORT} from 'traceur/src/syntax/trees/ParseTreeType'; +import {typeMapping} from '../type_mapping'; export class DartParseTreeWriter extends JavaScriptParseTreeWriter { constructor(moduleName, outputPath) { @@ -221,14 +222,7 @@ export class DartParseTreeWriter extends JavaScriptParseTreeWriter { } normalizeType_(typeName) { - switch (typeName) { - case 'number': return 'num'; - case 'boolean': return 'bool'; - case 'string': return 'String'; - case 'any': return 'dynamic'; - case 'Promise': return 'Future'; - default: return typeName; - } + return typeMapping[typeName] || typeName; } // FUNCTION/METHOD ARGUMENTS diff --git a/tools/transpiler/src/type_mapping.js b/tools/transpiler/src/type_mapping.js new file mode 100644 index 0000000000..87c34dcbb4 --- /dev/null +++ b/tools/transpiler/src/type_mapping.js @@ -0,0 +1,8 @@ +export var typeMapping = { + 'number': 'num', + 'boolean': 'bool', + 'string': 'String', + 'any': 'dynamic', + 'Promise': 'Future', + 'Date': 'DateTime' +};