private static ILiturgieInterpretatieBijbeltekst VerwerkAlsBijbeltekst(string[] voorOpties, IEnumerable<string> opties)
        {
            var regel = new InterpretatieBijbeltekst();
            if (voorOpties.Length == 0)
                return null;
            var benamingStukken = voorOpties[0].Trim().Split(BenamingScheidingstekens, StringSplitOptions.RemoveEmptyEntries);
            if (benamingStukken.Length == 0)
                return null;
            // 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>();
            for (int teller = 0; teller < benamingStukken.Length; teller++)
            {
                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()
                    });
                onthouden = laatsteElement;
                onthoudenVoorLaatsteElementIsKoppelteken = voorLaatsteElementIsKoppelteken;
            }
            regel.PerDeelVersen = deelVersen;
            regel.Benaming = voorBenaming;
            var optieLijst = opties.ToList();

            // downward compatibility met ILiturgieInterpretatie
            regel.Deel = deelVersen.FirstOrDefault().Deel;
            regel.VerzenZoalsIngevoerd = deelVersen.FirstOrDefault().VerzenZoalsIngevoerd;
            regel.Verzen = deelVersen.FirstOrDefault().Verzen;

            // visualisatie handmatig regelen
            optieLijst.Add($"{LiturgieOplosser.LiturgieOplosserSettings.OptieAlternatieveNaamOverzicht} {voorOpties[0]}");
            optieLijst.Add($"{LiturgieOplosser.LiturgieOplosserSettings.OptieAlternatieveNaam} {voorOpties[0]}");

            // opties toekennen
            regel.Opties = optieLijst;
            return regel;
        }
예제 #2
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);
        }