Exemplo n.º 1
0
        public static List <Book> Parse(string version, string language, string text)
        {
            List <Book> books = new List <Book>();

            if (!String.IsNullOrWhiteSpace(text))
            {
                HashSet <string> hsBooks = new HashSet <string>();
                int i = 1;

                List <string> lines = new List <string>(from line in text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries) select line.TrimEnd('~'));
                lines.ForEach((line) => {
                    var parts = line.Split(new char[] { '|' });
                    if (parts.Count().Equals(4) &&
                        !string.IsNullOrWhiteSpace(parts[0]) &&
                        Int32.TryParse(parts[1], out int chapterNumber) &&
                        Int32.TryParse(parts[2], out int verseNumber) &&
                        !string.IsNullOrWhiteSpace(parts[3]))
                    {
                        VerseText verseText = new VerseText()
                        {
                            Text = parts[3], VersionId = version
                        };
                        var book = books.FirstOrDefault(b => b.Name.Equals(parts[0]));
                        if (book == null)
                        {
                            book = new Book()
                            {
                                Index = i++, Name = parts[0], Chapters = new List <Chapter>()
                            };
                            books.Add(book);
                        }
                        var chapter = book.Chapters.Find(c => c.Index.Equals(chapterNumber));
                        if (chapter == null)
                        {
                            chapter = new Chapter()
                            {
                                Index = chapterNumber, Verses = new List <Verse>()
                            };
                            book.Chapters.Add(chapter);
                        }
                        var verse = chapter.Verses.FirstOrDefault(v => v.Index.Equals(verseNumber));
                        if (verse == null)
                        {
                            verse = new Verse()
                            {
                                Id = $"{book.Index}-{chapter.Index}-{verseNumber}", Index = verseNumber, Text = new List <VerseText>()
                            };
                            chapter.Verses.Add(verse);
                        }
                        verse.Text.Add(verseText);
                    }
                });
            }
            return(books);
        }
Exemplo n.º 2
0
        public static VerseText Build(this VerseText verseText, string[] parts)
        {
            if (parts.Count().Equals(4) &&
                !string.IsNullOrWhiteSpace(parts[0]) &&
                Int32.TryParse(parts[1], out int chapter) &&
                Int32.TryParse(parts[2], out int verse) &&
                !string.IsNullOrWhiteSpace(parts[3]))
            {
            }

            return(verseText);
        }
Exemplo n.º 3
0
 internal void Index(Book book, Chapter chapter, Verse verse, VerseText text)
 {
     IndexText(verse.Id, text.Text);
 }