Search in sources :

Example 61 with Verse

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

the class Accordance method doExport.

@Override
public void doExport(Bible bible, String... exportArgs) throws Exception {
    boolean paraMarker = false;
    for (Book book : bible.getBooks()) {
        if (!BOOK_NAME_MAP.containsKey(book.getId())) {
            continue;
        }
        for (Chapter chapter : book.getChapters()) {
            for (Verse v : chapter.getVerses()) {
                if (v.getElementTypes(Integer.MAX_VALUE).contains("b")) {
                    paraMarker = true;
                    break;
                }
            }
            if (paraMarker)
                break;
        }
        if (paraMarker)
            break;
    }
    File mainFile = new File(exportArgs[0] + ".txt");
    try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(mainFile), StandardCharsets.UTF_8));
        BufferedWriter bnw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(exportArgs[0] + "-booknames.txt"), StandardCharsets.UTF_8))) {
        for (Book book : bible.getBooks()) {
            String bookName = BOOK_NAME_MAP.get(book.getId());
            if (bookName == null) {
                System.out.println("WARNING: Skipping book " + book.getAbbr());
                continue;
            }
            bnw.write(bookName + "\t" + book.getAbbr() + "\n");
            bw.write(bookName + " ");
            int cnumber = 0;
            for (Chapter chapter : book.getChapters()) {
                cnumber++;
                bw.write(cnumber + ":");
                List<VirtualVerse> vvs = chapter.createVirtualVerses();
                if (vvs.isEmpty()) {
                    bw.write("1 " + (paraMarker ? "¶" : "") + "\n");
                    paraMarker = false;
                }
                for (VirtualVerse vv : vvs) {
                    bw.write(vv.getNumber() + " " + (paraMarker ? "¶ " : ""));
                    paraMarker = false;
                    StringBuilder sb = new StringBuilder();
                    for (Verse v : vv.getVerses()) {
                        if (!v.getNumber().equals("" + vv.getNumber())) {
                            sb.append(" <b>(" + v.getNumber() + ")</b> ");
                        }
                        v.accept(new AccordanceVisitor(sb));
                    }
                    String verseText = sb.toString().replaceAll("  +", " ").trim();
                    if (verseText.endsWith(" ¶")) {
                        verseText = verseText.substring(0, verseText.length() - 2);
                        paraMarker = true;
                    }
                    bw.write(verseText + "\n");
                }
            }
        }
    }
    if (mainFile.length() > 0) {
        try (RandomAccessFile raf = new RandomAccessFile(mainFile, "rw")) {
            raf.setLength(mainFile.length() - 1);
        }
    }
}
Also used : VirtualVerse(biblemulticonverter.data.VirtualVerse) Chapter(biblemulticonverter.data.Chapter) BufferedWriter(java.io.BufferedWriter) RandomAccessFile(java.io.RandomAccessFile) Book(biblemulticonverter.data.Book) FileOutputStream(java.io.FileOutputStream) OutputStreamWriter(java.io.OutputStreamWriter) RandomAccessFile(java.io.RandomAccessFile) File(java.io.File) VirtualVerse(biblemulticonverter.data.VirtualVerse) 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