void ReadTranslation(string translationFilePath) { var doc = XDocument.Load(File.OpenRead(translationFilePath)); var quranNode = doc.Document.Root; string translatorCode = quranNode.Element("translatorCode").Value; string translatorName = quranNode.Element("translatorName").Value; foreach (XElement chapterNode in quranNode.Descendants("chapter")) { int chapterIndex = int.Parse(chapterNode.Attribute("index").Value); foreach (XElement verseNode in chapterNode.Descendants("verse")) { int verseIndex = int.Parse(verseNode.Attribute("index").Value); var verseReference = new VerseReference( chapter: chapterIndex, verse: verseIndex ); var verseTranslation = new VerseTranslation( translatorCode: translatorCode, translatorName: translatorName, text: verseNode.Value ); AddTranslation(verseReference, verseTranslation); } } }
public CorpusVerse( VerseReference reference, string arabicText) { this.Reference = reference; this.ArabicText = arabicText; this.WordsByIndex = new Dictionary <int, CorpusVerseWord>(); }
void AddTranslation( VerseReference verseReference, VerseTranslation verseTranslation) { var verse = Document[verseReference.Chapter, verseReference.Verse]; verse.AddTranslation(verseTranslation); }
public Verse GetVerse(VerseReference verseReference) { var verseRangeReference = new VerseRangeReference( chapter: verseReference.Chapter, firstVerse: verseReference.Verse, lastVerse: verseReference.Verse); return(GetVerses(new VerseRangeReference[] { verseRangeReference }).Single()); }
public CorpusVerse this[int chapterIndex, int verseIndex] { get { var verseReference = new VerseReference( chapter: chapterIndex, verse: verseIndex ); return(_verses[verseReference]); } }
public TafsirComment CommentaryForVerse(int chapterIndex, int verseIndex) { TafsirComment commentary; var reference = new VerseReference( chapter: chapterIndex, verse: verseIndex ); CommentsByVerse.TryGetValue(reference, out commentary); return(commentary); }
public Verse( int chapterNumber, int verseNumber, int rootWordCount, int hadithCount, int commentaryCount, IEnumerable <VerseText> verseTexts) { Id = VerseReference.GetIndexValue(chapterNumber, verseNumber); ChapterNumber = chapterNumber; VerseNumber = verseNumber; RootWordCount = rootWordCount; HadithCount = hadithCount; CommentaryCount = commentaryCount; VerseTexts = verseTexts.ToList().AsReadOnly(); }
public IEnumerable <Hadith> GetHadithsForVerse( int chapterIndex, int verseIndex) { List <Hadith> result; var verseReference = new VerseReference( chapter: chapterIndex, verse: verseIndex ); if (!HadithsByVerse.TryGetValue(verseReference, out result)) { return(new List <Hadith>()); } return(result.OrderBy(x => x.PrimaryReference)); }
public void AddComment(TafsirComment comment) { _Comments.Add(comment); FindCommentariesByChapterEntry(chapter: comment.VerseReference.Chapter, createIfNotExists: true).Add(comment); for (int verseIndex = comment.VerseReference.FirstVerse; verseIndex <= comment.VerseReference.LastVerse; verseIndex++) { var verseReference = new VerseReference( chapter: comment.VerseReference.Chapter, verse: verseIndex ); if (CommentsByVerse.ContainsKey(verseReference)) { Console.WriteLine("Duplicate {0} {1}", this.Code, verseReference); } CommentsByVerse[verseReference] = comment; } }
void ReadVerse(Tuple <int, XElement> verse) { int chapterIndex = verse.Item1; XElement verseNode = verse.Item2; int verseIndex = int.Parse(verseNode.Attribute("index").Value); string arabicText = verseNode.Element("arabicText").Value; var reference = new VerseReference( chapter: verse.Item1, verse: verseIndex ); var corpusVerse = new CorpusVerse( reference: reference, arabicText: arabicText ); Document.AddVerse(corpusVerse); ReadVerseWords(verseNode, corpusVerse); }
public ActionResult Index(int chapterNumber, int verseNumber) { if (!QuranStructure.TryValidateChapterAndVerse(chapterNumber, verseNumber)) { return(HttpNotFound()); } Chapter chapter = ChapterRepository.Get(chapterNumber); var verseReference = new VerseReference(chapterNumber, verseNumber); IEnumerable <Persistence.Models.Hadith> hadiths = HadithRepository.GetForVerse(verseReference) .OrderBy(x => x.References[0]); IEnumerable <HadithViewModel> hadithViewModels = HadithViewModelFactory.Create(hadiths); var viewModel = new ViewModel( chapter: chapter, verseNumber: verseNumber, hadiths: hadithViewModels); return(View("VerseHadiths", viewModel)); }
void AddHadithToIndividualVerses(Hadith hadith) { foreach (var verseRangeReference in hadith.VerseReferences) { for (int verseIndex = verseRangeReference.FirstVerse; verseIndex <= verseRangeReference.LastVerse; verseIndex++ ) { List <Hadith> hadiths; var verseReference = new VerseReference( chapter: verseRangeReference.Chapter, verse: verseIndex ); if (!HadithsByVerse.TryGetValue(verseReference, out hadiths)) { hadiths = new List <Hadith>(); HadithsByVerse[verseReference] = hadiths; } hadiths.Add(hadith); } } }