| package com.android.contacts.datepicker; |
| |
| public class ICU { |
| |
| /** |
| * This method is directly copied from {@link libcore.icu.ICU}. The method is simple enough |
| * that it probably won't change. |
| */ |
| public static char[] getDateFormatOrder(String pattern) { |
| char[] result = new char[3]; |
| int resultIndex = 0; |
| boolean sawDay = false; |
| boolean sawMonth = false; |
| boolean sawYear = false; |
| |
| for (int i = 0; i < pattern.length(); ++i) { |
| char ch = pattern.charAt(i); |
| if (ch == 'd' || ch == 'L' || ch == 'M' || ch == 'y') { |
| if (ch == 'd' && !sawDay) { |
| result[resultIndex++] = 'd'; |
| sawDay = true; |
| } else if ((ch == 'L' || ch == 'M') && !sawMonth) { |
| result[resultIndex++] = 'M'; |
| sawMonth = true; |
| } else if ((ch == 'y') && !sawYear) { |
| result[resultIndex++] = 'y'; |
| sawYear = true; |
| } |
| } else if (ch == 'G') { |
| // Ignore the era specifier, if present. |
| } else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) { |
| throw new IllegalArgumentException("Bad pattern character '" |
| + ch + "' in " + pattern); |
| } else if (ch == '\'') { |
| if (i < pattern.length() - 1 && pattern.charAt(i + 1) == '\'') { |
| ++i; |
| } else { |
| i = pattern.indexOf('\'', i + 1); |
| if (i == -1) { |
| throw new IllegalArgumentException("Bad quoting in " + pattern); |
| } |
| ++i; |
| } |
| } else { |
| // Ignore spaces and punctuation. |
| } |
| } |
| return result; |
| } |
| |
| } |