diff options
author | Atsushi Eno <atsushieno@gmail.com> | 2004-06-07 19:21:58 +0400 |
---|---|---|
committer | Atsushi Eno <atsushieno@gmail.com> | 2004-06-07 19:21:58 +0400 |
commit | b80bb481642173751e95b06a7be00190a08c9aa9 (patch) | |
tree | 4b29b4fc8e8fd1c94efc86a2c6b2b9d62cb6f494 /tools | |
parent | 9f6d841887618f00b19c4c44fe071166292ffebd (diff) |
2004-06-08 Atsushi Enomoto <atsushi@ximian.com>
* DateTimeFormatEntry.cs : Added "all datetime patterns" support.
* Driver.cs : Added "all datetime patterns" support and fixed some
XPathNavigator use to strictly navigate to "pattern" element.
svn path=/trunk/mono/; revision=28969
Diffstat (limited to 'tools')
-rw-r--r-- | tools/locale-builder/ChangeLog | 6 | ||||
-rw-r--r-- | tools/locale-builder/DateTimeFormatEntry.cs | 31 | ||||
-rw-r--r-- | tools/locale-builder/Driver.cs | 53 |
3 files changed, 81 insertions, 9 deletions
diff --git a/tools/locale-builder/ChangeLog b/tools/locale-builder/ChangeLog index b798d2e50d4..deb9ca78933 100644 --- a/tools/locale-builder/ChangeLog +++ b/tools/locale-builder/ChangeLog @@ -1,3 +1,9 @@ +2004-06-08 Atsushi Enomoto <atsushi@ximian.com> + + * DateTimeFormatEntry.cs : Added "all datetime patterns" support. + * Driver.cs : Added "all datetime patterns" support and fixed some + XPathNavigator use to strictly navigate to "pattern" element. + 2004-06-05 Atsushi Enomoto <atsushi@ximian.com> * Driver.cs : Percent patterns are not properly parsed since they are diff --git a/tools/locale-builder/DateTimeFormatEntry.cs b/tools/locale-builder/DateTimeFormatEntry.cs index c13f77ad83d..0ae91497b47 100644 --- a/tools/locale-builder/DateTimeFormatEntry.cs +++ b/tools/locale-builder/DateTimeFormatEntry.cs @@ -35,7 +35,11 @@ namespace Mono.Tools.LocaleBuilder { public string TimeSeparator; public string YearMonthPattern; public int [] OptionalCalendars = new int [5]; - + public ArrayList ShortDatePatterns = new ArrayList (14); + public ArrayList LongDatePatterns = new ArrayList (8); + public ArrayList ShortTimePatterns = new ArrayList (5); + public ArrayList LongTimePatterns = new ArrayList (6); + public int Row; public void AppendTableRow (StringBuilder builder) @@ -69,8 +73,31 @@ namespace Mono.Tools.LocaleBuilder { builder.Append (FirstDayOfWeek + ", "); builder.Append ("\"" + EncodeString (DateSeparator) + "\", "); - builder.Append ("\"" + EncodeString (TimeSeparator) + "\""); + builder.Append ("\"" + EncodeString (TimeSeparator) + "\", "); + + AppendPatterns (builder, ShortDatePatterns); + builder.Append (','); + AppendPatterns (builder, LongDatePatterns); + builder.Append (','); + AppendPatterns (builder, ShortTimePatterns); + builder.Append (','); + AppendPatterns (builder, LongTimePatterns); + + builder.Append ('}'); + } + private void AppendPatterns (StringBuilder builder, ArrayList al) + { + string [] patterns = al.ToArray (typeof (string)) as string []; + builder.Append ('{'); + for (int i = 0; i < patterns.Length; i++) { + string s = EncodeString (patterns [i]); + builder.Append ('\"'); + builder.Append (s); + builder.Append ('\"'); + if (i + 1 < patterns.Length) + builder.Append (','); + } builder.Append ('}'); } diff --git a/tools/locale-builder/Driver.cs b/tools/locale-builder/Driver.cs index 89735c4f68c..c1d73fca75f 100644 --- a/tools/locale-builder/Driver.cs +++ b/tools/locale-builder/Driver.cs @@ -416,21 +416,41 @@ namespace Mono.Tools.LocaleBuilder { ni2 = (XPathNodeIterator) ni.Current.Evaluate ("dateFormats/dateFormatLength"); while (ni2.MoveNext ()) { XPathNavigator df_nav = ni2.Current; + XPathNodeIterator p = df_nav.Select ("dateFormat/pattern"); + string value = ""; + if (p.MoveNext ()) + value = p.Current.Value; + XPathNodeIterator ext = null; switch (df_nav.GetAttribute ("type", String.Empty)) { case "full": - ParseFullDateFormat (df, df_nav.Value); + ParseFullDateFormat (df, value); break; case "long": - df.LongDatePattern = df_nav.Value; + df.LongDatePattern = value; + ext = df_nav.Select ("extraPatterns/pattern"); + if (ext.MoveNext ()) { + df.LongDatePatterns.Clear (); + do { + df.LongDatePatterns.Add (ext.Current.Value); + } while (ext.MoveNext ()); + } break; case "short": - df.ShortDatePattern = df_nav.Value; + df.ShortDatePattern = value; + ext = df_nav.Select ("extraPatterns/pattern"); + if (ext.MoveNext ()) { + df.ShortDatePatterns.Clear (); + do { + df.ShortDatePatterns.Add (ext.Current.Value); + } while (ext.MoveNext ()); + } + break; case "year_month": - df.YearMonthPattern = df_nav.Value; + df.YearMonthPattern = value; break; case "month_day": - df.MonthDayPattern = df_nav.Value; + df.MonthDayPattern = value; break; } } @@ -438,12 +458,31 @@ namespace Mono.Tools.LocaleBuilder { ni2 = (XPathNodeIterator) ni.Current.Evaluate ("timeFormats/timeFormatLength"); while (ni2.MoveNext ()) { XPathNavigator df_nav = ni2.Current; + XPathNodeIterator p = df_nav.Select ("timeFormat/pattern"); + string value = ""; + if (p.MoveNext ()) + value = p.Current.Value; + XPathNodeIterator ext = null; switch (df_nav.GetAttribute ("type", String.Empty)) { case "long": - df.LongTimePattern = df_nav.Value.Replace ('a', 't'); + df.LongTimePattern = value.Replace ('a', 't'); + ext = df_nav.Select ("extraPatterns/pattern"); + if (ext.MoveNext ()) { + df.LongTimePatterns.Clear (); + do { + df.LongTimePatterns.Add (ext.Current.Value); + } while (ext.MoveNext ()); + } break; case "short": - df.ShortTimePattern = df_nav.Value.Replace ('a', 't'); + df.ShortTimePattern = value.Replace ('a', 't'); + ext = df_nav.Select ("extraPatterns/pattern"); + if (ext.MoveNext ()) { + df.ShortTimePatterns.Clear (); + do { + df.ShortTimePatterns.Add (ext.Current.Value); + } while (ext.MoveNext ()); + } break; } } |