Search in sources :

Example 1 with Verse

use of biblemulticonverter.data.Verse in project BibleMultiConverter by schierlm.

the class LogosHTML method exportChapter.

protected void exportChapter(String milestone, String cname, Chapter chapter, String versemap, VersificationScheme scheme, String verseSeparator, boolean noChapterHeadings, BufferedWriter bw, StringWriter footnotes, Book book, BitSet[] chapterVerses, BitSet thisChapterVerses) throws IOException {
    String chapterRef = "@" + formatMilestone(milestone, cname, "");
    boolean writeChapterNumber = false;
    int usedHeadlines = 2;
    if (book.getChapters().size() > 1) {
        if (noChapterHeadings) {
            writeChapterNumber = true;
        } else {
            usedHeadlines = 3;
            bw.write("<h3>[[" + chapterRef + "]]{{~ " + book.getAbbr() + " " + cname + " }}</h3>\n");
        }
    }
    footnoteNumber = 0;
    if (chapter.getProlog() != null) {
        chapter.getProlog().accept(new LogosVisitor(bw, "", footnotes, book.getId().isNT(), versemap, scheme, null, null, null, usedHeadlines));
        bw.write("\n<br/>\n");
    }
    for (VerseRange vr : chapter.createVerseRanges()) {
        String versePrefix = "", versePrefixBeforeHeadline = "", versePrefixAfterHeadline = "";
        if (writeChapterNumber) {
            versePrefix = "<b style=\"font-size: 20pt\">[[" + chapterRef + "]]" + cname + "</b>" + verseSeparator;
            versePrefixBeforeHeadline = "[[" + chapterRef + "]]";
            versePrefixAfterHeadline = "<b style=\"font-size: 20pt\">" + cname + "</b>" + verseSeparator;
            writeChapterNumber = false;
        }
        BitSet allowedVerses = thisChapterVerses;
        String vcname = cname;
        if (vr.getChapter() != 0) {
            allowedVerses = chapterVerses != null && vr.getChapter() <= chapterVerses.length ? chapterVerses[vr.getChapter() - 1] : null;
            vcname = "" + vr.getChapter();
        }
        boolean printMilestone = allowedVerses != null && !allowedVerses.isEmpty();
        if (printMilestone) {
            int minVerse = vr.getMinVerse(), maxVerse = vr.getMaxVerse();
            while (maxVerse >= minVerse && !allowedVerses.get(maxVerse)) maxVerse--;
            while (minVerse <= maxVerse && !allowedVerses.get(minVerse)) minVerse++;
            String verseMilestone = "";
            if (minVerse == maxVerse) {
                if (minVerse >= 1000 && minVerse < 1000 + NAMED_VERSES.length) {
                    verseMilestone += "[[@" + formatMilestone(milestone, vcname, NAMED_VERSES[minVerse - 1000]) + "]]";
                } else {
                    verseMilestone += "[[@" + formatMilestone(milestone, vcname, "" + minVerse) + "]]";
                }
            } else if (minVerse < maxVerse) {
                verseMilestone += "[[@" + formatMilestone(milestone, vcname, minVerse + "-" + maxVerse) + "]]";
            }
            versePrefix += verseMilestone;
            if (versePrefixBeforeHeadline.endsWith("]]") && verseMilestone.startsWith("[[@"))
                versePrefixBeforeHeadline += "\uFEFF";
            versePrefixBeforeHeadline += verseMilestone;
        }
        for (Verse v : vr.getVerses()) {
            bw.write(verseSeparator);
            String verseNumber = "<b>" + v.getNumber() + "</b> ";
            v.accept(new LogosVisitor(bw, "", footnotes, book.getId().isNT(), versemap, scheme, versePrefix + verseNumber, versePrefixBeforeHeadline, versePrefixAfterHeadline + verseNumber, usedHeadlines));
            versePrefix = "";
            versePrefixBeforeHeadline = "";
            versePrefixAfterHeadline = "";
            bw.write("\n");
        }
    }
}
Also used : VerseRange(biblemulticonverter.data.VerseRange) BitSet(java.util.BitSet) Verse(biblemulticonverter.data.Verse)

Example 2 with Verse

use of biblemulticonverter.data.Verse in project BibleMultiConverter by schierlm.

the class LogosRenumberedDiffable method doExport.

@Override
public void doExport(Bible bible, String... exportArgs) throws Exception {
    String outputFile = exportArgs[0];
    VersificationScheme scheme = null;
    if (exportArgs.length == 2) {
        if (!exportArgs[1].matches("Bible[A-Z0-9]*")) {
            System.out.println("Invalid versification: " + exportArgs[1]);
            return;
        }
        scheme = new LogosVersificationDetector().loadScheme(exportArgs[1]);
        if (scheme == null) {
            System.out.println("Invalid versification: " + exportArgs[1]);
            return;
        }
    }
    for (Book book : bible.getBooks()) {
        int cnumber = 0;
        for (Chapter chap : book.getChapters()) {
            cnumber++;
            if (chap.getProlog() != null) {
                FormattedText newProlog = new FormattedText();
                chap.getProlog().accept(new MapXrefVisitor(newProlog.getAppendVisitor(), scheme));
                newProlog.finished();
                chap.setProlog(newProlog);
            }
            for (int j = 0; j < chap.getVerses().size(); j++) {
                Verse v = chap.getVerses().get(j);
                Verse nv = new Verse(mapVerse(book.getAbbr(), book.getId(), cnumber, v.getNumber(), scheme, ""));
                v.accept(new MapXrefVisitor(nv.getAppendVisitor(), scheme));
                nv.finished();
                chap.getVerses().set(j, nv);
            }
        }
    }
    new Diffable().doExport(bible, new String[] { outputFile });
}
Also used : Book(biblemulticonverter.data.Book) Chapter(biblemulticonverter.data.Chapter) Diffable(biblemulticonverter.format.Diffable) VersificationScheme(biblemulticonverter.tools.AbstractVersificationDetector.VersificationScheme) FormattedText(biblemulticonverter.data.FormattedText) Verse(biblemulticonverter.data.Verse) LogosVersificationDetector(biblemulticonverter.logos.tools.LogosVersificationDetector)

Example 3 with Verse

use of biblemulticonverter.data.Verse in project BibleMultiConverter by schierlm.

the class StrippedDiffable method extractPrologs.

private void extractPrologs(Bible bible) {
    for (Book book : bible.getBooks()) {
        for (Chapter chapter : book.getChapters()) {
            chapter.getVerses().clear();
            if (chapter.getProlog() != null) {
                Verse prologVerse = new Verse("1");
                chapter.getProlog().accept(prologVerse.getAppendVisitor());
                chapter.getVerses().add(prologVerse);
                chapter.setProlog(null);
            }
        }
    }
}
Also used : Book(biblemulticonverter.data.Book) Chapter(biblemulticonverter.data.Chapter) Verse(biblemulticonverter.data.Verse)

Example 4 with Verse

use of biblemulticonverter.data.Verse in project BibleMultiConverter by schierlm.

the class StrippedDiffable method extractFootnotes.

private void extractFootnotes(Bible bible) {
    for (Book book : bible.getBooks()) {
        for (Chapter chapter : book.getChapters()) {
            chapter.getVerses().clear();
            if (chapter.getProlog() != null) {
                chapter.setProlog(extractFootnotes(chapter.getProlog()));
            }
            List<Verse> verses = chapter.getVerses();
            for (int i = 0; i < verses.size(); i++) {
                Verse v = verses.get(i);
                FormattedText extracted = extractFootnotes(v);
                if (extracted == null) {
                    verses.remove(i);
                    i--;
                } else {
                    Verse vv = new Verse(v.getNumber());
                    extracted.accept(vv.getAppendVisitor());
                    verses.set(i, vv);
                }
            }
        }
    }
}
Also used : Book(biblemulticonverter.data.Book) Chapter(biblemulticonverter.data.Chapter) FormattedText(biblemulticonverter.data.FormattedText) Verse(biblemulticonverter.data.Verse)

Example 5 with Verse

use of biblemulticonverter.data.Verse in project BibleMultiConverter by schierlm.

the class StrippedDiffable method renameBookInXref.

protected void renameBookInXref(Bible bible, String oldName, String newName, boolean setFinished) {
    for (Book book : bible.getBooks()) {
        for (Chapter chap : book.getChapters()) {
            if (chap.getProlog() != null) {
                FormattedText newProlog = new FormattedText();
                chap.getProlog().accept(new RenameXrefVisitor(newProlog.getAppendVisitor(), oldName, newName));
                if (setFinished)
                    newProlog.finished();
                chap.setProlog(newProlog);
            }
            for (int j = 0; j < chap.getVerses().size(); j++) {
                Verse v = chap.getVerses().get(j);
                Verse nv = new Verse(v.getNumber());
                v.accept(new RenameXrefVisitor(nv.getAppendVisitor(), oldName, newName));
                if (setFinished)
                    nv.finished();
                chap.getVerses().set(j, nv);
            }
        }
    }
}
Also used : Book(biblemulticonverter.data.Book) Chapter(biblemulticonverter.data.Chapter) FormattedText(biblemulticonverter.data.FormattedText) Verse(biblemulticonverter.data.Verse)

Aggregations

Verse (biblemulticonverter.data.Verse)61 Book (biblemulticonverter.data.Book)57 Chapter (biblemulticonverter.data.Chapter)57 VirtualVerse (biblemulticonverter.data.VirtualVerse)27 FormattedText (biblemulticonverter.data.FormattedText)24 Headline (biblemulticonverter.data.FormattedText.Headline)21 MetadataBook (biblemulticonverter.data.MetadataBook)20 BookID (biblemulticonverter.data.BookID)19 File (java.io.File)19 ArrayList (java.util.ArrayList)18 Bible (biblemulticonverter.data.Bible)16 BufferedWriter (java.io.BufferedWriter)15 IOException (java.io.IOException)14 FileOutputStream (java.io.FileOutputStream)13 OutputStreamWriter (java.io.OutputStreamWriter)12 EnumMap (java.util.EnumMap)9 BufferedReader (java.io.BufferedReader)8 FileInputStream (java.io.FileInputStream)8 HashMap (java.util.HashMap)8 HashSet (java.util.HashSet)8