public static string LimitedList(int maxItems, IEnumerable <string> data, string format = "{0}", string itemsDelimiter = "\n", string lastItemDelimiter = "\n", string moreTextPrefix = null, Devmasters.Lang.PluralDef morePluralForm = null, bool moreNumberFormat = true ) { return(LimitedList(maxItems, data.Select(m => new string[] { m }), format, itemsDelimiter, lastItemDelimiter, moreTextPrefix, morePluralForm, moreNumberFormat)); }
public static string LimitedList(int maxItems, IEnumerable <string[]> data, string format = "{0}", string itemsDelimiter = "\n", string lastItemDelimiter = "\n", string moreTextPrefix = null, Devmasters.Lang.PluralDef morePluralForm = null, bool moreNumberFormat = true ) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); string more = ""; if (data.Count() == maxItems + 1) { sb.Append(RenderList(data.Take(maxItems + 1), format, itemsDelimiter, lastItemDelimiter, "")); maxItems = data.Count(); } else { sb.Append(RenderList(data.Take(maxItems), format, itemsDelimiter, lastItemDelimiter, "")); } if (data.Count() > maxItems) { int diff = data.Count() - maxItems; string sDiff = diff.ToString(); if (moreNumberFormat) { sDiff = NiceNumber(diff); } if (!string.IsNullOrEmpty(moreTextPrefix)) { if (moreTextPrefix.Contains("{0}")) { more = string.Format(moreTextPrefix, sDiff); } else { more = moreTextPrefix; } } if (morePluralForm != null) { more = more + Devmasters.Lang.Plural.Get(diff, morePluralForm); } } sb.Append(more); return(sb.ToString()); }
public static string LimitedList(int maxItems, IEnumerable <string[]> data, string format = "{0}", string itemsDelimiter = "\n", string moreTextPrefix = null, Devmasters.Lang.PluralDef morePluralForm = null, bool moreNumberFormat = true ) { if (maxItems == 0) { return(string.Empty); } if (data == null) { return(string.Empty); } if (data.Count() == 0) { return(string.Empty); } System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append(data.Take(maxItems) .Select(m => string.Format(format, m)) .Aggregate((f, s) => f + itemsDelimiter + s) ); string more = ""; if (data.Count() == maxItems + 1) { sb.Append(itemsDelimiter); sb.Append(string.Format(format, data.Last())); maxItems = data.Count(); } if (data.Count() > maxItems) { int diff = data.Count() - maxItems; string sDiff = diff.ToString(); if (moreNumberFormat) { sDiff = NiceNumber(diff); } if (!string.IsNullOrEmpty(moreTextPrefix)) { if (moreTextPrefix.Contains("{0}")) { more = string.Format(moreTextPrefix, sDiff); } else { more = moreTextPrefix; } } if (morePluralForm != null) { more = more + Devmasters.Lang.Plural.Get(diff, morePluralForm); } } sb.Append(more); return(sb.ToString()); }