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); }
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()); }
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()); } }
private static void ParseBooks(GreekDictionary dictionary, KJV.KJVBible kjv, Web.WebBible web) { var manager = new GNTParseManager(); manager.ParseBooks(dictionary, kjv, web); }