/// <summary> /// Maak een mooie samenvatting van de opgegeven nummers /// </summary> /// Probeer de nummers samen te vatten door een bereik te tonen. /// Waar niet mogelijk toon daar gewoon komma gescheiden nummers. /// Als het in beeld is dan wordt de eerste in ieder geval los getoond. /// <remarks> /// </remarks> private static string LiedVerzen(ILiturgieDisplay regelDisplay, bool toonEersteLos, IEnumerable<ILiturgieContent> vanDelen = null) { if (regelDisplay.VersenGebruikDefault.Gebruik || vanDelen == null || (!toonEersteLos && regelDisplay.VolledigeContent)) return !string.IsNullOrEmpty(regelDisplay.VersenGebruikDefault.Tekst) ? regelDisplay.VersenGebruikDefault.Tekst : null; var over = vanDelen.Where(v => v.Nummer.HasValue).Select(v => v.Nummer.Value).ToList(); if (!over.Any()) return null; var builder = new StringBuilder(); if (toonEersteLos) { builder.Append(over.First()).Append(", "); over.RemoveAt(0); } while (over.Any()) { var nieuweReeks = new List<int> { over.First() }; over.RemoveAt(0); while (over.Any() && over[0] == nieuweReeks.Last() + 1) { nieuweReeks.Add(over[0]); over.RemoveAt(0); } if (nieuweReeks.Count == 1) builder.Append(nieuweReeks[0]); else if (nieuweReeks.Count == 2) builder.Append(string.Join(", ", nieuweReeks)); else builder.AppendFormat("{0} - {1}", nieuweReeks.First(), nieuweReeks.Last()); builder.Append(", "); } return builder.ToString().TrimEnd(',', ' '); }
/// <summary> /// Maak een mooie samenvatting van de opgegeven nummers /// </summary> /// Probeer de nummers samen te vatten door een bereik te tonen. /// Waar niet mogelijk toon daar gewoon komma gescheiden nummers. /// Als het in beeld is dan wordt de eerste in ieder geval los getoond. /// <remarks> /// </remarks> private static string LiedVerzen(ILiturgieDisplay regelDisplay, bool toonEersteLos, bool verkortBijVolledigeContent, IEnumerable <ILiturgieContent> vanDelen = null) { if (regelDisplay.VersenGebruikDefault != null || vanDelen == null || (!toonEersteLos && regelDisplay.VolledigeContent && verkortBijVolledigeContent)) { return(regelDisplay.VersenGebruikDefault); } var over = vanDelen.Where(v => v.Nummer.HasValue).Select(v => v.Nummer.Value).ToList(); if (!over.Any()) { return(null); } var builder = new StringBuilder(); if (toonEersteLos) { builder.Append(over.First()).Append(", "); over.RemoveAt(0); } while (over.Any()) { var nieuweReeks = new List <int> { over.First() }; over.RemoveAt(0); while (over.Any() && over[0] == nieuweReeks.Last() + 1) { nieuweReeks.Add(over[0]); over.RemoveAt(0); } if (nieuweReeks.Count == 1) { builder.Append(nieuweReeks[0]); } else if (nieuweReeks.Count == 2) { builder.Append(string.Join(", ", nieuweReeks)); } else { builder.AppendFormat("{0} - {1}", nieuweReeks.First(), nieuweReeks.Last()); } builder.Append(", "); } return(builder.ToString().TrimEnd(',', ' ')); }