Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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()}");
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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());
            }
        }
Esempio n. 6
0
        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);
        }