private static ILiturgieTekstObject VerwerkNormaal(string voorOpties, LiturgieOptiesGebruiker opties) { var regel = new InterpretatieNormaal(); if (voorOpties.Length == 0) { return(InterpretatieNormaal.Empty); } var voorBenamingStukken = voorOpties.Trim().Split(BenamingScheidingstekens, StringSplitOptions.RemoveEmptyEntries); if (voorBenamingStukken.Length == 0) { return(InterpretatieNormaal.Empty); } var preBenamingTrimmed = voorBenamingStukken[0].Trim(); // Een benaming kan uit delen bestaan, bijvoorbeeld 'psalm 110' in 'psalm 110:1,2' of 'opwekking 598' in 'opwekking 598' var voorPreBenamingStukken = preBenamingTrimmed.Split(BenamingDeelScheidingstekens, StringSplitOptions.RemoveEmptyEntries); if (voorPreBenamingStukken.Length > 1) { regel.Deel = voorPreBenamingStukken[voorPreBenamingStukken.Length - 1]; // Is altijd laatste deel } regel.Benaming = preBenamingTrimmed.Substring(0, preBenamingTrimmed.Length - (regel.Deel ?? "").Length).Trim(); // Verzen als '1,2' in 'psalm 110:1,2' regel.VerzenZoalsIngevoerd = voorBenamingStukken.Length > 1 ? voorBenamingStukken[1].Trim() : null; regel.Verzen = (regel.VerzenZoalsIngevoerd ?? "") .Split(VersScheidingstekens, StringSplitOptions.RemoveEmptyEntries) .Select(v => v.Trim()) .ToList(); regel.OptiesGebruiker = opties; return(regel); }
public string MaakTekstVanOpties(LiturgieOptiesGebruiker opties) { if (opties == null) { return(string.Empty); } var optiesReeks = new StringBuilder(); if (opties.AlsBijbeltekst) { optiesReeks .Append(LiturgieOptieSettings.AlsCommando) .Append(LiturgieOptieSettings.OptieParamScheidingstekens.First()) .Append(LiturgieOptieSettings.AlsBijbeltekst) .Append(OptieScheidingstekens.First()); } if (opties.NietVerwerkenViaDatabase) { optiesReeks .Append(LiturgieOptieSettings.OptieNietVerwerken) .Append(OptieScheidingstekens.First()); } if (opties.ToonInOverzicht != null && opties.ToonInOverzicht == false) { optiesReeks .Append(LiturgieOptieSettings.OptieNietTonenInOverzicht) .Append(OptieScheidingstekens.First()); } if (!opties.ToonInVolgende != null && opties.ToonInVolgende == false) { optiesReeks .Append(LiturgieOptieSettings.OptieNietTonenInVolgende) .Append(OptieScheidingstekens.First()); } if (!string.IsNullOrWhiteSpace(opties.AlternatieveNaam)) { optiesReeks .Append(LiturgieOptieSettings.OptieAlternatieveNaam) .Append(LiturgieOptieSettings.OptieParamScheidingstekens.First()) .Append(opties.AlternatieveNaam) .Append(OptieScheidingstekens.First()); } if (!string.IsNullOrWhiteSpace(opties.AlternatieveNaamOverzicht)) { optiesReeks .Append(LiturgieOptieSettings.OptieAlternatieveNaamOverzicht) .Append(LiturgieOptieSettings.OptieParamScheidingstekens.First()) .Append(opties.AlternatieveNaamOverzicht) .Append(OptieScheidingstekens.First()); } if (optiesReeks.Length == 0) { return(string.Empty); } optiesReeks.Remove(optiesReeks.Length - 1, 1); // laatste ',' verwijderen return($"{OptieStart.First()}{optiesReeks}{OptieEinde.First()}"); }
public LiturgieOptiesGebruiker BepaalBasisOptiesTekstinvoer(string invoerTekst, string uitDatabase) { var returnValue = new LiturgieOptiesGebruiker(); returnValue.NietVerwerkenViaDatabase = String.IsNullOrWhiteSpace(invoerTekst); if (returnValue.NietVerwerkenViaDatabase) { return(returnValue); } returnValue.AlsBijbeltekst = !string.IsNullOrWhiteSpace(uitDatabase) && uitDatabase == LiturgieDatabaseSettings.DatabaseNameBijbeltekst; returnValue.ToonInOverzicht = true; returnValue.ToonInVolgende = true; return(returnValue); }
private static LiturgieOptiesGebruiker InterpreteerOpties(string optiesRuw) { var returnValue = new LiturgieOptiesGebruiker(); var opties = (!IsNullOrEmpty(optiesRuw) ? optiesRuw : "") .Split(OptieScheidingstekens, StringSplitOptions.RemoveEmptyEntries) .Select(v => v.Trim()) .ToList(); returnValue.AlsBijbeltekst = (GetOptieParam(opties, LiturgieOptieSettings.AlsCommando) ?? "").Trim().Equals(LiturgieOptieSettings.AlsBijbeltekst, StringComparison.CurrentCultureIgnoreCase); returnValue.NietVerwerkenViaDatabase = opties.Any(o => o.StartsWith(LiturgieOptieSettings.OptieNietVerwerken, StringComparison.CurrentCultureIgnoreCase)); returnValue.ToonInVolgende = opties.Any(o => o.StartsWith(LiturgieOptieSettings.OptieNietTonenInVolgende, StringComparison.CurrentCultureIgnoreCase)) ? (bool?)false : null; returnValue.ToonInOverzicht = opties.Any(o => o.StartsWith(LiturgieOptieSettings.OptieNietTonenInOverzicht, StringComparison.CurrentCultureIgnoreCase)) ? (bool?)false : null; returnValue.AlternatieveNaamOverzicht = GetOptieParam(opties, LiturgieOptieSettings.OptieAlternatieveNaamOverzicht); returnValue.AlternatieveNaam = GetOptieParam(opties, LiturgieOptieSettings.OptieAlternatieveNaam); return(returnValue); }
public string MaakTotTekst(string invoerTekst, LiturgieOptiesGebruiker opties, IVrijZoekresultaat zoekresultaat) { var tekstUitOpties = _liturgieTekstNaarObject.MaakTekstVanOpties(opties); var gebruiktZoekresultaat = zoekresultaat.AlleMogelijkheden .Where(w => invoerTekst.StartsWith(w.Weergave)) .OrderByDescending(w => w.Weergave.Length) .FirstOrDefault(); if (gebruiktZoekresultaat == null) { return($"{invoerTekst.Trim()} {tekstUitOpties.Trim()}".Trim()); } else { var resterend = invoerTekst.Substring(gebruiktZoekresultaat.Weergave.Length); return($"{gebruiktZoekresultaat.VeiligeNaam} {resterend.Trim()} {tekstUitOpties.Trim()}".Trim()); } }
private static ILiturgieInterpretatieBijbeltekst VerwerkAlsBijbeltekst(string voorOpties, LiturgieOptiesGebruiker opties) { var regel = new InterpretatieBijbeltekst(); if (voorOpties.Length == 0) { return(InterpretatieBijbeltekst.Empty); } var benamingStukken = voorOpties.Trim().Split(BenamingScheidingstekens, StringSplitOptions.RemoveEmptyEntries); if (benamingStukken.Length == 0) { return(InterpretatieBijbeltekst.Empty); } // Opknippen zodat hoofdstukken bij verzen blijven // Opgeknipt moet 'johannes 3: 5, 7, 9 - 8:1, 3, 9: 5 - 10' geven: 'johannes', '3: 5, 7, 9 -', '8:1, 3, ', '9: 5 - 10' // Opknippen ook zodat koppeltekens doorgegeven worden // Opgeknipt moet 'johannes 3: 5 - 8:10' geven: 'johannes', '3: 5 -', '8: - 10' var onthouden = string.Empty; var onthoudenVoorLaatsteElementIsKoppelteken = false; var voorBenaming = string.Empty; var deelVersen = new List <ILiturgieInterpretatieBijbeltekstDeel>(); var compatibilityVerzenZoalsIngevoerd = string.Empty; for (int teller = 0; teller < benamingStukken.Length; teller++) { // Heropbouwen naamgeving voor weergave op overzicht if (teller > 0) { compatibilityVerzenZoalsIngevoerd += benamingStukken[teller]; if (teller < benamingStukken.Length - 1) { compatibilityVerzenZoalsIngevoerd += BenamingScheidingstekens.First(); } } // var stuk = benamingStukken[teller].Trim(); if (onthoudenVoorLaatsteElementIsKoppelteken) { stuk = $"{VersKoppeltekens[0]} {stuk}"; } var heeftVolgendStuk = teller + 1 < benamingStukken.Length; if (!heeftVolgendStuk && teller != 0) { deelVersen.Add(new InterpretatieBijbeltekstDeel() { Deel = onthouden, VerzenZoalsIngevoerd = stuk, Verzen = (stuk ?? "") .Split(VersScheidingstekens, StringSplitOptions.RemoveEmptyEntries) .Select(v => v.Trim()) .ToList() }); break; } // var elementen = teller == 0 ? stuk.Split(BenamingDeelScheidingstekens, StringSplitOptions.RemoveEmptyEntries) : stuk.Replace("-", " - ").Split(BenamingDeelScheidingstekens.Union(VersScheidingstekens).ToArray(), StringSplitOptions.RemoveEmptyEntries); var laatsteElement = string.Empty; if (elementen.Length >= 2) { laatsteElement = elementen[elementen.Length - 1]; } var voorLaatsteElementIsKoppelteken = elementen.Length >= 3 && VersKoppeltekens.Contains(elementen[elementen.Length - 2][0]); var stukZonderLaatsteElement = stuk.Substring(0, stuk.Length - laatsteElement.Length).Trim(); if (teller == 0) { voorBenaming = stukZonderLaatsteElement; } if (!heeftVolgendStuk && teller == 0) { deelVersen.Add(new InterpretatieBijbeltekstDeel() { Deel = laatsteElement, Verzen = new List <string>() }); } else if (teller != 0) { deelVersen.Add(new InterpretatieBijbeltekstDeel() { Deel = onthouden, VerzenZoalsIngevoerd = stukZonderLaatsteElement, Verzen = (stukZonderLaatsteElement ?? "") .Split(VersScheidingstekens, StringSplitOptions.RemoveEmptyEntries) .Select(v => v.Trim()) .ToList() }); } // Volgende loop onthouden = laatsteElement; onthoudenVoorLaatsteElementIsKoppelteken = voorLaatsteElementIsKoppelteken; } regel.PerDeelVersen = deelVersen; regel.Benaming = voorBenaming; // downward compatibility met ILiturgieInterpretatie regel.Deel = deelVersen.FirstOrDefault().Deel; regel.VerzenZoalsIngevoerd = compatibilityVerzenZoalsIngevoerd.Trim(); regel.Verzen = new string[0]; // opties toekennen regel.OptiesGebruiker = opties; return(regel); }