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

Unified Diff: pkg/intl/test/message_extraction/generate_from_json.dart

Issue 18543009: Plurals and Genders (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix typo Created 7 years, 6 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: pkg/intl/test/message_extraction/generate_from_json.dart
diff --git a/pkg/intl/test/message_extraction/generate_from_json.dart b/pkg/intl/test/message_extraction/generate_from_json.dart
index c991a44421e3133ea6948a60e8d8bcd9ca3f1b13..a3478da07b496436ed69d43dd53a1907ddcae9d2 100644
--- a/pkg/intl/test/message_extraction/generate_from_json.dart
+++ b/pkg/intl/test/message_extraction/generate_from_json.dart
@@ -23,12 +23,13 @@ import 'package:intl/generate_localized.dart';
import 'dart:json' as json;
import 'package:pathos/path.dart' as path;
import 'package:args/args.dart';
+import 'package:serialization/serialization.dart';
/**
* Keeps track of all the messages we have processed so far, keyed by message
* name.
*/
-Map<String, IntlMessage> messages;
+Map<String, MainMessage> messages;
main() {
var targetDir;
@@ -41,16 +42,15 @@ main() {
parser.addOption("generated-file-prefix", defaultsTo: '',
callback: (x) => generatedFilePrefix = x);
parser.parse(args);
- if (args.length == 0) {
+ var dartFiles = args.where((x) => x.endsWith("dart")).toList();
+ var jsonFiles = args.where((x) => x.endsWith(".json")).toList();
+ if (dartFiles.length == 0 || jsonFiles.length == 0) {
print('Usage: generate_from_json [--output-dir=<dir>]'
' [--generated-file-prefix=<prefix>] file1.dart file2.dart ...'
' translation1.json translation2.json ...');
exit(0);
}
- var dartFiles = args.where((x) => x.endsWith("dart")).toList();
- var jsonFiles = args.where((x) => x.endsWith(".json")).toList();
-
// We're re-parsing the original files to find the corresponding messages,
// so if there are warnings extracting the messages, suppress them.
suppressWarnings = true;
@@ -70,6 +70,20 @@ main() {
mainImportFile.writeAsStringSync(generateMainImportFile());
}
+var s = new Serialization();
+var format = const SimpleFlatFormat();
+var r = s.newReader(format);
+
+recreateIntlObjects(key, value) {
+ if (value == null) return null;
+ if (value is String || value is int) return Message.from(value, null);
+ if (value is List) {
+ var newThing = r.read(value);
+ return newThing;
+ }
+ throw new FormatException("Invalid input data $value");
+}
+
/**
* Create the file of generated code for a particular locale. We read the json
* data and create [BasicTranslatedMessage] instances from everything,
@@ -79,7 +93,8 @@ main() {
void generateLocaleFile(File file, String targetDir) {
var src = file.readAsStringSync();
var data = json.parse(src);
- var locale = data["_locale"];
+ data.forEach((k, v) => data[k] = recreateIntlObjects(k, v));
+ var locale = data["_locale"].string;
allLocales.add(locale);
var translations = [];
@@ -96,13 +111,13 @@ void generateLocaleFile(File file, String targetDir) {
* up its original message in our [messages].
*/
class BasicTranslatedMessage extends TranslatedMessage {
- BasicTranslatedMessage(String name, String translated) :
+ BasicTranslatedMessage(String name, translated) :
super(name, translated);
- IntlMessage get originalMessage =>
+ MainMessage get originalMessage =>
(super.originalMessage == null) ? _findOriginal() : super.originalMessage;
// We know that our [id] is the name of the message, which is used as the
//key in [messages].
- IntlMessage _findOriginal() => originalMessage = messages[id];
+ MainMessage _findOriginal() => originalMessage = messages[id];
}

Powered by Google App Engine
This is Rietveld 408576698