コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
 public CorpusVerse(
     VerseReference reference,
     string arabicText)
 {
     this.Reference    = reference;
     this.ArabicText   = arabicText;
     this.WordsByIndex = new Dictionary <int, CorpusVerseWord>();
 }
コード例 #3
0
        void AddTranslation(
            VerseReference verseReference,
            VerseTranslation verseTranslation)
        {
            var verse = Document[verseReference.Chapter, verseReference.Verse];

            verse.AddTranslation(verseTranslation);
        }
コード例 #4
0
        public Verse GetVerse(VerseReference verseReference)
        {
            var verseRangeReference = new VerseRangeReference(
                chapter: verseReference.Chapter,
                firstVerse: verseReference.Verse,
                lastVerse: verseReference.Verse);

            return(GetVerses(new VerseRangeReference[] { verseRangeReference }).Single());
        }
コード例 #5
0
ファイル: CorpusDocument.cs プロジェクト: shahaab/QuranX
 public CorpusVerse this[int chapterIndex, int verseIndex]
 {
     get
     {
         var verseReference = new VerseReference(
             chapter: chapterIndex,
             verse: verseIndex
             );
         return(_verses[verseReference]);
     }
 }
コード例 #6
0
        public TafsirComment CommentaryForVerse(int chapterIndex, int verseIndex)
        {
            TafsirComment commentary;
            var           reference = new VerseReference(
                chapter: chapterIndex,
                verse: verseIndex
                );

            CommentsByVerse.TryGetValue(reference, out commentary);
            return(commentary);
        }
コード例 #7
0
 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();
 }
コード例 #8
0
ファイル: HadithCollection.cs プロジェクト: shahaab/QuranX
        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));
        }
コード例 #9
0
 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;
     }
 }
コード例 #10
0
        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);
        }
コード例 #11
0
        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));
        }
コード例 #12
0
ファイル: HadithCollection.cs プロジェクト: shahaab/QuranX
 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);
         }
     }
 }