private static string Format(ArrayList numberlist, List<FormatInfo> tokens, string lang, string letter, string groupingSep, string groupingSize) {
StringBuilder result = new StringBuilder();
int cFormats = 0;
if (tokens != null) {
cFormats = tokens.Count;
}
NumberingFormat numberingFormat = new NumberingFormat();
if (groupingSize != null) {
try {
numberingFormat.setGroupingSize(Convert.ToInt32(groupingSize, CultureInfo.InvariantCulture));
}
catch (System.FormatException) {}
catch (System.OverflowException) {}
}
if (groupingSep != null) {
if (groupingSep.Length > 1) {
}
numberingFormat.setGroupingSeparator(groupingSep);
}
if (0 < cFormats) {
FormatInfo prefix = tokens[0];
Debug.Assert(prefix == null || prefix.isSeparator);
FormatInfo sufix = null;
if (cFormats % 2 == 1) {
sufix = tokens[cFormats - 1];
cFormats --;
}
FormatInfo periodicSeparator = 2 < cFormats ? tokens[cFormats - 2] : DefaultSeparator;
FormatInfo periodicFormat = 0 < cFormats ? tokens[cFormats - 1] : DefaultFormat ;
if (prefix != null) {
result.Append(prefix.formatString);
}
int numberlistCount = numberlist.Count;
for(int i = 0; i < numberlistCount; i++ ) {
int formatIndex = i * 2;
bool haveFormat = formatIndex < cFormats;
if (0 < i) {
FormatInfo thisSeparator = haveFormat ? tokens[formatIndex + 0] : periodicSeparator;
Debug.Assert(thisSeparator.isSeparator);
result.Append(thisSeparator.formatString);
}
FormatInfo thisFormat = haveFormat ? tokens[formatIndex + 1] : periodicFormat;
Debug.Assert(!thisFormat.isSeparator);
//numberingFormat.setletter(this.letter);
//numberingFormat.setLang(this.lang);
numberingFormat.setNumberingType(thisFormat.numSequence);
numberingFormat.setMinLen(thisFormat.length);
result.Append(numberingFormat.FormatItem(numberlist[i]));
}
if (sufix != null) {
result.Append(sufix.formatString);
}
}
else {
numberingFormat.setNumberingType(NumberingSequence.Arabic);
for (int i = 0; i < numberlist.Count; i++) {
if (i != 0) {
result.Append(".");
}
result.Append(numberingFormat.FormatItem(numberlist[i]));
}
}
return result.ToString();
}