Beispiel #1
0
 public static string LimitedList(int maxItems, IEnumerable <string> data, string format = "{0}",
                                  string itemsDelimiter = "\n",
                                  string moreTextPrefix = null, Devmasters.Core.Lang.PluralDef morePluralForm = null,
                                  bool moreNumberFormat = true
                                  )
 {
     return(LimitedList(maxItems, data.Select(m => new string[] { m }), format, itemsDelimiter, moreTextPrefix, morePluralForm, moreNumberFormat));
 }
Beispiel #2
0
        public static string LimitedList(int maxItems, IEnumerable <string[]> data, string format = "{0}",
                                         string itemsDelimiter = "\n",
                                         string moreTextPrefix = null, Devmasters.Core.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.Core.Lang.Plural.Get(diff, morePluralForm);
                }
            }
            sb.Append(more);
            return(sb.ToString());
        }