コード例 #1
0
        public static string GetPartialBibleHash()
        {
            var     k                  = new KJV();
            string  myTest             = k.b[1];
            string  myHi               = k.b[2];
            bool    f7000              = false;
            bool    f8000              = false;
            bool    f9000              = false;
            bool    fTitheBlocksActive = false;
            int     nTime              = 3;
            int     nPrevTime          = 2;
            int     nPrevHeight        = 1;
            int     nNonce             = 10;
            var     cBible             = new BibleHash();
            bool    bMining            = true;
            string  sMGP               = cBible.GetMd5String("1234");
            uint256 inHash             = new uint256("0000000000000000000000000000000000000000000000000000000000001234");
            uint256 uBibleHash         = cBible.GetBibleHash(inHash, nTime, nPrevTime, bMining, nPrevHeight, f7000, f8000, f9000, fTitheBlocksActive, nNonce);
            string  sBiblePay          = "biblepay";
            string  sSha               = cBible.GetSha256String(sBiblePay);

            return(sSha);
        }
コード例 #2
0
        public void ParseBooks(GreekDictionary dictionary, KJV.KJVBible kjv, Web.WebBible web)
        {
            var json = new StringBuilder("booksGlobal = {");

            if (!Directory.Exists(@"..\..\output"))
                Directory.CreateDirectory(@"..\..\output");

            var lookup = new Dictionary<string, int>();

            foreach(var ww in dictionary.Words)
            {
                var key = Hash(ww.Greek);
                if(!lookup.ContainsKey(key))
                    lookup.Add(key, ww.StrongNumber);
            }

            sblgnt sblgntParsed = null;

            var sblgntLines = File.ReadAllLines(@"sblgnt.xml");
            int index = 0;

            foreach (var f in new DirectoryInfo("xml").GetFiles())
            {
                int wordNum = 0;
                var placeLookup = new Dictionary<int, int>();
                var placeLookup2 = new Dictionary<int, string>();
                var lines = File.ReadAllLines(f.FullName);

                var sentences = new List<GreekParser.TheirObjects.Sentence>();
                GreekParser.TheirObjects.Sentence current = null;

                foreach (var line in lines)
                {
                    if (!string.IsNullOrWhiteSpace(line))
                    {
                        if (line.ToLower().Contains("<sentence") && !line.ToLower().Contains("<sentences"))
                        {
                            // <Sentence ID = "Jhn1:1:1-1:1:17">
                            var sentenceStr = line + " </Sentence>";
                            using (var stream = new StringReader(sentenceStr))
                            {
                                var serializer = new XmlSerializer(typeof(GreekParser.TheirObjects.Sentence));
                                var sentence = serializer.Deserialize(stream) as GreekParser.TheirObjects.Sentence;

                                sentences.Add(sentence);
                                current = sentence;
                            }
                        }
                        if (line.ToLower().Contains("<node") && line.ToLower().Contains("</node>") && current != null)
                        {
                            // <Node Cat="noun" Start="7" End="7" StrongNumber="3056" UnicodeLemma="λόγος" Gender="Masculine" Number="Singular" FunctionalTag="N-NSM" Type="Common" morphId="43001001008" NormalizedForm="Λόγος" Case="Nominative" Unicode="Λόγος" FormalTag="N-NSM" nodeId="430010010080010">Λόγος</Node>
                            using (var stream = new StringReader(line))
                            {
                                var serializer = new XmlSerializer(typeof(GreekParser.TheirObjects.Node));
                                var node = serializer.Deserialize(stream) as GreekParser.TheirObjects.Node;

                                var start = line.IndexOf(">");
                                var end = line.IndexOf("<", start);

                                var sub = line.Substring(start + 1, end - start - 1);
                                node.Value = sub;

                                current.AddNode(node);

                                var word = Hash(node.Value);
                                if (!lookup.ContainsKey(word))
                                    lookup.Add(word, node.StrongNumber);

                                placeLookup.Add(wordNum, node.StrongNumber);

                                placeLookup2.Add(wordNum, node.Value);
                                wordNum++;
                            }
                        }
                    }
                }

                int number = 0;
                var splits = f.Name.Split('-');
                if (splits.Length > 0)
                {
                    int.TryParse(splits.First(), out number);
                }

                var bookname = f.Name.Substring(2).Replace(".xml", "").Replace("-", "");

                if (Char.IsNumber(bookname[0]))
                {
                    bookname = bookname[0] + " " + UppercaseFirst(bookname.Substring(1));
                }
                else
                {
                    bookname = UppercaseFirst(bookname);
                }

                MyObjects.Book book = new MyObjects.Book()
                {
                    BookNameEnglish = bookname
                };

                MyObjects.Chapter chapter = null;
                MyObjects.Verse verse = null;

                List<MyObjects.Chapter> chapters = new List<MyObjects.Chapter>();
                List<MyObjects.Verse> verses = new List<MyObjects.Verse>();
                List<MyObjects.Word> words = new List<MyObjects.Word>();

                MyObjects.Word lastWord = null;
                string prefix = null;

                var done = false;
                int notFoundCnt = 0;

                wordNum = 0;
                var lastLine = "";
                while(index < sblgntLines.Length && !done)
                {
                    var line = sblgntLines[index];

                    if (line.Contains("<book"))
                    {
                        var idStr = line.Replace("<book id=\"", "").Replace("\">", "").Trim();
                        Console.WriteLine(idStr);
                    }
                    else if (line.Contains("<title"))
                    {
                        var title = line.Replace("<title>", "").Replace("</title>", "").Trim();
                        book.GreekName = title;
                    }
                    else if (line.Contains("<verse-number"))
                    {
                        // finish sentence
                        if (verse != null)
                        {
                            verse.Words = words.ToArray();

                            // end of verse.
                            words.Clear();
                            verse = null;
                        }

                        int verseNumber = 0, chapterNumber = 0;
                        ParseForVerseAndChapter(line, out verseNumber, out chapterNumber);

                        if (chapter == null || chapter.Id != chapterNumber)
                        {
                            if (verses != null && chapter != null)
                            {
                                chapter.Verses = verses.ToArray();
                                verses.Clear();
                            }
                            chapter = new MyObjects.Chapter()
                            {
                                Id = chapterNumber
                            };
                            chapters.Add(chapter);
                        }

                        verse = new MyObjects.Verse()
                        {
                            Id = verseNumber.ToString(),
                        };
                        verses.Add(verse);

                    }
                    else if (line.Contains("</p>"))
                    {
                        words.Add(new MyObjects.Word() { Greek = "<br />" });
                    }
                    else if (line.Contains("<w>"))
                    {
                        var w = new MyObjects.Word()
                        {
                            Greek = line.Replace("<w>", "").Replace("</w>", "").Trim(),
                            Prefix = prefix
                        };
                        prefix = null;

                        var key = Hash(w.Greek);
                        if (lookup.ContainsKey(key))
                        {
                            w.StrongNumber = lookup[key];
                        }
                        else
                        {
                            if (placeLookup.ContainsKey(wordNum))
                            {
                                w.StrongNumber = placeLookup[wordNum];
                                var word = placeLookup2[wordNum];
                                lookup.Add(key, w.StrongNumber);

                                //var a1 = RemoveDiacritics2(key);
                                //var b1 = RemoveDiacritics2(word);

                                //Console.WriteLine(a1 + " = " + b1 + (a1 == b1).ToString());

                                //if (a1 != b1)
                                //{
                                //    var a2 = UTF8Encoding.UTF8.GetBytes(a1);
                                //    var b2 = UTF8Encoding.UTF8.GetBytes(b1);

                                //    for(int z = 0; z < a2.Length; z++)
                                //    {
                                //        var a3 = a2[z];
                                //        if (z < b2.Length)
                                //        {
                                //            var b3 = b2[z];

                                //            Console.WriteLine(a3 == b3);
                                //        }
                                //    }
                                //}
                            }
                            else
                            {
                                lookup.Add(key, 0);
                                Console.WriteLine("couldn't find key " + w.Greek);
                                notFoundCnt++;
                            }
                        }
                        words.Add(w);
                        wordNum++;
                        lastWord = w;
                    }
                    else if (line.Contains("<prefix>"))
                    {
                        var p = line.Replace("<prefix>", "").Replace("</prefix>", "").Trim();
                        if (!string.IsNullOrWhiteSpace(p))
                        {
                            prefix = p;
                        }
                    }
                    else if (line.Contains("<suffix>"))
                    {
                        var suffix = line.Replace("<suffix>", "").Replace("</suffix>", "").Trim();
                        if (!string.IsNullOrWhiteSpace(suffix))
                        {
                            lastWord.Suffix = suffix;
                        }
                    }
                    else if (line.Contains("</book>"))
                    {
                        verse.Words = words.ToArray();

                        // end of verse.
                        words.Clear();
                        verse = null;

                        chapter.Verses = verses.ToArray();
                        book.Chapters = chapters.ToArray();
                        done = true;
                    }

                    index++;
                    lastLine = line;
                }

                Console.WriteLine("processing book: " + bookname);

                //var convertEngine = new GNTConvertEngine();

                var fileGenEngine = new GNTFileGenerationEngine();
                fileGenEngine.GenerateFiles(book, @"..\..\output\" + f.Name, dictionary);

                var verseGenEngine = new VerseGenerationEngine();
                verseGenEngine.GenerateVerses(book, @"..\..\output\verses", f.Name, kjv, web);

                Console.WriteLine(sentences.Count);

                json.AppendLine(number.ToString() + ": ");
                json.AppendLine("{");

                json.AppendLine("  number: \"" + number + "\",");
                json.AppendLine("  key: \"" + f.Name + "\",");
                json.AppendLine("  display: \"" + bookname + "\",");
                json.AppendLine("  chapters: {");

                foreach (var c in book.Chapters)
                {
                    json.AppendLine("    " + c.Id + ": ");
                    json.AppendLine("    {");
                    json.AppendLine("    number: " + c.Id + ", template: \"" + f.Name + "." + c.Id + ".html\"");
                    json.AppendLine("    },");
                }

                json.AppendLine("  }");

                json.AppendLine("}, ");
            }
            json.AppendLine("}");

            File.WriteAllText(@"..\..\output\book.js", json.ToString());
        }
コード例 #3
0
        public void GenerateVerses(MyObjects.Book book, string outputDir, string baseFileName, KJV.KJVBible kjv, Web.WebBible web)
        {
            if (!Directory.Exists(outputDir))
                Directory.CreateDirectory(outputDir);

            foreach(var chapter in book.Chapters)
            {
                var sb = new StringBuilder();

                sb.AppendLine("<div ng-switch on=\"verseNumber\">");

                foreach(var verse in chapter.Verses)
                {
                    sb.AppendLine("<div ng-switch-when=\"" + verse.Id + "\" >");

                    sb.AppendLine("<div>Greek</div>");
                    sb.AppendLine("<div>");
                    var text = string.Empty;

                    foreach(var w in verse.Words)
                    {
                        text = text += "<span>" + w.Greek + "</span> ";
                    }

                    sb.AppendLine(text);
                    sb.AppendLine("</div>");

                    // Web Verse
                    if (web != null && web.Books.ContainsKey(book.Id))
                    {
                        var webBook = web.Books[book.Id];
                        if (webBook != null && webBook.Chapters.ContainsKey(chapter.Id))
                        {
                            var webChapter = webBook.Chapters[chapter.Id];
                            if (webChapter != null && webChapter.Verses.ContainsKey(verse.Id))
                            {
                                var webVerse = webChapter.Verses[verse.Id];
                                if (webVerse != null)
                                {
                                    sb.AppendLine("<br />");
                                    sb.AppendLine("<div>World English Bible</div>");
                                    sb.AppendLine("<div>");
                                    sb.AppendLine(webVerse.Text);
                                    sb.AppendLine("</div>");
                                }
                            }
                        }
                    }

                    // King James Verse
                    if (kjv != null && kjv.Books.ContainsKey(book.Id))
                    {
                        var kjvBook = kjv.Books[book.Id];
                        if (kjvBook != null && kjvBook.Chapters.ContainsKey(chapter.Id))
                        {
                            var kjvChapter = kjvBook.Chapters[chapter.Id];
                            if (kjvChapter != null && kjvChapter.Verses.ContainsKey(verse.Id))
                            {
                                var kjvVerse = kjvChapter.Verses[verse.Id];
                                if (kjvVerse != null)
                                {
                                    sb.AppendLine("<br />");
                                    sb.AppendLine("<div>King James Version</div>");
                                    sb.AppendLine("<div>");
                                    sb.AppendLine(kjvVerse.Text);
                                    sb.AppendLine("</div>");
                                }
                            }
                        }
                    }

                    sb.AppendLine("</div>");
                }

                sb.AppendLine("<div ng-switch-default>");
                sb.AppendLine("No verse found");
                sb.AppendLine("</div>");

                sb.AppendLine("</div>");

                sb.AppendLine("<br />");

                File.WriteAllText(Path.Combine(outputDir, baseFileName + "." + chapter.Id + ".html"), sb.ToString());
            }
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: chadmichel/GreekParser
 private static void ParseBooks(GreekDictionary dictionary, KJV.KJVBible kjv, Web.WebBible web)
 {
     var manager = new GNTParseManager();
     manager.ParseBooks(dictionary, kjv, web);
 }