Revision: 8423
Author:   [email protected]
Date:     Fri Jun 24 09:58:28 2011
Log: Change timeType and dateType in i18n date format API into timeStyle and dateStyle to match the proposal.
I've kept old keys too, until ChromeOS user switches to time/dateStyle.

Fixed regex for matching styles in date and number format.

TEST=i18n.kaziprst.org/datetimeformat.html should show proper results for both timeType and timeStyle.
Review URL: http://codereview.chromium.org/7244008
http://code.google.com/p/v8/source/detail?r=8423

Modified:
 /branches/bleeding_edge/src/extensions/experimental/datetime-format.cc
 /branches/bleeding_edge/src/extensions/experimental/i18n.js

=======================================
--- /branches/bleeding_edge/src/extensions/experimental/datetime-format.cc Wed Jun 1 14:10:56 2011 +++ /branches/bleeding_edge/src/extensions/experimental/datetime-format.cc Fri Jun 24 09:58:28 2011
@@ -293,34 +293,34 @@
     }
   }

-  // Extract date type and time type from settings.
-  icu::UnicodeString date_type;
-  icu::DateFormat::EStyle date_style = icu::DateFormat::kNone;
-  if (I18NUtils::ExtractStringSetting(settings, "dateType", &date_type)) {
-    date_style = GetDateTimeStyle(date_type);
+  // Extract date style and time style from settings.
+  icu::UnicodeString date_style;
+  icu::DateFormat::EStyle icu_date_style = icu::DateFormat::kNone;
+ if (I18NUtils::ExtractStringSetting(settings, "dateStyle", &date_style)) {
+    icu_date_style = GetDateTimeStyle(date_style);
   }

-  icu::UnicodeString time_type;
-  icu::DateFormat::EStyle time_style = icu::DateFormat::kNone;
-  if (I18NUtils::ExtractStringSetting(settings, "timeType", &time_type)) {
-    time_style = GetDateTimeStyle(time_type);
+  icu::UnicodeString time_style;
+  icu::DateFormat::EStyle icu_time_style = icu::DateFormat::kNone;
+ if (I18NUtils::ExtractStringSetting(settings, "timeStyle", &time_style)) {
+    icu_time_style = GetDateTimeStyle(time_style);
   }

-  // Try all combinations of date/time types.
-  if (date_style == icu::DateFormat::kNone &&
-      time_style == icu::DateFormat::kNone) {
+  // Try all combinations of date/time styles.
+  if (icu_date_style == icu::DateFormat::kNone &&
+      icu_time_style == icu::DateFormat::kNone) {
     // Return default short date, short
     return icu::DateFormat::createDateTimeInstance(
         icu::DateFormat::kShort, icu::DateFormat::kShort, icu_locale);
-  } else if (date_style != icu::DateFormat::kNone &&
-             time_style != icu::DateFormat::kNone) {
+  } else if (icu_date_style != icu::DateFormat::kNone &&
+             icu_time_style != icu::DateFormat::kNone) {
     return icu::DateFormat::createDateTimeInstance(
-        date_style, time_style, icu_locale);
-  } else if (date_style != icu::DateFormat::kNone) {
-    return icu::DateFormat::createDateInstance(date_style, icu_locale);
+        icu_date_style, icu_time_style, icu_locale);
+  } else if (icu_date_style != icu::DateFormat::kNone) {
+    return icu::DateFormat::createDateInstance(icu_date_style, icu_locale);
   } else {
-    // time_style != icu::DateFormat::kNone
-    return icu::DateFormat::createTimeInstance(time_style, icu_locale);
+    // icu_time_style != icu::DateFormat::kNone
+    return icu::DateFormat::createTimeInstance(icu_time_style, icu_locale);
   }
 }

=======================================
--- /branches/bleeding_edge/src/extensions/experimental/i18n.js Wed Jun 22 11:55:06 2011 +++ /branches/bleeding_edge/src/extensions/experimental/i18n.js Fri Jun 24 09:58:28 2011
@@ -145,9 +145,8 @@
  * @param {Object} locale - locale object to pass to formatter.
  * @param {Object} settings - formatting flags:
  *   - skeleton
- *   - dateType
- *   - timeType
- *   - calendar
+ *   - dateStyle
+ *   - timeStyle
  * @private
  * @constructor
  */
@@ -161,25 +160,37 @@
     cleanSettings['skeleton'] = settings['skeleton'];
   } else {
     cleanSettings = {};
-    if (settings.hasOwnProperty('dateType')) {
+    if (settings.hasOwnProperty('dateStyle')) {
+      var ds = settings['dateStyle'];
+      if (!/^(short|medium|long|full)$/.test(ds)) ds = 'short';
+      cleanSettings['dateStyle'] = ds;
+    } else if (settings.hasOwnProperty('dateType')) {
+      // Obsolete. New spec requires dateStyle, but we'll keep this around
+      // for current users.
+      // TODO(cira): Remove when all internal users switch to dateStyle.
       var dt = settings['dateType'];
-      if (!/^short|medium|long|full$/.test(dt)) dt = 'short';
-      cleanSettings['dateType'] = dt;
+      if (!/^(short|medium|long|full)$/.test(dt)) dt = 'short';
+      cleanSettings['dateStyle'] = dt;
     }

-    if (settings.hasOwnProperty('timeType')) {
+    if (settings.hasOwnProperty('timeStyle')) {
+      var ts = settings['timeStyle'];
+      if (!/^(short|medium|long|full)$/.test(ts)) ts = 'short';
+      cleanSettings['timeStyle'] = ts;
+    } else if (settings.hasOwnProperty('timeType')) {
+      // TODO(cira): Remove when all internal users switch to timeStyle.
       var tt = settings['timeType'];
-      if (!/^short|medium|long|full$/.test(tt)) tt = 'short';
-      cleanSettings['timeType'] = tt;
+      if (!/^(short|medium|long|full)$/.test(tt)) tt = 'short';
+      cleanSettings['timeStyle'] = tt;
     }
   }

   // Default is to show short date and time.
   if (!cleanSettings.hasOwnProperty('skeleton') &&
-      !cleanSettings.hasOwnProperty('dateType') &&
-      !cleanSettings.hasOwnProperty('timeType')) {
-    cleanSettings = {'dateType': 'short',
-                     'timeType': 'short'};
+      !cleanSettings.hasOwnProperty('dateStyle') &&
+      !cleanSettings.hasOwnProperty('timeStyle')) {
+    cleanSettings = {'dateStyle': 'short',
+                     'timeStyle': 'short'};
   }

   locale = v8Locale.__createLocaleOrDefault(locale);
@@ -249,7 +260,7 @@
     cleanSettings['pattern'] = settings['pattern'];
   } else if (settings.hasOwnProperty('style')) {
     var style = settings['style'];
-    if (!/^decimal|currency|percent|scientific$/.test(style)) {
+    if (!/^(decimal|currency|percent|scientific)$/.test(style)) {
       style = 'decimal';
     }
     cleanSettings['style'] = style;

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to