CheckParallelPassages::CheckParallelPassages(bool nt, const ustring & project, const vector < unsigned int >&books, bool includetext, bool gui,const ustring & project2) { // Language. extern Settings *settings; ustring language = settings->projectconfig(project, false)->language_get(); // Mapping. ustring versification = settings->projectconfig(project, false)->versification_get(); Mapping mapping(versification, 0); // Get a list of the books to check. If no books were given, take them all. vector < unsigned int >mybooks(books.begin(), books.end()); if (mybooks.empty()) mybooks = project_get_books(project); set < unsigned int >bookset(mybooks.begin(), mybooks.end()); // Get the parallel passages. OtNtParallels otntparallels(0); if (nt) otntparallels.readnt(); else otntparallels.readot(); // GUI. progresswindow = NULL; if (gui) { progresswindow = new ProgressWindow(_("Producing passages"), true); progresswindow->set_iterate(0, 1, otntparallels.sections.size()); } // Go through each section. for (unsigned int i = 0; i < otntparallels.sections.size(); i++) { if (gui) { progresswindow->iterate(); if (progresswindow->cancel) return; } OtNtParallelDataSection datasection(0); // Section's heading. datasection.title = otntparallels.sections[i].title; // Go through each set of references. for (unsigned int i2 = 0; i2 < otntparallels.sections[i].sets.size(); i2++) { // Go through the references in the set. OtNtParallelDataSet dataset(0); for (unsigned int i3 = 0; i3 < otntparallels.sections[i].sets[i2].references.size(); i3++) { // Skip if NT book is not to be included. if (bookset.find(otntparallels.sections[i].sets[i2].references[i3].book) == bookset.end()) continue; vector < int >remapped_chapter; vector < int >remapped_verse; mapping.book_change(otntparallels.sections[i].sets[i2].references[i3].book); mapping.original_to_me(otntparallels.sections[i].sets[i2].references[i3].chapter, otntparallels.sections[i].sets[i2].references[i3].verse, remapped_chapter, remapped_verse); Reference mapped_reference(otntparallels.sections[i].sets[i2].references[i3].book, remapped_chapter[0], convert_to_string(remapped_verse[0])); ustring verse = mapped_reference.human_readable(language); if (includetext) { verse.append(" "); verse.append(usfm_get_verse_text_only(project_retrieve_verse(project, mapped_reference.book, mapped_reference.chapter, mapped_reference.verse))); } dataset.data.push_back(verse); references.push_back(books_id_to_english(mapped_reference.book) + " " + convert_to_string(mapped_reference.chapter) + ":" + mapped_reference.verse); comments.push_back(_("Parallel")); } datasection.sets.push_back(dataset); //output verses of second project OtNtParallelDataSet dataset2(0); //TODO refactor this loop into a separate function if (project2!="") { ustring language2 = settings->projectconfig(project2, false)->language_get(); // Mapping. ustring versification2 = settings->projectconfig(project2, false)->versification_get(); Mapping mapping2(versification2, 0); for (unsigned int i3 = 0; i3 < otntparallels.sections[i].sets[i2].references.size(); i3++) { // Skip if NT book is not to be included. if (bookset.find(otntparallels.sections[i].sets[i2].references[i3].book) == bookset.end()) continue; vector < int >remapped_chapter; vector < int >remapped_verse; mapping2.book_change(otntparallels.sections[i].sets[i2].references[i3].book); mapping2.original_to_me(otntparallels.sections[i].sets[i2].references[i3].chapter, otntparallels.sections[i].sets[i2].references[i3].verse, remapped_chapter, remapped_verse); Reference mapped_reference(otntparallels.sections[i].sets[i2].references[i3].book, remapped_chapter[0], convert_to_string(remapped_verse[0])); ustring verse = mapped_reference.human_readable(language); if (includetext) { verse.append(" "); verse.append(usfm_get_verse_text_only(project_retrieve_verse(project2, mapped_reference.book, mapped_reference.chapter, mapped_reference.verse))); } dataset2.data.push_back(verse); references.push_back(books_id_to_english(mapped_reference.book) + " " + convert_to_string(mapped_reference.chapter) + ":" + mapped_reference.verse); comments.push_back(_("Parallel")); } datasection.sets.push_back(dataset2); } } data.push_back(datasection); } }
CheckParallelPassages::CheckParallelPassages(bool nt, const ustring & project, const vector < unsigned int >&books, bool includetext, bool gui,const ustring & project2) { // Language. extern Settings *settings; ustring language = settings->projectconfig(project, false)->language_get(); // Mapping. ustring versification = settings->projectconfig(project, false)->versification_get(); Mapping mapping(versification, 0); // Get a list of the books to check. If no books were given, take them all. vector < unsigned int >mybooks(books.begin(), books.end()); if (mybooks.empty()) { mybooks = project_get_books(project); } set < unsigned int >bookset(mybooks.begin(), mybooks.end()); // Get the parallel passages. OtNtParallels otntparallels(0); if (nt) { otntparallels.readnt(); } else { otntparallels.readot(); } // GUI. progresswindow = NULL; if (gui) { progresswindow = new ProgressWindow(_("Producing passages"), true); progresswindow->set_iterate(0, 1, otntparallels.sections.size()); } // Go through each section. for (unsigned int i = 0; i < otntparallels.sections.size(); i++) { if (gui) { progresswindow->iterate(); if (progresswindow->cancel) return; } OtNtParallelDataSection datasection(0); // Section's heading. datasection.title = otntparallels.sections[i].title; // Go through each set of references. for (unsigned int i2 = 0; i2 < otntparallels.sections[i].sets.size(); i2++) { // Go through the references in the set. OtNtParallelDataSet dataset(0); for (unsigned int i3 = 0; i3 < otntparallels.sections[i].sets[i2].references.size(); i3++) { // Skip if NT book is not to be included. if (bookset.find(otntparallels.sections[i].sets[i2].references[i3].book_get()) == bookset.end()) { continue; } vector < int >remapped_chapter; vector < int >remapped_verse; mapping.book_change(otntparallels.sections[i].sets[i2].references[i3].book_get()); mapping.original_to_me(otntparallels.sections[i].sets[i2].references[i3].chapter_get(), otntparallels.sections[i].sets[i2].references[i3].verse_get(), remapped_chapter, remapped_verse); ustring verse; // The verse can have a range, like Matthew 3:1-2, and we have to handle all verses in that range. // Prior to 5/23/2016, all that was used was remapped_verse[0], which destroyed any other verses in the range. for (unsigned int i4 = 0; i4 < remapped_verse.size(); i4++) { Reference mapped_reference(otntparallels.sections[i].sets[i2].references[i3].book_get(), remapped_chapter[0], convert_to_string(remapped_verse[i4])); if (i4 > 0) { // For the second verse and beyond, we need to put an extra space and handle the verse number specially. verse.append(" [" + mapped_reference.verse_get() + "]"); } else { verse.append(mapped_reference.human_readable(language)); } if (includetext) { verse.append(" "); verse.append(usfm_get_verse_text_only(project_retrieve_verse(project, mapped_reference.book_get(), mapped_reference.chapter_get(), mapped_reference.verse_get()))); } } dataset.data.push_back(verse); // references.push_back(books_id_to_localname(mapped_reference.book_get()) + " " + convert_to_string(mapped_reference.chapter_get()) + ":" + mapped_reference.verse_get()); references.push_back(books_id_to_localname(otntparallels.sections[i].sets[i2].references[i3].book_get()) + " " + convert_to_string(otntparallels.sections[i].sets[i2].references[i3].chapter_get()) + ":" + otntparallels.sections[i].sets[i2].references[i3].verse_get()); comments.push_back(_("Parallel")); } datasection.sets.push_back(dataset); //output verses of second project OtNtParallelDataSet dataset2(0); //TODO refactor this loop into a separate function if (project2!="") { ustring language2 = settings->projectconfig(project2, false)->language_get(); // Mapping. ustring versification2 = settings->projectconfig(project2, false)->versification_get(); Mapping mapping2(versification2, 0); for (unsigned int i3 = 0; i3 < otntparallels.sections[i].sets[i2].references.size(); i3++) { // Skip if NT book is not to be included. if (bookset.find(otntparallels.sections[i].sets[i2].references[i3].book_get()) == bookset.end()) continue; vector < int >remapped_chapter; vector < int >remapped_verse; mapping2.book_change(otntparallels.sections[i].sets[i2].references[i3].book_get()); mapping2.original_to_me(otntparallels.sections[i].sets[i2].references[i3].chapter_get(), otntparallels.sections[i].sets[i2].references[i3].verse_get(), remapped_chapter, remapped_verse); Reference mapped_reference(otntparallels.sections[i].sets[i2].references[i3].book_get(), remapped_chapter[0], convert_to_string(remapped_verse[0])); ustring verse = mapped_reference.human_readable(language); if (includetext) { verse.append(" "); verse.append(usfm_get_verse_text_only(project_retrieve_verse(project2, mapped_reference.book_get(), mapped_reference.chapter_get(), mapped_reference.verse_get()))); } dataset2.data.push_back(verse); references.push_back(books_id_to_localname(mapped_reference.book_get()) + " " + convert_to_string(mapped_reference.chapter_get()) + ":" + mapped_reference.verse_get()); comments.push_back(_("Parallel")); } datasection.sets.push_back(dataset2); } } data.push_back(datasection); } }