Initial move from local location

This commit is contained in:
Henry Whitney 2019-02-18 14:52:30 -05:00
parent 00e551005e
commit eb34a2955b
47 changed files with 257386 additions and 1 deletions

View File

@ -0,0 +1,51 @@
use 5.12.0;
use File::Slurp;
use File::Find ;
use Cwd ;
use utf8;
#use open IN => ":utf8", OUT => ":utf8";
use open IO => ":utf8";
my ($pwd, $os, $d) = (cwd(), $^O, "\\");
if ($os eq "darwin" || $os eq "linux") {$d = "/"}
my $book;
my @bookList;
open LOG, ">Logs${d}log.log" or die "Logs${d}log.log: $!";
open (my $file, "<:utf8", "data${d}tW.work.NT.dat") or die "data${d}tW.work.NT.dat:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /^([^#][^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)$/) {
$book = "$1";
push @bookList, $book;
}
}
close $file;
say LOG "Removing old Extract.txt";
system `rm \"Temp${d}Extract.txt\"`;
say LOG "Building new Extract.txt";
open(OUT, ">:utf8", "Temp${d}Extract.txt") or die "$!: Temp${d}Extract.txt";
foreach $book (@bookList) {
say LOG "\$book: $book";
my $fileText = read_file("Temp${d}ULB_text.txt", binmode => 'utf8');
# While finds entries and Strong's numbers
while ($fileText =~ /$book [0-9]*:[0-9]*[^\n]*\n/g) {
say OUT $&;
}
}
close OUT;
close LOG;
say "Done."

View File

@ -0,0 +1,52 @@
use 5.12.0;
use File::Slurp;
use File::Find ;
use Cwd ;
use utf8;
#use open IN => ":utf8", OUT => ":utf8";
use open IO => ":utf8";
my ($pwd, $os, $d) = (cwd(), $^O, "\\");
if ($os eq "darwin" || $os eq "linux") {$d = "/"}
my $book;
my @bookList;
open LOG, ">Logs${d}log.log" or die "Logs${d}log.log: $!";
open (my $file, "<:utf8", "User${d}tW_work_OT.txt") or die "User${d}tW_work_OT.txt:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /^([^#][^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)$/) {
$book = "$1";
push @bookList, $book;
}
}
close $file;
say LOG "Removing old Extract.txt";
system `rm \"Temp${d}Extract.txt\"`;
say LOG "Building new Extract.txt";
say LOG "\@bookList: @bookList";
open(OUT, ">:utf8", "Temp${d}Extract.txt") or die "$!: Temp${d}Extract.txt";
foreach $book (@bookList) {
say LOG "\$book: $book";
my $fileText = read_file("Temp${d}ULB_text.txt", binmode => 'utf8');
# While finds entries and Strong's numbers
while ($fileText =~ /$book [0-9]*:[0-9]*[^\n]*\n/g) {
say OUT $&;
}
}
close OUT;
close LOG;
say "Done."

View File

@ -0,0 +1,65 @@
# Combines most recent ULB with KJV with codes.
use 5.12.0;
use Cwd;
my ($pwd, $os, $d) = (cwd(), $^O, "\\");
if ($os eq "darwin" || $os eq "linux") {$d = "/"}
# /Users/Henry/Documents/git.Door43/en_tw/ForPDF/FilesForUpdates/CombineULBandNASBwithCodes.pl
my ($ulb, $nasb) = ("Temp${d}ULB_text.txt", "Data${d}NASB_Strongs.txt");
my ($ref, $val, $textEditor);
my (%codes);
open LOG, ">:utf8", "Logs${d}log.log" or die;
open OUT, ">:utf8", "Temp${d}ULB_NASB_Strongs.txt" or die;
open (my $defaults, "<:utf8", "User${d}User_Defaults.txt") or die "User${d}User_Defaults.txt:\n$!";
while (my $thisLine = <$defaults>) {
chomp $thisLine;
if ($thisLine =~ /^Text editor: (.*)$/) {
say LOG "$thisLine";
$textEditor = $1;
}
}
say "\$textEditor: $textEditor";
die "No text editor found" if $textEditor eq "";
close $defaults;
open (my $file, "<:utf8", "$nasb") or die "$nasb:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /^([^\t]*)\t(.*)$/) {
($ref, $val) = ($1, $2);
$codes{$1} = $2;
}
}
open ($file, "<:utf8", "$ulb") or die "$ulb:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /^([^\t]*)\t(.*)$/) {
($ref, $val) = ($1, $2);
if (exists $codes{$ref}) {
say OUT "$ref\t$val\n $codes{$ref}"
}
}
}
close OUT;
say "Calling \$textEditor $textEditor";
if ($os eq "darwin") {
system ("open -a $textEditor $nasb");
} else {
system ("$textEditor $nasb");
}
close LOG;
print "\n\tDone\n\n\tOutput is in $nasb\n\n";

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
# Displays the results of the script that mines data for the Exceptions file.
use 5.12.0;
my $fileToSearch = $ARGV[0];
my $stringToSearch = $ARGV[1];
say "\$fileToSearch: $fileToSearch, \$stringToSearch: $stringToSearch"

View File

@ -0,0 +1,915 @@
# For cases where the script misses the match
# If the Strong's number is not relevant (e.g., in error), the destination page is "||"
# e.g.,
# Nahum 1:2 1167 ||
# Where a Strong's number that should be listed is not,
# e.g., because the UGNT places a verse division differently from the ULB,
# the missing page is called thus:
# Nahum 1:15 || 1319
# Where the script will link the wrong ULB word to the Strong's number
# Book C:V [TAB] [tW page] [proper ULB text]
# e.g.,
# Nahum 1:12 5674 pass away
Joel 1:1 3068 ||
Joel 1:2 3427 ||
Joel 1:3 5608 ||
Joel 1:3 312 ||
Joel 1:4 3499 ||
Joel 1:4 398 ||
Joel 1:5 8354 ||
Joel 1:5 6310 ||
Joel 1:6 4557 ||
Joel 1:7 7760 ||
Joel 1:8 1167 bridegroom
Joel 1:8 5271 ||
Joel 1:10 3001 ||
Joel 1:10 535 ||
Joel 1:12 6086 ||
Joel 1:12 120 ||
Joel 1:13 935 ||
Joel 1:13 3885 ||
Joel 1:14 3427 ||
Joel 1:15 7138 ||
Joel 1:15 3068 ||
Joel 1:15 935 ||
Joel 1:16 5869 ||
Joel 1:16 400 ||
Joel 1:17 2040 torn down
Joel 1:18 816 suffering
Joel 1:19 3852 ||
Joel 1:19 3857 ||
Joel 1:19 6086 ||
Joel 1:20 650 ||
Joel 2:1 3427 ||
Joel 2:1 3068 ||
Joel 2:1 7138 ||
Joel 2:2 6205 thick darkness
Joel 2:2 6099 mighty
Joel 2:2 3254 ||
Joel 2:2 8141 ||
Joel 2:3 6440 ||
Joel 2:3 310 ||
Joel 2:3 3852 ||
Joel 2:3 4057 wilderness
Joel 2:4 4758 appearance
Joel 2:5 7218 ||
Joel 2:5 6186 ||
Joel 2:6 6908 ||
Joel 2:7 5927 ||
Joel 2:7 1870 ||
Joel 2:8 251 ||
Joel 2:8 1397 ||
Joel 2:8 3212 ||
Joel 2:8 7973 ||
Joel 2:8 5307 ||
Joel 2:8 1214 ||
Joel 2:9 5892 ||
Joel 2:9 5927 ||
Joel 2:10 6440 ||
Joel 2:10 7493 tremble
Joel 2:10 6937 dark
Joel 2:10 622 ||
Joel 2:10 5051 ||
Joel 2:11 5414 ||
Joel 2:11 6440 ||
Joel 2:11 3966 ||
Joel 2:11 6213 ||
Joel 2:11 1697 commands
Joel 2:11 3117 ||
Joel 2:13 7451 inflicting punishment
Joel 2:14 7604 ||
Joel 2:14 310 ||
Joel 2:17 5414 ||
Joel 2:17 4910 ||
Joel 2:19 6030 ||
Joel 2:19 7646 ||
Joel 2:19 5414 ||
Joel 2:20 7368 ||
Joel 2:20 6440 ||
Joel 2:20 314 ||
Joel 2:22 6086 ||
Joel 2:22 5414 ||
Joel 2:23 5414 ||
Joel 2:23 3381 ||
Joel 2:23 7223 ||
Joel 2:24 7783 ||
Joel 2:26 398 ||
Joel 2:26 1984 praise
Joel 2:26 5971 ||
Joel 2:27 5750 ||
Joel 2:27 5971 ||
Joel 2:28 310 ||
Joel 2:28 1323 ||
Joel 2:28 2492 ||
Joel 2:28 7200 ||
Joel 2:30 5414 ||
Joel 2:31 935 ||
Joel 2:31 3068 ||
Joel 3:2 3381 ||
Joel 3:2 2505 ||
Joel 3:3 5414 ||
Joel 3:3 3206 ||
Joel 3:3 8354 ||
Joel 3:4 7999 ||
Joel 3:4 1580 ||
Joel 3:5 3947 ||
Joel 3:5 2896 precious
Joel 3:5 4261 treasures
Joel 3:5 935 ||
Joel 3:7 4725 ||
Joel 3:8 1323 ||
Joel 3:8 1696 ||
Joel 3:9 5066 ||
Joel 3:9 5927 ||
Joel 3:10 3807 ||
Joel 3:11 935 ||
Joel 3:11 5181 ||
Joel 3:12 5927 ||
Joel 3:12 3427 ||
Joel 3:13 7971 ||
Joel 3:13 935 ||
Joel 3:13 7783 ||
Joel 3:13 7227 ||
Joel 3:14 1995 ||
Joel 3:14 7138 ||
Joel 3:14 3068 ||
Joel 3:15 5051 brightness
Joel 3:16 7580 ||
Joel 3:16 5414 ||
Joel 3:17 7931 ||
Joel 3:17 5674 ||
Joel 3:17 5750 ||
Joel 3:18 5197 ||
Joel 3:18 650 ||
Joel 3:18 3068 ||
Joel 3:18 3318 ||
Joel 3:20 3427 ||
Joel 3:21 7931 ||
Obadiah 1:1 3068 ||
Obadiah 1:2 5414 ||
Obadiah 1:2 3966 ||
Obadiah 1:3 7931 ||
Obadiah 1:3 4791 ||
Obadiah 1:3 7675 ||
Obadiah 1:3 3381 ||
Obadiah 1:4 1361 ||
Obadiah 1:4 7760 ||
Obadiah 1:4 3381 ||
Obadiah 1:5 935 ||
Obadiah 1:5 1589 ||
Obadiah 1:5 1767 ||
Obadiah 1:5 1219 ||
Obadiah 1:5 7604 ||
Obadiah 1:6 2664 ||
Obadiah 1:7 3201 ||
Obadiah 1:7 7760 ||
Obadiah 1:7 369 ||
Obadiah 1:9 2865 ||
Obadiah 1:11 5975 ||
Obadiah 1:11 7617 ||
Obadiah 1:11 5237 foreigners
Obadiah 1:11 935 ||
Obadiah 1:12 7200 ||
Obadiah 1:12 1431 ||
Obadiah 1:12 6310 boast
Obadiah 1:13 935 ||
Obadiah 1:13 7200 ||
Obadiah 1:13 7971 ||
Obadiah 1:14 3772 ||
Obadiah 1:15 7138 ||
Obadiah 1:15 1576 deeds
Obadiah 1:15 3068 ||
Obadiah 1:16 8548 ||
Obadiah 1:18 3852 ||
Obadiah 1:18 1696 ||
Obadiah 1:20 5892 ||
Obadiah 1:21 5927 ||
Jonah 1:1 3068 ||
Jonah 1:2 3212 ||
Jonah 1:2 5892 ||
Jonah 1:3 3381 ||
Jonah 1:3 4672 ||
Jonah 1:3 935 ||
Jonah 1:3 5414 ||
Jonah 1:3 7939 ||
Jonah 1:4 7307 ||
Jonah 1:4 2803 ||
Jonah 1:4 7665 ||
Jonah 1:5 2904 ||
Jonah 1:5 3627 ||
Jonah 1:5 7043 ||
Jonah 1:5 3381 ||
Jonah 1:5 7290 ||
Jonah 1:6 7126 ||
Jonah 1:7 3212 ||
Jonah 1:7 5307 ||
Jonah 1:8 5046 ||
Jonah 1:8 4994 ||
Jonah 1:8 4399 ||
Jonah 1:8 935 ||
Jonah 1:8 776 ||
Jonah 1:9 6213 ||
Jonah 1:10 3373 ||
Jonah 1:10 1419 ||
Jonah 1:10 6213 ||
Jonah 1:11 6213 ||
Jonah 1:11 1980 ||
Jonah 1:11 5590 ||
Jonah 1:12 5375 ||
Jonah 1:12 2904 ||
Jonah 1:13 5590 ||
Jonah 1:13 1980 ||
Jonah 1:14 4994 ||
Jonah 1:14 5414 ||
Jonah 1:14 2654 pleased
Jonah 1:14 6213 ||
Jonah 1:15 5375 ||
Jonah 1:15 2904 ||
Jonah 1:15 5975 ||
Jonah 1:16 3373 ||
Jonah 1:16 1419 ||
Jonah 1:16 2077 sacrifice
Jonah 1:16 5088 vows
Jonah 1:17 4578 ||
Jonah 2:1 4578 ||
Jonah 2:2 7768 ||
Jonah 2:2 990 ||
Jonah 2:3 3220 ||
Jonah 2:3 5104 ||
Jonah 2:3 5437 ||
Jonah 2:3 1530 ||
Jonah 2:3 5674 ||
Jonah 2:4 5869 ||
Jonah 2:4 3254 ||
Jonah 2:5 5315 ||
Jonah 2:5 5437 ||
Jonah 2:5 5488 ||
Jonah 2:5 2280 ||
Jonah 2:6 3381 ||
Jonah 2:7 2142 ||
Jonah 2:7 935 ||
Jonah 2:9 2076 sacrifice
Jonah 3:1 3068 ||
Jonah 3:2 3212 ||
Jonah 3:2 5892 ||
Jonah 3:2 7150 message
Jonah 3:2 3212 ||
Jonah 3:2 5892 ||
Jonah 3:3 430 ||
Jonah 3:3 3212 ||
Jonah 3:3 3068 ||
Jonah 3:3 5892 ||
Jonah 3:3 1419 ||
Jonah 3:3 430 ||
Jonah 3:4 2490 ||
Jonah 3:4 935 ||
Jonah 3:4 5892 ||
Jonah 3:4 5750 ||
Jonah 3:6 5674 ||
Jonah 3:6 3427 ||
Jonah 3:7 120 ||
Jonah 3:7 8354 ||
Jonah 3:8 120 ||
Jonah 3:8 1870 ||
Jonah 3:9 2740 ||
Jonah 3:10 7200 ||
Jonah 3:10 1870 ||
Jonah 3:10 1696 ||
Jonah 4:1 7489 ||
Jonah 4:1 7451 ||
Jonah 4:1 1419 ||
Jonah 4:2 577 ||
Jonah 4:2 127 ||
Jonah 4:2 7451 ||
Jonah 4:3 3947 ||
Jonah 4:3 4994 ||
Jonah 4:5 3318 ||
Jonah 4:5 5892 ||
Jonah 4:5 3427 ||
Jonah 4:5 6924 ||
Jonah 4:5 6213 ||
Jonah 4:5 7200 ||
Jonah 4:6 5927 ||
Jonah 4:6 5337 ||
Jonah 4:6 7451 distress
Jonah 4:6 8057 ||
Jonah 4:6 1419 ||
Jonah 4:7 5927 ||
Jonah 4:7 7837 ||
Jonah 4:7 5221 ||
Jonah 4:8 7307 ||
Jonah 4:8 6921 ||
Jonah 4:8 5221 ||
Jonah 4:8 7592 ||
Jonah 4:8 2416 live
Jonah 4:10 1431 ||
Jonah 4:10 1121 ||
Jonah 4:11 5892 ||
Jonah 4:11 3426 ||
Jonah 4:11 7235 ||
Jonah 4:11 8147 ||
Jonah 4:11 120 ||
Jonah 4:11 7227 ||
Nahum 1:2 1167 ||
Nahum 1:3 750 slow
Nahum 1:3 1419 ||
Nahum 1:3 1870 ||
Nahum 1:3 7272 ||
Nahum 1:4 5104 ||
Nahum 1:4 2717 ||
Nahum 1:5 7493 ||
Nahum 1:5 3427 ||
Nahum 1:5 5375 ||
Nahum 1:5 8398 ||
Nahum 1:6 5975 ||
Nahum 1:6 5413 ||
Nahum 1:6 5422 ||
Nahum 1:6 2195 rage
Nahum 1:8 5674 ||
Nahum 1:8 3617 ||
Nahum 1:8 6213 ||
Nahum 1:8 4725 ||
Nahum 1:8 7291 ||
Nahum 1:9 3617 ||
Nahum 1:9 6213 ||
Nahum 1:10 4392 ||
Nahum 1:12 7227 ||
Nahum 1:12 5674 pass away
Nahum 1:12 5750 ||
Nahum 1:13 7665 ||
Nahum 1:14 5750 ||
Nahum 1:15 7272 ||
Nahum 1:15 2282 festivals
Nahum 1:15 3254 ||
Nahum 1:15 8085 announces
Nahum 1:15 5750 ||
Nahum 1:15 5674 ||
Nahum 2:1 6440 faces
Nahum 2:1 1870 ||
Nahum 2:1 5927 ||
Nahum 2:1 3581 strength
Nahum 2:1 3966 ||
Nahum 2:2 3478 Israel
Nahum 2:3 784 ||
Nahum 2:3 3559 ||
Nahum 2:4 1984 ||
Nahum 2:4 7339 ||
Nahum 2:4 4758 ||
Nahum 2:4 1300 ||
Nahum 2:5 2142 ||
Nahum 2:5 4116 ||
Nahum 2:6 5104 ||
Nahum 2:7 5324 ||
Nahum 2:7 1540 ||
Nahum 2:7 6963 ||
Nahum 2:7 3824 ||
Nahum 2:8 3117 ||
Nahum 2:8 5975 ||
Nahum 2:8 369 ||
Nahum 2:9 369 ||
Nahum 2:9 8498 ||
Nahum 2:9 3519 splendor
Nahum 2:9 3627 ||
Nahum 2:10 6908 ||
Nahum 2:11 369 ||
Nahum 2:12 1767 ||
Nahum 2:12 4585 ||
Nahum 2:13 6635 ||
Nahum 2:13 5750 ||
Nahum 3:1 5892 ||
Nahum 3:1 4395 ||
Nahum 3:2 7494 ||
Nahum 3:2 212 ||
Nahum 3:3 1300 ||
Nahum 3:3 7230 ||
Nahum 3:3 369 ||
Nahum 3:4 7230 ||
Nahum 3:4 2580 ||
Nahum 3:4 4940 peoples
Nahum 3:5 6635 ||
Nahum 3:5 7200 ||
Nahum 3:6 7993 ||
Nahum 3:7 7200 ||
Nahum 3:7 1245 go to find
Nahum 3:8 3427 ||
Nahum 3:9 369 ||
Nahum 3:10 1980 ||
Nahum 3:10 7628 ||
Nahum 3:12 5307 ||
Nahum 3:12 5128 ||
Nahum 3:12 398 ||
Nahum 3:12 6310 ||
Nahum 3:13 7130 ||
Nahum 3:13 776 ||
Nahum 3:14 4013 ||
Nahum 3:14 935 ||
Nahum 3:15 3772 ||
Nahum 3:17 697 locust swarms
Nahum 3:17 1462 locusts
Nahum 3:17 4725 ||
Nahum 3:18 369 ||
Nahum 3:19 369 ||
Nahum 3:19 8088 ||
Nahum 3:19 8548 ||
Habakkuk 1:1 2372 burden
Habakkuk 1:1 5030 prophet
Habakkuk 1:4 6127 twisted
Habakkuk 1:3 7701 destruction
Habakkuk 1:3 2555 violence
Habakkuk 1:3 7379 strife
Habakkuk 1:3 4066 contention
Habakkuk 1:4 3803 ||
Habakkuk 1:5 7200 ||
Habakkuk 1:5 6466 ||
Habakkuk 1:6 4751 ||
Habakkuk 1:6 1980 ||
Habakkuk 1:6 4800 ||
Habakkuk 1:6 4908 ||
Habakkuk 1:7 3372 feared
Habakkuk 1:8 7043 ||
Habakkuk 1:8 6153 ||
Habakkuk 1:8 935 ||
Habakkuk 1:8 398 ||
Habakkuk 1:9 935 ||
Habakkuk 1:9 6440 ||
Habakkuk 1:10 7336 rulers
Habakkuk 1:10 4428 kings
Habakkuk 1:11 227 ||
Habakkuk 1:11 2498 ||
Habakkuk 1:11 7307 ||
Habakkuk 1:11 5674 ||
Habakkuk 1:12 4941 judgment
Habakkuk 1:13 5869 ||
Habakkuk 1:13 7200 ||
Habakkuk 1:13 5027 ||
Habakkuk 1:13 3201 ||
Habakkuk 1:13 2790 ||
Habakkuk 1:14 120 ||
Habakkuk 1:15 5927 ||
Habakkuk 1:15 2764 ||
Habakkuk 1:15 622 ||
Habakkuk 1:16 2764 ||
Habakkuk 1:16 2506 ||
Habakkuk 1:17 2764 ||
Habakkuk 1:17 8548 ||
Habakkuk 2:1 5975 ||
Habakkuk 2:1 7200 ||
Habakkuk 2:1 1696 ||
Habakkuk 2:1 8433 ||
Habakkuk 2:2 7121 ||
Habakkuk 2:2 6030 ||
Habakkuk 2:2 3789 record
Habakkuk 2:2 874 write plainly
Habakkuk 2:3 5750 ||
Habakkuk 2:4 6662 righteous
Habakkuk 2:4 3474 right
Habakkuk 2:4 5315 desires
Habakkuk 2:4 2421 live
Habakkuk 2:5 4194 death
Habakkuk 2:5 1397 young man
Habakkuk 2:5 7646 ||
Habakkuk 2:5 622 ||
Habakkuk 2:5 6908 ||
Habakkuk 2:5 1397 ||
Habakkuk 2:6 5375 ||
Habakkuk 2:6 2420 ||
Habakkuk 2:6 4912 proverb
Habakkuk 2:6 4426 mockery
Habakkuk 2:7 6974 ||
Habakkuk 2:8 1471 nations
Habakkuk 2:8 7227 ||
Habakkuk 2:8 2555 violence
Habakkuk 2:8 3427 ||
Habakkuk 2:9 1214 gets
Habakkuk 2:9 1215 gains
Habakkuk 2:9 7760 ||
Habakkuk 2:10 7227 ||
Habakkuk 2:11 6086 ||
Habakkuk 2:11 6030 ||
Habakkuk 2:12 1129 ||
Habakkuk 2:12 5892 ||
Habakkuk 2:12 3559 founds
Habakkuk 2:13 6635 ||
Habakkuk 2:13 1767 ||
Habakkuk 2:14 3680 ||
Habakkuk 2:15 5596 ||
Habakkuk 2:15 8248 drink
Habakkuk 2:15 5027 ||
Habakkuk 2:16 8354 drink
Habakkuk 2:17 120 ||
Habakkuk 2:17 3427 ||
Habakkuk 2:18 457 ||
Habakkuk 2:18 3335 ||
Habakkuk 2:18 6213 ||
Habakkuk 2:19 8610 ||
Habakkuk 2:19 369 ||
Habakkuk 2:19 6086 ||
Habakkuk 3:2 8088 report
Habakkuk 3:2 2142 ||
Habakkuk 3:2 2421 revive
Habakkuk 3:3 935 ||
Habakkuk 3:3 4390 ||
Habakkuk 3:3 3680 ||
Habakkuk 3:4 216 light
Habakkuk 3:4 7161 ||
Habakkuk 3:4 5797 power
Habakkuk 3:5 3212 ||
Habakkuk 3:5 3318 ||
Habakkuk 3:5 7272 ||
Habakkuk 3:6 5975 ||
Habakkuk 3:6 7200 ||
Habakkuk 3:6 6327 ||
Habakkuk 3:6 1389 ||
Habakkuk 3:7 7200 ||
Habakkuk 3:8 5104 ||
Habakkuk 3:8 3444 ||
Habakkuk 3:9 7621 ||
Habakkuk 3:9 4294 ||
Habakkuk 3:9 562 ||
Habakkuk 3:9 5104 ||
Habakkuk 3:10 7200 ||
Habakkuk 3:10 5414 ||
Habakkuk 3:10 5674 swept
Habakkuk 3:10 5375 ||
Habakkuk 3:11 5975 ||
Habakkuk 3:11 1980 ||
Habakkuk 3:11 5051 ||
Habakkuk 3:11 1300 ||
Habakkuk 3:12 2195 ||
Habakkuk 3:12 6805 ||
Habakkuk 3:13 3318 ||
Habakkuk 3:13 4272 ||
Habakkuk 3:13 3247 ||
Habakkuk 3:14 5590 ||
Habakkuk 3:14 6041 ||
Habakkuk 3:15 7227 ||
Habakkuk 3:16 8085 ||
Habakkuk 3:16 990 ||
Habakkuk 3:16 8193 ||
Habakkuk 3:16 935 ||
Habakkuk 3:16 6106 ||
Habakkuk 3:16 5927 ||
Habakkuk 3:17 369 ||
Habakkuk 3:17 6213 ||
Habakkuk 3:17 6524 ||
Habakkuk 3:17 3584 ||
Habakkuk 3:17 4639 ||
Habakkuk 3:17 400 ||
Habakkuk 3:19 7760 ||
Habakkuk 3:19 7272 ||
Habakkuk 3:19 1869 walk
Habakkuk 3:19 5058 ||
Zephaniah 1:1 3068 ||
Zephaniah 1:1 3570 ||
Zephaniah 1:2 6440 ||
Zephaniah 1:2 622 ||
Zephaniah 1:2 5486 sweep
Zephaniah 1:3 6440 ||
Zephaniah 1:2 622 ||
Zephaniah 1:3 120 ||
Zephaniah 1:4 5186 ||
Zephaniah 1:4 3427 ||
Zephaniah 1:4 4725 ||
Zephaniah 1:5 1406 ||
Zephaniah 1:5 6635 ||
Zephaniah 1:7 3117 day of Yahweh
Zephaniah 1:7 3068 ||
Zephaniah 1:7 7138 ||
Zephaniah 1:7 3559 ||
Zephaniah 1:7 7121 ||
Zephaniah 1:8 3068 ||
Zephaniah 1:9 4390 ||
Zephaniah 1:10 6963 ||
Zephaniah 1:10 6818 cry of distress
Zephaniah 1:11 3427 ||
Zephaniah 1:11 1820 ruined
Zephaniah 1:11 3772 cut ... off
Zephaniah 1:13 1129 ||
Zephaniah 1:13 3427 ||
Zephaniah 1:13 8354 ||
Zephaniah 1:14 7138 ||
Zephaniah 1:14 3966 ||
Zephaniah 1:14 6873 crying
Zephaniah 1:14 4751 ||
Zephaniah 1:15 4875 devastation
Zephaniah 1:15 6205 ||
Zephaniah 1:16 1364 ||
Zephaniah 1:16 5892 ||
Zephaniah 1:17 120 ||
Zephaniah 1:18 3068 ||
Zephaniah 1:18 3617 ||
Zephaniah 1:18 6213 ||
Zephaniah 1:18 3427 ||
Zephaniah 2:2 3068 ||
Zephaniah 2:2 3117 day of Yahweh's wrath
Zephaniah 2:2 3205 ||
Zephaniah 2:3 3068 ||
Zephaniah 2:3 6466 ||
Zephaniah 2:3 3117 day of Yahweh's wrath
Zephaniah 2:3 639 ||
Zephaniah 2:5 3427 ||
Zephaniah 2:5 2256 ||
Zephaniah 2:5 3220 ||
Zephaniah 2:5 369 ||
Zephaniah 2:6 2256 ||
Zephaniah 2:6 3220 ||
Zephaniah 2:6 5116 ||
Zephaniah 2:7 2256 ||
Zephaniah 2:7 6485 care for
Zephaniah 2:7 7622 ||
Zephaniah 2:9 6635 ||
Zephaniah 2:9 4417 ||
Zephaniah 2:9 5971 ||
Zephaniah 2:9 3499 ||
Zephaniah 2:10 6635 ||
Zephaniah 2:11 4725 ||
Zephaniah 2:13 5186 ||
Zephaniah 2:13 7760 ||
Zephaniah 2:13 6723 dry
Zephaniah 2:13 4057 desert
Zephaniah 2:14 3885 ||
Zephaniah 2:14 6963 ||
Zephaniah 2:15 3427 ||
Zephaniah 2:15 5750 ||
Zephaniah 2:15 8047 horror
Zephaniah 2:15 5674 ||
Zephaniah 3:1 5892 ||
Zephaniah 3:2 7126 ||
Zephaniah 3:3 6153 ||
Zephaniah 3:3 7580 ||
Zephaniah 3:4 2554 violence
Zephaniah 3:5 6213 ||
Zephaniah 3:5 5767 unjust
Zephaniah 3:5 5414 ||
Zephaniah 3:6 5674 ||
Zephaniah 3:6 5892 ||
Zephaniah 3:6 369 ||
Zephaniah 3:6 3427 ||
Zephaniah 3:9 227 ||
Zephaniah 3:9 2015 ||
Zephaniah 3:9 8193 ||
Zephaniah 3:10 6327 scattered
Zephaniah 3:10 5676 ||
Zephaniah 3:11 5493 ||
Zephaniah 3:11 3254 ||
Zephaniah 3:11 5750 ||
Zephaniah 3:12 7604 ||
Zephaniah 3:13 1696 ||
Zephaniah 3:13 4672 ||
Zephaniah 3:13 369 ||
Zephaniah 3:13 6310 ||
Zephaniah 3:13 8649 deceitful
Zephaniah 3:13 7462 ||
Zephaniah 3:14 6726 ||
Zephaniah 3:14 8055 be glad
Zephaniah 3:14 5937 rejoice
Zephaniah 3:15 5493 ||
Zephaniah 3:15 5750 ||
Zephaniah 3:17 2790 ||
Zephaniah 3:17 430 God
Zephaniah 3:18 4864 ||
Zephaniah 3:19 7760 ||
Zephaniah 3:20 935 ||
Zephaniah 3:20 5414 ||
Zephaniah 3:20 7622 ||
Zephaniah 3:20 5869 ||
Haggai 1:1 3068 ||
Haggai 1:1 8147 ||
Haggai 1:1 1419 ||
Haggai 1:2 935 ||
Haggai 1:2 6635 ||
Haggai 1:2 1129 ||
Haggai 1:3 3068 ||
Haggai 1:5 1870 ||
Haggai 1:5 6635 ||
Haggai 1:5 3824 ||
Haggai 1:6 7937 get drunk
Haggai 1:6 8354 drink
Haggai 1:6 7235 ||
Haggai 1:6 935 ||
Haggai 1:6 4592 ||
Haggai 1:6 398 ||
Haggai 1:6 6872 ||
Haggai 1:6 369 ||
Haggai 1:6 7936 ||
Haggai 1:7 6635 ||
Haggai 1:7 1870 ||
Haggai 1:7 3824 ||
Haggai 1:8 5927 ||
Haggai 1:8 935 ||
Haggai 1:8 6086 ||
Haggai 1:8 1129 ||
Haggai 1:9 6437 ||
Haggai 1:9 4592 ||
Haggai 1:9 935 ||
Haggai 1:9 5301 ||
Haggai 1:9 6635 ||
Haggai 1:9 7235 ||
Haggai 1:11 2721 ||
Haggai 1:11 120 ||
Haggai 1:12 1419 ||
Haggai 1:14 1419 ||
Haggai 1:14 5971 ||
Haggai 1:14 935 ||
Haggai 1:14 6213 ||
Haggai 1:14 4399 worked
Haggai 1:14 6635 ||
Haggai 1:15 6242 ||
Haggai 1:15 8147 ||
Haggai 2:1 3068 ||
Haggai 2:1 7637 ||
Haggai 2:2 1419 ||
Haggai 2:2 4994 ||
Haggai 2:2 5971 ||
Haggai 2:3 7604 ||
Haggai 2:3 7200 ||
Haggai 2:3 7223 ||
Haggai 2:3 3644 ||
Haggai 2:3 369 ||
Haggai 2:4 1419 ||
Haggai 2:4 5971 people
Haggai 2:4 6635 ||
Haggai 2:5 5975 ||
Haggai 2:5 3318 ||
Haggai 2:6 6635 ||
Haggai 2:6 4592 ||
Haggai 2:7 935 ||
Haggai 2:7 4390 ||
Haggai 2:7 6635 ||
Haggai 2:8 6635 ||
Haggai 2:9 7223 ||
Haggai 2:9 314 ||
Haggai 2:9 5414 ||
Haggai 2:10 3068 ||
Haggai 2:10 8147 ||
Haggai 2:11 6635 ||
Haggai 2:11 4994 ||
Haggai 2:12 5375 ||
Haggai 2:12 3671 ||
Haggai 2:12 6030 ||
Haggai 2:13 6030 ||
Haggai 2:14 6030 ||
Haggai 2:14 7126 ||
Haggai 2:15 7760 ||
Haggai 2:15 4994 ||
Haggai 2:15 4605 ||
Haggai 2:16 935 ||
Haggai 2:16 6242 ||
Haggai 2:16 3342 ||
Haggai 2:16 6235 ||
Haggai 2:16 6333 ||
Haggai 2:17 5221 ||
Haggai 2:17 369 ||
Haggai 2:18 3824 ||
Haggai 2:18 4994 ||
Haggai 2:18 4605 ||
Haggai 2:19 5750 ||
Haggai 2:19 6086 ||
Haggai 2:20 3068 ||
Haggai 2:22 8045 ||
Haggai 2:22 3381 ||
Haggai 2:23 3947 ||
Haggai 2:23 7760 ||
Malachi 1:1 3068 ||
Malachi 1:3 8130 ||
Malachi 1:3 7760 ||
Malachi 1:4 1129 ||
Malachi 1:4 6635 ||
Malachi 1:5 5869 ||
Malachi 1:5 7200 ||
Malachi 1:6 6635 ||
Malachi 1:8 2076 sacrifice
Malachi 1:8 369 ||
Malachi 1:8 2470 ||
Malachi 1:8 7126 ||
Malachi 1:8 4994 ||
Malachi 1:8 6635 ||
Malachi 1:9 2470 ||
Malachi 1:9 4994 praying
Malachi 1:9 6635 ||
Malachi 1:10 5462 ||
Malachi 1:10 369 ||
Malachi 1:10 6635 ||
Malachi 1:11 4725 ||
Malachi 1:11 5066 offered
Malachi 1:11 6999 incense
Malachi 1:11 4503 grain offerings
Malachi 1:11 6635 ||
Malachi 1:12 400 ||
Malachi 1:13 5301 ||
Malachi 1:13 6635 ||
Malachi 1:13 935 ||
Malachi 1:13 1497 ||
Malachi 1:13 2470 ||
Malachi 1:14 3426 ||
Malachi 1:14 2145 ||
Malachi 1:14 6635 ||
Malachi 2:2 7760 ||
Malachi 2:2 6635 ||
Malachi 2:2 7971 ||
Malachi 2:2 369 ||
Malachi 2:3 2219 ||
Malachi 2:3 5375 ||
Malachi 2:4 6635 ||
Malachi 2:5 5414 ||
Malachi 2:6 6310 ||
Malachi 2:6 4672 ||
Malachi 2:6 7725 turned ... away
Malachi 2:6 8193 ||
Malachi 2:6 7227 ||
Malachi 2:7 8193 ||
Malachi 2:7 6310 ||
Malachi 2:7 6635 ||
Malachi 2:8 1870 ||
Malachi 2:8 7227 ||
Malachi 2:8 6635 ||
Malachi 2:9 5414 ||
Malachi 2:9 369 ||
Malachi 2:9 1870 ||
Malachi 2:9 8451 instruction
Malachi 2:11 1166 ||
Malachi 2:11 1323 ||
Malachi 2:12 6213 ||
Malachi 2:12 6030 answers
Malachi 2:12 4503 ||
Malachi 2:12 6635 ||
Malachi 2:13 8145 ||
Malachi 2:13 5750 ||
Malachi 2:13 369 ||
Malachi 2:13 7522 favor
Malachi 2:15 6213 ||
Malachi 2:15 7605 ||
Malachi 2:16 3830 garment
Malachi 2:16 6635 ||
Malachi 2:17 3021 ||
Malachi 2:17 6213 ||
Malachi 2:17 5869 ||
Malachi 3:1 6437 ||
Malachi 3:1 1870 ||
Malachi 3:1 935 ||
Malachi 3:1 6635 ||
Malachi 3:2 935 ||
Malachi 3:2 7200 ||
Malachi 3:3 3427 ||
Malachi 3:3 2891 purify
Malachi 3:3 2212 refine
Malachi 3:3 4503 offerings
Malachi 3:4 5769 ||
Malachi 3:5 7126 ||
Malachi 3:5 4116 ||
Malachi 3:5 6635 ||
Malachi 3:6 8138 ||
Malachi 3:7 6635 ||
Malachi 3:8 120 ||
Malachi 3:10 935 ||
Malachi 3:10 214 storehouse
Malachi 3:10 2964 ||
Malachi 3:10 4994 ||
Malachi 3:10 6635 ||
Malachi 3:10 1767 ||
Malachi 3:11 6635 ||
Malachi 3:12 6635 ||
Malachi 3:13 1696 ||
Malachi 3:14 3068 ||
Malachi 3:14 6635 ||
Malachi 3:15 2086 arrogant
Malachi 3:15 4422 ||
Malachi 3:16 227 ||
Malachi 3:16 1696 ||
Malachi 3:16 7453 ||
Malachi 3:16 8085 ||
Malachi 3:16 2146 ||
Malachi 3:17 6635 ||
Malachi 3:17 6213 ||
Malachi 3:17 5459 possession
Malachi 3:18 7725 ||
Malachi 3:18 7200 distinguish
Malachi 4:1 935 ||
Malachi 4:1 2086 arrogant
Malachi 4:1 7564 evildoer
Malachi 4:1 6635 ||
Malachi 4:2 3671 ||
Malachi 4:2 3318 ||
Malachi 4:3 3709 ||
Malachi 4:3 7272 ||
Malachi 4:3 6213 ||
Malachi 4:3 6635 ||
Malachi 4:4 2142 ||
Malachi 4:4 4941 rulings
Malachi 4:5 935 ||
Malachi 4:5 3068 ||
Malachi 4:6 935 ||
Malachi 4:6 5221 ||
Malachi 4:6 776 land
Malachi 4:6 2764 complete destruction

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,43 @@
use 5.12.0;
use Cwd;
my ($pwd, $os, $d, $textEditor) = (cwd(), $^O, "\\");
if ($os eq "darwin" || $os eq "linux") {$d = "/"}
GetUserDefaults();
my $files = "";
open(IN, "temp${d}mismatched_snippets.html") or die "$!\ntemp${d}mismatched_snippets.html";
while (<IN>) {
chomp;
# say $_;
if (/<p><b>(.*)<\/b><\/p>/) {
$files .= "$1 "
}
}
close IN;
say $files;
system ($files);
sub GetUserDefaults {
open (my $defaults, "<:utf8", "User${d}User_defaults.txt") or die "User${d}User_defaults.txt:\n$!";
while (my $thisLine = <$defaults>) {
chomp $thisLine;
if ($thisLine =~ /^Text editor: (.*)$/) {
$textEditor = $1;
}
}
if ($os eq "darwin") {$textEditor = "open -a $textEditor"}
say "\$textEditor: $textEditor";
die "No text editor found" if $textEditor eq "";
close $defaults;
}

View File

@ -0,0 +1,246 @@
# Before running this program, run
# find -s . "*.md"
# on
# /Users/Henry/Documents/git.Door43/en_tn/
# and paste the output into dir.dir in that directory
use 5.12.0;
use File::Slurp;
use utf8;
#use open IN => ":utf8", OUT => ":utf8";
use open IO => ":utf8";
use Cwd;
use File::Find ;
$" = "\n";
my ($pwd, $os, $d, $fileSpec, $repoPath) = (cwd(), $^O, "\\", "\.usfm");
if ($os eq "linux" || $os eq "darwin") {$d = "/"}
GetUserDefaults();
my (@filesToRun, @array);
my $filePattern = '*.md' ;
my (%abbrev, %full, %ulb);
find( sub { push @filesToRun, $File::Find::name if ( m/^(.*)$filePattern$/ && !m/(LICENSE|README|intro)\.$filePattern$/ ) }, $repoPath) ;
my %toDummy = (" \\.\\.\\. ", ".*", "\\?", "QM", "\"", "QD", "\'", "QS", "\!", "XM", "\\(", "QOXP", "\\)", "QCP");
my %fromDummy = ("\\.\\*", " ... ", "QM", "?", "QD", "\"", "QS", "'", "XM", "!", "QOXP", "(", "QCP", ")");
open LOG, ">Logs${d}log.log" or die;
#open output
open OUT, ">temp${d}mismatched_snippets.html" or die;
#Read in ULB
ReadData();
ReadULB();
ProcessFiles();
sub GetUserDefaults {
my ($ptte, $tNrepo);
open (my $defaults, "<:utf8", "User${d}User_defaults.txt") or die "User${d}User_defaults.txt:\n$!";
while (my $thisLine = <$defaults>) {
chomp $thisLine;
if ($thisLine =~ /^translationNotes path: (.*)$/) {
$tNrepo = $1
} elsif ($thisLine =~ /^Repository directory: (.*)$/) {
$repoPath = "$1";
}
}
$tNrepo = "$repoPath${d}$tNrepo";
say "\$repoPath: $repoPath";
die "No repo path found" if $repoPath eq "";
close $defaults;
}
sub ReadData {
while (<DATA>) {
chomp;
if (/([^\t]*)\t([^\t]*)\t(.*)/) {
($abbrev{$3}, $full{$2}) = ($2, $3)
}
}
#foreach my $key (sort keys %abbrev) {say LOG "$key\t$abbrev{$key}"}
#foreach my $key (sort keys %full) {say LOG "$key\t$full{$key}"}
}
sub ReadULB {
open IN, "Temp${d}ULB_text.txt" or die;
my ($checkText, $thisChunkText, $thisRef, $thisBook, $thisChap, $thisVerse, $id, $thisText, $tempText, $thisKey);
while (<IN>) {
chomp;
#say LOG ">$_<";
if (/^([^\t]*)\t(.*)$/) {
my ($tempID, $tempText) = ($1, $2);
#say LOG "<$tempID>\t|$tempText|";
#say LOG "\$id, \$thisText\t$id, $thisText";
($id) = ($tempID);
if ($id =~ /^([^:]*) (\d+):(\d+)/) {
($thisBook, $thisChap, $thisVerse) = ($1, $2, $3);
if ($thisBook ne "Psalms") {
while (length $thisChap < 2) {$thisChap =~ s/^/0/};
while (length $thisVerse < 2) {$thisVerse =~ s/^/0/}
} else {
while (length $thisChap < 3) {$thisChap =~ s/^/0/};
while (length $thisVerse < 3) {$thisVerse =~ s/^/0/}
}
$thisBook = $abbrev{$thisBook};
}
$id = "$thisBook/$thisChap/$thisVerse";
$tempText =~ s/\\f \+.*?\\f\*//g;
#say LOG $tempText;
$tempText =~ s/ {2,}/ /g;
$ulb{$id} .= "$tempText ";
$ulb{$id} =~ s/— /—/g;
$ulb{$id} =~ s/ —/—/g;
#say LOG "\$id = $id\n\$ulb{$id} = $ulb{$id}";
}
}
close IN;
#say LOG "Hi";
#foreach my $key (sort keys %ulb) {say LOG "|$key|\t<$ulb{$key}>"}
}
# assign passages as values to chunk keys
#Read in each file
sub ProcessFiles {
foreach my $slice (@filesToRun) {
#say LOG ">>\$slice: $slice<<";
my ($thisText, $thisNote, $textReserved, $curRef, $tb, $ct, $vt, $anchor);
if ($slice =~ /^.*\/(([^\.]*)\/([^\.]*)\/([^\.]*)).md$/) {
$curRef = $1;
$anchor = $1;
($tb, $ct, $vt) = ($2, $3, $4);
$tb = $full{$tb};
$ct =~ s/^0+//;
$vt =~ s/^0+//;
#say LOG ">3>$anchor > $tb $ct:$vt<3<";
$thisText = $ulb{$anchor};
#say LOG ">5>\$anchor: $anchor; \$thisText:\n$thisText<5<";
}
#my $tN = read_file("$slice", binmode => 'utf8') or die "|$slice|\n$!";
my $tN = read_file("$slice", binmode => 'utf8');
#my $tN = read_file("$slice", binmode => 'utf8') or next DoFile;
#say LOG ">6>\$slice: $slice; \$tN:\n$tN<6<";
foreach my $key (sort keys %toDummy) {
#say LOG "$key\t|$toDummy{$key}|";
$tN =~ s/$key/$toDummy{$key}/g;
$thisText =~ s/$key/$toDummy{$key}/g;
}
$tN =~ s/# ((General Information|Connecting Statement|translationWords):?)[^\r\n]*\r?\n//g;
$tN =~ s/\* \[\[[^\r\n]*\r?\n//g;
$tN =~ s/(#[^\r\n]*\r?\n)[^\r\n]*\r?\n[^\r\n]*\r?\n/$1/g;
# ">7>\n\n\n\$curRef: $curRef\n\$thisText:$thisText\n\$tN: $tN<7<";
while ($tN =~ /# ([^\r\n]*)\r?\n/g) {
$thisNote = $1;
#say LOG ">8>\t>\t|$thisNote|\n$thisText<8<";
$thisText =~ s/ {2,}/ /g;
#say LOG ">9>\t>\t|$thisNote|\n$thisText<9<";
unless ($thisText =~ /$thisNote/) {
say LOG ">A>\n$tb $ct:$vt\n$slice\n$thisNote\n$thisText\n<A<";
foreach my $key (sort keys %fromDummy) {
$thisNote =~ s/$key/$fromDummy{$key}/g;
$thisText =~ s/$key/$fromDummy{$key}/g;
}
push @array, "\n<p>$tb $ct:$vt</p>\n<p><b>$slice</b></p>\n<p><i>$thisNote</i></p>\n<p>$thisText</p>";
#push @array, "\t$thisNote";
}
}
}
}
print OUT "<?xml version=\"1.0\" encoding=\"utf-8\"?>
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">
<head>
<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />
<title>Mismatched Snippets</title>
<meta name=\"generator\" content=\"BBEdit 8.5\" />
</head>
<body>
@array
</body>
</html>";
close OUT;
close LOG;
say "Done.";
__DATA__
01 gen Genesis
02 exo Exodus
03 lev Leviticus
04 num Numbers
05 deu Deuteronomy
06 jos Joshua
07 jdg Judges
08 rut Ruth
09 1sa 1 Samuel
10 2sa 2 Samuel
11 1ki 1 Kings
12 2ki 2 Kings
13 1ch 1 Chronicles
14 2ch 2 Chronicles
15 ezr Ezra
16 neh Nehemiah
17 est Esther
18 job Job
19 psa Psalms
20 pro Proverbs
21 ecc Ecclesiastes
22 sng Song of Songs
23 isa Isaiah
24 jer Jeremiah
25 lam Lamentations
26 ezk Ezekiel
27 dan Daniel
28 hos Hosea
29 jol Joel
30 amo Amos
31 oba Obadiah
32 jon Jonah
33 mic Micah
34 nam Nahum
35 hab Habakkuk
36 zep Zephaniah
37 hag Haggai
38 zec Zechariah
39 mal Malachi
41 mat Matthew
42 mrk Mark
43 luk Luke
44 jhn John
45 act Acts
46 rom Romans
47 1co 1 Corinthians
48 2co 2 Corinthians
49 gal Galatians
50 eph Ephesians
51 php Philippians
52 col Colossians
53 1th 1 Thessalonians
54 2th 2 Thessalonians
55 1ti 1 Timothy
56 2ti 2 Timothy
57 tit Titus
58 phm Philemon
59 heb Hebrews
60 jas James
61 1pe 1 Peter
62 2pe 2 Peter
63 1jn 1 John
64 2jn 2 John
65 3jn 3 John
66 jud Jude
67 rev Revelation

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
$bk: Joel
$fullBk: |Joel|, $wa{Joel}: ||, $numBk: Joel, $abr: Joe, $bk: |Joel|
$fullBk: |Joel|, $bk: |Joel|
$abbr: joel
$wa{Joel}/$ch/$vs: jol/01/08
To system:
open -a /Applications/BBEdit.app /Users/Henry/Documents/git.Door43/en_tn/jol/01/08.md
$fullBk: |Obadiah|, $wa{Obadiah}: ||, $numBk: Obad, $abr: Ob, $bk: |Joel|
$fullBk: |Jonah|, $wa{Jonah}: ||, $numBk: Jonah, $abr: Jon, $bk: |Joel|
$fullBk: |Habakkuk|, $wa{Habakkuk}: ||, $numBk: Hab, $abr: Hab, $bk: |Joel|
$fullBk: |Nahum|, $wa{Nahum}: ||, $numBk: Nah, $abr: Na, $bk: |Joel|
$fullBk: |Zephaniah|, $wa{Zephaniah}: ||, $numBk: Zeph, $abr: Zep, $bk: |Joel|
$fullBk: |Haggai|, $wa{Haggai}: ||, $numBk: Hag, $abr: Hag, $bk: |Joel|
$fullBk: |Malachi|, $wa{Malachi}: ||, $numBk: Mal, $abr: Mal, $bk: |Joel|
$missingLine: Joel 1:8 5271, $ref: Joel 1:8, $bk: Joel, $ch: 01, $vs: 08
FindVerse |H5271|.
$ref: Joel 1:8
$fore: Mourn like a virgin dressed in sackcloth for the death of her young husband.
$precon:
Wail <H421> like a virgin <H1330> girded <H2296> with sackcloth <H8242> For the bridegroom <H1167> of her youth <
$aft: >.
$&: Wail <H421> like a virgin <H1330> girded <H2296> with sackcloth <H8242> For the bridegroom <H1167> of her youth <
$preprecon: Wail <H421> like a virgin <H1330> girded <H2296> with sackcloth <H8242> For the bridegroom <H1167> of her
$word: youth
<<youth>>

View File

@ -0,0 +1,23 @@
$missingLine: Joel 2:23 6666, $ref: , $bk: , $ch: , $vs:
$bk: Joel
$fullBk: |Joel|, $wa{Joel}: ||, $numBk: Joel, $abr: Joe, $bk: |Joel|, $lbsBk: Joe
$abbr: joel
$wa{Joel}/$ch/$vs: jol/02/23
To system:
open -a /Applications/BBEdit.app /Users/Henry/Documents/git.Door43/en_tn/jol/02/23.md
FindVerse |H6666|.
$ref: Joel 2:23
$fore: Be glad, people of Zion, and rejoice in Yahweh your God. For he will give you the autumn rain as vindication and bring down showers for you, the autumn rain and the spring rain as before.
So rejoice <H1523>, O sons <H1121> of Zion <H6726>, And be glad <H8055> in the LORD <H3068> your God <H430>; For He has given <H5414> you the early <H4175a> rain <H4175a> for your vindication <H6666>. And He has poured <H3381> down <H3381> for you the rain <H1653>, The early <H4175a> and latter <H4456> rain <H4456> as before <H7223>.
$precon:
So rejoice <H1523>, O sons <H1121> of Zion <H6726>, And be glad <H8055> in the LORD <H3068> your God <H430>; For He has given <H5414> you the early <H4175a> rain <H4175a> for your vindication <
$aft: >. And He has poured <H3381> down <H3381> for you the rain <H1653>, The early <H4175a> and latter <H4456> rain <H4456> as before <H7223>.
$&: So rejoice <H1523>, O sons <H1121> of Zion <H6726>, And be glad <H8055> in the LORD <H3068> your God <H430>; For He has given <H5414> you the early <H4175a> rain <H4175a> for your vindication <
$preprecon: So rejoice <H1523>, O sons <H1121> of Zion <H6726>, And be glad <H8055> in the LORD <H3068> your God <H430>; For He has given <H5414> you the early <H4175a> rain <H4175a> for your
$word: vindication
<<vindication>>

View File

@ -0,0 +1,127 @@
use 5.12.0;
use utf8;
use Cwd;
use File::Slurp;
use open IO => ":utf8";
$| = 1;
$" = "\n";
my ($pwd, $os, $d, $fileSpec) = (cwd(), $^O, "\\", "\.usfm");
if ($os eq "linux" || $os eq "darwin") {$d = "/"}
my ($inDir, $outDir) = ("", "out");
my (@array, @usfmLines);
my (%hash);
my ($whatami, $inFile);
my ($book, $chap, $vers, $text, $outText, $newV, $newC, $newB, $outFile, $usfmText, $metathesis, $repoPath);
###
#if (-e $outDir) {
# -d _ || die "$whatami: $outDir is not a directory!\n";
# -r _ && -w _ && -x _ || die "$whatami: $outDir is inaccessible!\n";
# chdir $outDir;
# my $glob = unlink glob "*.*";
# chdir "$pwd";
#}else{
# mkdir($outDir, 0755) || die "$whatami: Can't create $outDir!\n";
#}
open(LOG, ">:utf8", "Logs${d}log.log") or die "$outDir${d}log.log:\n$!";
GetUserDefaults();
say LOG "\$inDir: $inDir";
chdir("$repoPath");
opendir THISDIR, "." or die "serious dainbramage: $!";
my @infiles = grep /$fileSpec$/i, readdir *THISDIR;
say LOG "\$repoPath: $repoPath, \$fileSpec: $fileSpec\n\@infiles:\n@infiles";
closedir THISDIR;
chdir("$pwd");
ProcessFiles();
say "Done.";
close LOG;
sub GetUserDefaults {
open (my $defaults, "<:utf8", "User${d}User_defaults.txt") or die "User{d}User_defaults.txt:\n$!";
my ($ptte, $ptr);
while (my $thisLine = <$defaults>) {
chomp $thisLine;
if ($thisLine =~ /^Repository directory: (.*)$/) {
$repoPath = $1
}
}
die "No path to repo found" if $repoPath eq "";
($repoPath) = ("$repoPath${d}en_ulb");
say LOG "\$repoPath: $repoPath";
close $defaults;
}
sub ProcessFiles {
say "Processing files";
my $thisLine;
open(OUT, ">:utf8", "Temp${d}ULB_text.txt") or die "Temp${d}ULB_text.txt:\n$!";
my $finalTextForm;
@infiles = sort @infiles;
foreach $inFile (@infiles) {
my $thisFile;
$usfmText = read_file("$repoPath${d}$inFile", binmode => 'utf8') or die;
$usfmText =~ s/\r?\n([^\\ \r\n])/ $1/g;
$usfmText =~ s/\\f \+.*?\\f\*//g;
$usfmText =~ s/\\pi/\\p/g;
$usfmText =~ s/\\((ide?)|(toc.)|(mt|sp)|(c \\d+))[^\r\n]*\r?\n//g;
$usfmText =~ s/\r?\n\\(m|pi?|(q\d?)) ([^\r\n]*)\r\n/$3/g;
$usfmText =~ s/ +\n/\n/g;
$usfmText =~ s/(\n\\v \d+)\n/$1 \[blank\]\n/g;
$usfmText =~ s/ —/—/g;
#say LOG $usfmText;
#say LOG "$usfmText\n=====\n";
@usfmLines = "";
@usfmLines = split /\r?\n/, $usfmText;
foreach $thisLine (@usfmLines) {
chomp $thisLine;
#say LOG ">\t$thisLine";
$thisLine =~ s/^(\\q)[\t ]$/$1/;
#say LOG "<\t$thisLine";
$thisLine = SearchAndReplace($thisLine);
$thisFile .= $thisLine;
}
$thisFile =~ s/\r?\n>>\t/ /g;
$thisFile =~ s/>\t//g;
$thisFile =~ s/(\r?\n){2,}/\n/;
$thisFile =~ s/— /—/g;
$thisFile =~ s/\\q\d//g;
$thisFile =~ s/\\p//g;
$thisFile =~ s/\\q //g;
$thisFile =~ s/\\qs( .*)\\qs\* ?/$1/g;
$thisFile =~ s/\n{2,}/\n/g;
$thisFile =~ s/ {2,}/ /g;
say OUT $thisFile;
}
close OUT;
}
sub SearchAndReplace {
my $thisxLine = shift;
#say LOG $thisxLine;
$thisxLine =~ s/\\s5.*$/\n-------\n/;
if ($thisxLine =~ s/\\h (.+) *$//) {$book = $1;$newB = 1}
elsif ($thisxLine =~ s/\\c (\d+)//) {$chap = $1; $newC = 1}
elsif ($thisxLine =~ s/\\v (\d+(-\d+)?) (.*)$/$3/) {
#print OUT "\n$outText\n";
$vers = $1;
$newV = 1;
$thisxLine = "\n$book $chap:$vers\t$metathesis$thisxLine";
$metathesis = ""
#say LOG ">\t<$book> $chap:$vers\t$thisxLine";
}
elsif ($thisxLine =~ s/^\\q\d? (.*)$/ $1/) {}
elsif ($thisxLine =~ s/^\\m (.*)$/ $1/) {}
elsif ($thisxLine =~ s/^\\d (.*)//) {$metathesis = "$1 "}
elsif ($thisxLine =~ s/^\\[qpm]$//) {}
#say LOG $thisxLine;
return $thisxLine;
}

View File

@ -0,0 +1,270 @@
# Routine to take missing.log entries and link to UGNT and ULB.KJV.Strongs
use 5.12.0;
use File::Slurp;
$| = "\n";
use utf8;
#use open IN => ":utf8", OUT => ":utf8";
use open IO => ":utf8";
use File::Find ;
use Cwd ;
my ($pwd, $os, $d, $textEditor, $repoPath, $browser) = (cwd(), $^O, "\\");
if ($os eq "darwin" || $os eq "linux") {$d = "/"}
GetUserDefaults();
my ($outputFiles, $topDir, $txtFile, $dataFile, $displayFile, $filePattern) = (
"$repoPath${d}en_tw/bible${d}",
"$repoPath${d}en_tw/bible",
"Temp${d}ULB_NASB_Strongs.txt",
"User${d}tW_work_NT.txt",
"Temp${d}mine_results.html",
"*\.md"
);
my ($missingLine, $bk, $ch, $vs, $ref, $url, $strong, $word, $flag, $putative, $tNid, $abbr, $doFlag, $usfmFile, $lbsBk);
my @tWfiles;
find( sub { push @tWfiles, $File::Find::name if ( m/^(.*)$filePattern$/ ) }, $topDir) ;
open LOG, ">:utf8", "Logs${d}mine.log.log" or die;
open OUT, ">:utf8", "$displayFile" or die;
say OUT "<!DOCTYPE html>
<html>
<head>
<meta charset=\"UTF-8\"/>
</head>
<body>
";
ParseLine();
FindURL();
FindVerse($ref);
ChecktWPages($word);
Finish();
say OUT "
</body>
</html>";
close OUT;
close LOG;
print "\n\tDone.\n\n";
sub GetUserDefaults {
open (my $defaults, "<:utf8", "User${d}User_Defaults.txt") or die "User${d}User_Defaults.txt:\n$!";
while (my $thisLine = <$defaults>) {
chomp $thisLine;
if ($thisLine =~ /^Text editor: (.*)$/) {
$textEditor = $1;
} elsif ($thisLine =~ /^Repository directory: (.*)$/) {
$repoPath = $1
} elsif ($thisLine =~ /^HTML browser: (.*)$/) {
$browser = $1;
}
}
say LOG "\$textEditor: $textEditor, \$repoPath: $repoPath";
die "No text editor found" if $textEditor eq "";
die "No path to repo found" if $repoPath eq "";
if ($os eq "darwin") {$textEditor = "open -a $textEditor"; $browser = "open -a $browser"}
close $defaults;
}
sub ParseLine {
say "\n\n\033[0;1;31mEnter line from Entries_not_handled.txt:\033[m\n";
$missingLine = <STDIN>; # I moved chomp to a new line to make it more readable
chomp $missingLine; # Get rid of newline character at the end
exit 0 if ($missingLine eq ""); # If empty string, exit.
#$missingLine = "Mark 11:6 kt/command";
if ($missingLine =~ /^(([^:]*) (\d+):(\d+))\t([^\/]*\/([^\t]*))/) {
($ref, $bk, $ch, $vs, $url, $putative) = ($1, $2, $3, $4, $5, $6);
$outputFiles .= "${url}.md ";
say LOG "\$bk: $bk";
open (my $file, "<:utf8", "$dataFile") or die "$dataFile:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /^(# )?([^\t]*)\t([^\t]*)\t([^\t]*)$/) {
my ($fullBk, $numBk, $abr) = ($2, $3, $4);
say LOG "\$fullBk: |$fullBk|, \$numBk: $numBk, \$abr: $abr, \$bk: |$bk|";
if ($fullBk eq $bk) {
say LOG "\$fullBk: |$fullBk|, \$bk: |$bk|";
$lbsBk = $abr;
if ($numBk =~ /(\d\d)-(...)/) {
$abbr = lc $2;
say LOG "\$abbr: $abbr";
system `open -a /Applications/Logos.app "logos4:TextComparison;ref=BibleESV.$lbsBk${ch}.$vs;res=esv,niv2011,niv,nasb95,nrsv,gs-netbible,nlt,leb,kjv1900"`;
my $mxl;
if ($bk eq "Psalms?") {$mxl = 3}
else {$mxl = 2}
while (length $ch < $mxl) {$ch =~ s/^/0/}
while (length $vs < $mxl) {$vs =~ s/^/0/}
}
$usfmFile = "$repoPath${d}UGNT${d}${numBk}.usfm";
say LOG "\$abbr${d}\$ch${d}\$vs: $abbr${d}$ch${d}$vs";
system `$textEditor $repoPath${d}en_tn${d}$abbr${d}$ch${d}$vs.md`;
}
}
}
close $file;
} else {
die "\n\tInput unreadable.\n"
}
say LOG "Looking for $putative in $usfmFile";
say LOG "\$missingLine: $missingLine, \$ref: $ref, \$bk: $bk, \$ch: $ch, \$vs: $vs, \$url: $url\n\n";
}
sub FindURL {
my ($thisChap, $thisVers);
open (my $file, "<:utf8", "$usfmFile") or die "$usfmFile:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /\\mt (.*)$/) {
my $thisBook = $1;
if ($thisBook eq $bk) {
say LOG "\$thisBook: $thisBook\t\$bk: $bk";
$doFlag = 1;
} else {
say LOG "\nThe wrong book is being searched.\n"
}
} elsif ($doFlag && $line =~ /^\\c (\d+)$/) {
$thisChap = $1
} elsif ($doFlag && $line =~ /^\\v (\d+)$/) {
$thisVers = $1
} elsif ($doFlag && $thisChap == $ch && $thisVers == $vs) {
say LOG "\$thisChap:\$thisVers: $thisChap:$thisVers \$line: $line";
if ($line =~ /strong="([GH]....)(.).*$url/) {
say OUT "<p>$line</p>";
$strong = $1;
my $test = $2;
if ($test ne "0") {die "\n\t\tStrong's number won't work.\n\n"}
unless ($strong =~ /^.+$/) {die "\nThe Strong's number <$strong> is not found.\n"}
while ($strong =~ s/([GH])0/$1/) {}
if ($strong =~ /^.+$/) {
say OUT "<p><span style=\"color:red\">$strong</span></p>\n";
last
}
} elsif ($line =~ /\\k-s[^\n]*$url/) {
say OUT "<p><span style=\"color:red\">$url</span> is part of a phrase</p>\n";
$flag = 1;
}
} elsif ($line =~ /\\mt (.*)$/) {
$doFlag = 0
}
}
close $file;
}
sub FindVerse {
my $fileText = read_file("$txtFile", binmode => 'utf8');
say LOG "FindVerse |$strong|.";
if ($flag && $fileText =~ /$ref\t[^\n]*\n[^\n]*\n/) {
say LOG "$ref\n$&";
say $&;
exit 0;
} else {
if ($fileText =~ /$ref([^\n]*\n )([^\n]*<)$strong(.?>[^\n]*)/) {
my ($fore, $precon, $aft) = ($1, $2, $3);
say LOG "\$ref: $ref\n\$fore: $fore\n\$precon:\n$precon\n\$aft: $aft";
my $preprecon;
if ($precon =~ /^(.*([,>\w\'\"\- —;] |['";\.\?\!]))([\w\-]+) (<[^<>]*> )?<$/) {
($preprecon, $word) = ($1, $3);
say LOG "\$&: $&\n\$preprecon: $preprecon\n\$word: $word";
}
$preprecon =~ s/</&lt;/g;
$preprecon =~ s/>/&gt;/g;
$aft =~ s/</&lt;/g;
$aft =~ s/>/&gt;/g;
say OUT "<p>$ref$fore</p>\n<p>$preprecon<span style=\"color:red\">$word</span> <<span style=\"color:red\">$strong</span>$aft</p>\n";
}
else {
say OUT "<p>The Strong's code <<<span style=\"color:red\">$strong</span>>> is not found in $ref.</p>";
say OUT "<p>${ref}\\t[^\\n]*\\n[^\\n]*</p>";
#system ("bbfind -g \"${ref}\\t[^\\n]*\\n[^\\n]*\" 'data${d}ULB_NASB_Strongs.txt'") or die "$!";
system ("find $topDir -name \"*.md\" -exec grep -H --color \"$strong\[, \\n\\r\]\" {} \\;");
#system ("find $topDir -name \"*.md\" -exec grep -H --color \"$strong\$\" {} \\;");
}
}
return $word;
}
sub ChecktWPages{
say LOG "<<$word>>";
die "\n\$word is empty.\n" if $word eq "";
my $topDir = "$repoPath${d}en_tw${d}bible";
foreach my $file ( @tWfiles ) {
my $fileText = read_file("$file", binmode => 'utf8');
# While finds entries and Strong's numbers
while ($fileText =~ /($strong)[^\d]|^(# [^\n]*\b$word\b)/g) {
#system `clear`;
my $abb = $file;
$abb =~ s/.md$//;
say OUT "<p>$abb</p>\n";
$outputFiles .= "$file "
}
}
}
sub Finish {
say "\nLooking for $strong.";
# find $topDir -name "*.md" -exec grep -H '($strong[^\d]|$strong$)' {} +
#system ("find $topDir -name \"*.md\" -exec grep -H --color \"$strong\[, \\n\\r\]\" {} \\;");
foreach my $file ( @tWfiles ) {
my $fileText = read_file("$file", binmode => 'utf8');
# While finds entries and Strong's numbers
if ($fileText =~ /([^\n]*)($strong)([^\n]*)/g) {
my ($pre, $found, $post) = ($1, $2, $3);
my $abb = $file;
$abb =~ s/.md$//;
say OUT "<p>$abb: $pre<span style=\"color:red\">$found</span>$post</p>\n";
$outputFiles .= "$file "
}
}
say "\nLooking for $putative.";
foreach my $file ( @tWfiles ) {
my $fileText = read_file("$file", binmode => 'utf8');
# While finds entries and Strong's numbers
if ($fileText =~ /#{1,1} ([^\n]*)(\b$putative\b)([^\n]*)/g) {
my ($pre, $found, $post) = ($1, $2, $3);
my $abb = $file;
$abb =~ s/.md$//;
say OUT "<p>$abb: $pre<span style=\"color:red\">$found</span>$post</p>\n";
$outputFiles .= "$file "
}
}
say "\nLooking for $word.";
foreach my $file ( @tWfiles ) {
my $fileText = read_file("$file", binmode => 'utf8');
# While finds entries and Strong's numbers
if ($fileText =~ /#{1,1} ([^\n]*)(\b$word\b)([^\n]*)/g) {
my ($pre, $found, $post) = ($1, $2, $3);
my $abb = $file;
$abb =~ s/.md$//;
say OUT "<p>$abb: $pre<span style=\"color:red\">$found</span>$post</p>\n";
$outputFiles .= "$file "
}
}
say "Opening .md files.";
system `$browser https://www.blueletterbible.org/lang/lexicon/lexicon.cfm?strongs=$strong`;
say "\$browser: $browser, \$displayFile: $displayFile, \$textEditor: $textEditor \$outputFiles: $outputFiles";
system `$browser $displayFile`;
system `$textEditor $outputFiles`;
}

View File

@ -0,0 +1,228 @@
# Routine to take missing.log entries and link to UGNT and ULB.KJV.Strongs
use 5.12.0;
use File::Slurp;
$| = "\n";
use utf8;
#use open IN => ":utf8", OUT => ":utf8";
use open IO => ":utf8";
use File::Find ;
use Cwd ;
my ($pwd, $os, $d, $textEditor, $repoPath) = (cwd(), $^O, "\\");
if ($os eq "darwin" || $os eq "linux") {$d = "/"}
open OUT, ">:utf8", "Temp${d}mine_results.html" or die;
#binmode(STDOUT, "encoding(UTF-8)");
GetUserDefaults();
my ($outputFiles, $topDir, $usfmFile, $txtFile, $lbsBk, $dataFile, $doFlag) = (
"$repoPath${d}en_tw/bible${d}",
"$repoPath${d}en_tw/bible",
"",
"Temp${d}ULB.NASB.Strongs.txt",
"",
"User${d}tW_work_NT.txt"
);
my ($missingLine, $bk, $ch, $vs, $ref, $url, $strong, $word, $flag, $putative, $tNid, $abbr);
open LOG, ">:utf8", "Logs${d}mine.log.log" or die;
#open OUT, ">:utf8", $outputFile or die;
ParseLine();
FindURL();
FindVerse($ref);
ChecktWPages($word);
Finish();
#close OUT;
close LOG;
print "\n\tDone.\n\n";
sub GetUserDefaults {
open (my $defaults, "<:utf8", "data${d}UserDefaults") or die "data${d}UserDefaults:\n$!";
while (my $thisLine = <$defaults>) {
chomp $thisLine;
if ($thisLine =~ /^Text editor: (.*)$/) {
$textEditor = $1;
} elsif ($thisLine =~ /^Repository directory: (.*)$/) {
$repoPath = $1
}
}
say LOG "\$textEditor: $textEditor, \$repoPath: $repoPath";
die "No text editor found" if $textEditor eq "";
die "No path to repo found" if $repoPath eq "";
if ($os eq "darwin") {$textEditor = "open -a $textEditor"}
close $defaults;
}
sub ParseLine {
say OUT "\n\n\033[0;1;31mEnter line from missing.log:\033[m\n";
$missingLine = <STDIN>; # I moved chomp to a new line to make it more readable
chomp $missingLine; # Get rid of newline character at the end
exit 0 if ($missingLine eq ""); # If empty string, exit.
#$missingLine = "Mark 11:6 kt/command";
if ($missingLine =~ /^(([^:]*) (\d+):(\d+))\t([^\/]*\/([^\t]*))/) {
($ref, $bk, $ch, $vs, $url, $putative) = ($1, $2, $3, $4, $5, $6);
$outputFiles .= "${url}.md ";
say LOG "\$bk: $bk";
open (my $file, "<:utf8", "$dataFile") or die "$dataFile:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /^(# )?([^\t]*)\t([^\t]*)\t([^\t]*)$/) {
my ($fullBk, $numBk, $abr) = ($2, $3, $4);
say LOG "\$fullBk: |$fullBk|, \$numBk: $numBk, \$abr: $abr, \$bk: |$bk|";
if ($fullBk eq $bk) {
say LOG "\$fullBk: |$fullBk|, \$bk: |$bk|";
$lbsBk = $abr;
if ($numBk =~ /(\d\d)-(...)/) {
$abbr = lc $2;
say LOG "\$abbr: $abbr";
my $mxl;
if ($bk eq "Psalms?") {$mxl = 3}
else {$mxl = 2}
while (length $ch < $mxl) {$ch =~ s/^/0/}
while (length $vs < $mxl) {$vs =~ s/^/0/}
}
$usfmFile = "$repoPath${d}UGNT${d}${numBk}.usfm";
say LOG "\$abbr${d}\$ch${d}\$vs: $abbr${d}$ch${d}$vs";
system `$textEditor $repoPath${d}en_tn${d}$abbr${d}$ch${d}$vs.md`;
}
}
}
close $file;
} else {
die "\n\tInput unreadable.\n"
}
say LOG "Looking for $putative in $usfmFile";
say LOG "\$missingLine: $missingLine, \$ref: $ref, \$bk: $bk, \$ch: $ch, \$vs: $vs, \$url: $url\n\n";
#system `open -a /Applications/Logos.app "logosres:esv;ref=BibleESV.$lbsBk${ch}.$vs"`;
system `open -a /Applications/Logos.app "logos4:TextComparison;ref=BibleESV.$lbsBk${ch}.$vs;res=esv,niv2011,niv,nasb95,nrsv,gs-netbible,nlt,leb,kjv1900"
`;
}
sub FindURL {
my ($thisChap, $thisVers);
open (my $file, "<:utf8", "$usfmFile") or die "$usfmFile:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /\\mt (.*)$/) {
my $thisBook = $1;
if ($thisBook eq $bk) {
say LOG "\$thisBook: $thisBook\t\$bk: $bk";
$doFlag = 1;
} else {
say LOG "\nThe wrong book is being searched.\n"
}
} elsif ($doFlag && $line =~ /^\\c (\d+)$/) {
$thisChap = $1
} elsif ($doFlag && $line =~ /^\\v (\d+)$/) {
$thisVers = $1
} elsif ($doFlag && $thisChap == $ch && $thisVers == $vs) {
say LOG "$thisChap:$thisVers $line";
if ($line =~ /strong="([GH]....)(.).*$url/) {
say OUT "\n\$line:\n$line\n";
$strong = $1;
my $test = $2;
if ($test ne "0") {die "\n\t\tStrong's number won't work.\n\n"}
unless ($strong =~ /^.+$/) {die "\nThe Strong's number <$strong> is not found.\n"}
while ($strong =~ s/([GH])0/$1/) {}
if ($strong =~ /^.+$/) {
say OUT "\033[0;1;31m$strong\033[m\n";
last
}
} elsif ($line =~ /\\k-s[^\n]*$url/) {
say OUT "\n\t$url is part of a phrase\n";
$flag = 1;
}
} elsif ($line =~ /\\mt (.*)$/) {
$doFlag = 0
}
}
close $file;
}
sub FindVerse {
my $fileText = read_file("$txtFile", binmode => 'utf8');
say LOG "FindVerse |$strong|.";
if ($flag && $fileText =~ /$ref\t[^\n]*\n[^\n]*\n/) {
say LOG "$ref\n$&";
say $&;
exit 0;
} else {
if ($fileText =~ /$ref([^\n]*\n )([^\n]*<)$strong(.?>[^\n]*)/) {
my ($fore, $precon, $aft) = ($1, $2, $3);
say LOG "\$ref: $ref\n\$fore: $fore\n\$precon:\n$precon\n\$aft: $aft";
my $preprecon;
if ($precon =~ /^(.*([,>\w\'\"\- —;] |['";\.\?\!]))([\w\-]+) (<[^<>]*> )?<$/) {
($preprecon, $word) = ($1, $3);
say LOG "\$&: $&\n\$preprecon: $preprecon\n\$word: $word";
}
say "$ref$fore$preprecon\033[0;0;32m$word\033[m <\033[0;1;31m$strong\033[m$aft\n";
}
else {
say "\n\nThe Strong's code <<$strong>> is not found in $ref.\n\n";
system ("bbfind -g \"${ref}\\t[^\\n]*\\n[^\\n]*\" 'data${d}ULB.NASB.Strongs.txt'") or die "$!";
system ("find $topDir -name \"*.md\" -exec grep -H --color \"$strong\[, \\n\\r\]\" {} \\;");
}
}
return $word;
}
sub ChecktWPages{
say LOG "<<$word>>";
die "\n\$word is empty.\n" if $word eq "";
my $topDir = "$repoPath${d}en_tw${d}bible";
my @filesToRun = ();
my $filePattern = '*.md' ;
find( sub { push @filesToRun, $File::Find::name if ( m/^(.*)$filePattern$/ ) }, $topDir) ;
foreach my $file ( @filesToRun ) {
my $fileText = read_file("$file", binmode => 'utf8');
# While finds entries and Strong's numbers
while ($fileText =~ /($strong)[^\d]|^(# [^\n]*\b$word\b)/g) {
#system `clear`;
my $abb = $file;
$abb =~ s/.md$//;
say "\033[0;1;31m$abb\033[m";
$outputFiles .= "$file "
}
}
}
sub Finish {
say "\nLooking for $strong.";
# find $topDir -name "*.md" -exec grep -H '($strong[^\d]|$strong$)' {} +
system ("find $topDir -name \"*.md\" -exec grep -H --color \"$strong\[, \\n\\r\]\" {} \\;");
system ("find $topDir -name \"*.md\" -exec grep -H --color \"$strong\$\" {} \\;");
#system ("find $topDir -name \"*.md\" -exec grep -H --color \"\($strong\[, \\n\\r\]\|$strong\$\)\" {} \\;");
say "\nLooking for $putative.";
#system ("find $topDir -name \"*.md\" -exec grep -Hi --color \"^# $putative\[^A-Za-z\]\" {} \\;");
#system ("find $topDir -name \"*.md\" -exec grep -Hi --color \"^# .*\[^A-Za-z\]$putative\[^A-Za-z\]\" {} \\;");
system ("find $topDir -name \"*.md\" -exec egrep -Hi --color \"^# (.*\[^A-Za-z\])?$putative\[^A-Za-z\]\" {} \\;");
say "\nLooking for $word.";
#system ("find $topDir -name \"*.md\" -exec grep -Hi --color \"^#$word\[^A-Za-z\]\" {} \\;");
#system ("find $topDir -name \"*.md\" -exec grep -Hi --color \"^# .*\[^A-Za-z\]$word\[^A-Za-z\]\" {} \\;");
system ("find $topDir -name \"*.md\" -exec egrep -Hi --color \"^# (.*\[^A-Za-z\])?$word\[^A-Za-z\]\" {} \\;");
say "Opening .md files.";
system `open -a /Applications/Firefox.app https://www.blueletterbible.org/lang/lexicon/lexicon.cfm?strongs=$strong`;
system `open -a /Applications/BBEdit.app $outputFiles`;
}

View File

@ -0,0 +1,222 @@
# Routine to take missing.log entries and link to UGNT and ULB.KJV.Strongs
use 5.12.0;
use File::Slurp;
$| = "\n";
use utf8;
#use open IN => ":utf8", OUT => ":utf8";
use open IO => ":utf8";
use File::Find ;
use Cwd ;
my ($pwd, $os, $d, $textEditor, $repoPath, $browser) = (cwd(), $^O, "\\");
if ($os eq "darwin" || $os eq "linux") {$d = "/"}
GetUserDefaults();
my ($excFile, $topDir, $txtFile, $dataFile, $displayFile, $filePattern, $sn, $xfAbr) = (
"Exceptions${d}Exceptions_tWs_from_OSHB.txt",
"$repoPath${d}en_tw/bible",
"Temp${d}ULB_NASB_Strongs.txt",
"User${d}tW_work_OT.txt",
"Temp${d}mine_results.html",
"*\.md"
);
my ($missingLine, $bk, $ch, $vs, $ref, $strong, $word, $flag, $tNid, $abbr, $doFlag, $xmlFile, $outputFiles, $lbsBk);
my (%bkAbr, %wa);
my @tWfiles;
find( sub { push @tWfiles, $File::Find::name if ( m/^(.*)$filePattern$/ ) }, $topDir) ;
open LOG, ">:utf8", "Logs${d}mine_log.log" or die;
open OUT, ">:utf8", "$displayFile" or die;
say OUT "<!DOCTYPE html>
<html>
<head>
<meta charset=\"UTF-8\"/>
</head>
<body>
";
ParseLine();
FindVerse($ref);
ChecktWPages($word);
Finish();
say OUT "
</body>
</html>";
close OUT;
close LOG;
print "\n\tDone.\n\n";
sub GetUserDefaults {
open (my $defaults, "<:utf8", "User${d}User_Defaults.txt") or die "User${d}User_Defaults.txt:\n$!";
while (my $thisLine = <$defaults>) {
chomp $thisLine;
if ($thisLine =~ /^Text editor: (.*)$/) {
$textEditor = $1;
} elsif ($thisLine =~ /^Repository directory: (.*)$/) {
$repoPath = $1
} elsif ($thisLine =~ /^HTML browser: (.*)$/) {
$browser = $1;
}
}
say LOG "\$textEditor: $textEditor, \$repoPath: $repoPath";
die "No text editor found" if $textEditor eq "";
die "No path to repo found" if $repoPath eq "";
if ($os eq "darwin") {$textEditor = "open -a $textEditor"; $browser = "open -a $browser"}
close $defaults;
}
sub ParseLine {
say "\n\n\033[0;1;31mEnter line from Entries_not_handled.txt:\033[m\n";
my ($sch, $svs);
$missingLine = <STDIN>; # I moved chomp to a new line to make it more readable
chomp $missingLine; # Get rid of newline character at the end
exit 0 if ($missingLine eq ""); # If empty string, exit.
#$missingLine = "Zephaniah 1:2 5486";
if ($missingLine =~ /^(([^:]*) (\d+):(\d+))\t(\d+)/) {
say LOG "\$missingLine: $missingLine, \$ref: $ref, \$bk: $bk, \$ch: $ch, \$vs: $vs\n\n";
($ref, $bk, $ch, $vs, $sn, $xfAbr) = ($1, $2, $3, $4, $5, $bkAbr{$1});
($sch, $svs) = ($ch, $vs);
$strong = "H$sn";
say LOG "\$bk: $bk";
open (my $file, "<:utf8", "$dataFile") or die "$dataFile:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /^(# )?([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)$/) {
my ($fullBk, $wabbr, $numBk, $abr, $lbsBk) = ($2, $3, $4, $5, $5);
if ($fullBk eq $bk) {
say LOG "\$fullBk: |$fullBk|, \$wa{$fullBk}: |$wa{$fullBk}|, \$numBk: $numBk, \$abr: $abr, \$bk: |$bk|, \$lbsBk: $lbsBk";
($wa{$fullBk}) = ($wabbr);
$abbr = lc $numBk;
say LOG "\$abbr: $abbr";
my $mxl = 2;
if ($bk eq "Psalms?") {$mxl = 3}
while (length $ch < $mxl) {$ch =~ s/^/0/}
while (length $vs < $mxl) {$vs =~ s/^/0/}
$xmlFile = "$repoPath/OSHB/${numBk}.xml";
say LOG "\n\$wa{$fullBk}/\$ch/\$vs: $wa{$fullBk}/$ch/$vs\nTo system:\n$textEditor $repoPath/en_tn/$wa{$fullBk}/$ch/$vs.md\n";
system `$textEditor $repoPath/en_tn/$wa{$fullBk}/$ch/$vs.md`;
#say "open -a /Applications/Logos.app \"logos4:TextComparison;ref=BibleBHS.$lbsBk${sch}.$svs;res=esv,niv2011,niv,nasb95,nrsv,gs-netbible,nlt,leb,kjv1900\"";
system `open -a /Applications/Logos.app "logos4:TextComparison;ref=BibleNIV.$lbsBk${sch}.$svs;res=esv,niv2011,niv,nasb95,nrsv,gs-netbible,nlt,leb,kjv1900"`;
}
}
}
close $file;
} else {
die "\n\tInput unreadable.\n"
}
#system `open -a /Applications/Logos.app "logosres:esv;ref=BibleESV.$lbsBk${ch}.$vs"`;
}
sub FindVerse {
my $fileText = read_file("$txtFile", binmode => 'utf8');
say LOG "FindVerse |$strong|.";
if ($flag && $fileText =~ /$ref\t[^\n]*\n[^\n]*\n/) {
say LOG "$ref\n$&";
say $&;
exit 0;
} else {
if ($fileText =~ /$ref([^\n]*\n )(([^\n]*<)$strong(.?>[^\n]*))/) {
my ($fore, $allNasb, $precon, $aft) = ($1, $2, $3, $4);
say LOG "\$ref: $ref\n\$fore: $fore\n$allNasb\n\$precon:\n$precon\n\$aft: $aft";
my $preprecon;
if ($precon =~ /^(.*([,>\w\'\"\- —;] |[";\.\?\!]))([\w\'\-]+) (<[^<>]*> ){0,}<$/) {
($preprecon, $word) = ($1, $3);
say LOG "\$&: $&\n\$preprecon: $preprecon\n\$word: $word";
} elsif ($precon =~ /^(\w+) <$/) {
($preprecon, $word) = ("", $1);
} elsif ($precon =~ /^(.*)\b(\w+)\b <$/) {
($preprecon, $word) = ($1, $2);
}
$preprecon =~ s/</&lt;/g;
$preprecon =~ s/>/&gt;/g;
$aft =~ s/</&lt;/g;
$aft =~ s/>/&gt;/g;
say OUT "<p>$ref$fore</p>\n<p>$preprecon<span style=\"color:red\">$word</span> <<span style=\"color:red\">$strong</span>$aft</p>\n";
}
else {
say OUT "<p>The Strong's code <<<span style=\"color:red\">$strong</span>>> is not found in $ref.</p>";
say OUT "<p>${ref}\\t[^\\n]*\\n[^\\n]*</p>";
#system ("bbfind -g \"${ref}\\t[^\\n]*\\n[^\\n]*\" 'data${d}ULB_NASB_Strongs.txt'") or die "$!";
system ("find $topDir -name \"*.md\" -exec grep -H --color \"$strong\[, \\n\\r\]\" {} \\;");
#system ("find $topDir -name \"*.md\" -exec grep -H --color \"$strong\$\" {} \\;");
}
}
return $word;
}
sub ChecktWPages{
say LOG "<<$word>>";
die "\n\$word is empty.\n" if $word eq "";
my $topDir = "$repoPath${d}en_tw${d}bible";
say OUT "<p>";
foreach my $file ( @tWfiles ) {
my $fileText = read_file("$file", binmode => 'utf8');
# While finds entries and Strong's numbers
while ($fileText =~ /($strong)[^\d]|^(# [^\n]*\b$word\b)/g) {
#system `clear`;
my $abb = $file;
$abb =~ s/.md$//;
say OUT "$abb<br />\n";
$outputFiles .= "$file "
}
}
say OUT "</p>";
}
sub Finish {
say "\nLooking for $strong.";
# find $topDir -name "*.md" -exec grep -H '($strong[^\d]|$strong$)' {} +
#system ("find $topDir -name \"*.md\" -exec grep -H --color \"$strong\[, \\n\\r\]\" {} \\;");
say OUT "<p>";
foreach my $file ( @tWfiles ) {
my $fileText = read_file("$file", binmode => 'utf8');
# While finds entries and Strong's numbers
if ($fileText =~ /([^\n]*)($strong\b)([^\n]*)/g) {
my ($pre, $found, $post) = ($1, $2, $3);
my $abb = $file;
$abb =~ s/.md$//;
say OUT "$abb: $pre<span style=\"color:red\">$found</span>$post<br />\n";
$outputFiles .= "$file "
}
}
say OUT "</p>";
say "\nLooking for $word.";
say OUT "<p>";
foreach my $file ( @tWfiles ) {
my $fileText = read_file("$file", binmode => 'utf8');
# While finds entries and Strong's numbers
if ($fileText =~ /#{1,1} ([^\n]*)(\b$word\b)([^\n]*)/g) {
my ($pre, $found, $post) = ($1, $2, $3);
my $abb = $file;
$abb =~ s/.md$//;
say OUT "$abb: $pre<span style=\"color:red\">$found</span>$post<br />\n";
$outputFiles .= "$file "
}
}
say OUT "</p>";
say "\nOpening .md files.";
system `$browser https://www.blueletterbible.org/lang/lexicon/lexicon.cfm?strongs=$strong`;
#say "\$browser: $browser, \$displayFile: $displayFile, \$textEditor: $textEditor \$outputFiles: $outputFiles";
#system `$browser $displayFile`;
system `$textEditor $outputFiles`;
system `$textEditor $excFile`;
}

View File

@ -0,0 +1,166 @@
# Routine to take missing.log entries and link to UGNT and ULB.KJV.Strongs
use 5.12.0;
use File::Slurp;
$| = "\n";
use utf8;
#use open IN => ":utf8", OUT => ":utf8";
use open IO => ":utf8";
use File::Find ;
use Cwd ;
binmode(STDOUT, "encoding(UTF-8)");
my ($outputFiles, $topDir, $xmlFile, $txtFile, $lbsBk, $dataFile, $xmlDir, $doFlag) = (
"/Users/Henry/Documents/git.Door43/en_tw/bible/",
"/Users/Henry/Documents/git.Door43/en_tw/bible",
"",
"/Users/Henry/Google Drive/WA/Test/data/ULB.NASB.Strongs.txt",
"",
"/Users/Henry/Google Drive/WA/Test/data/tW.work.OT.dat",
"/Users/Henry/Google Drive/WA/OSHB"
);
my ($missingLine, $bk, $ch, $vs, $ref, $sn, $strong, $word, $flag, $tNid, $abbr, $xfAbr);
my (%bkAbr, %bkFull, %wa);
open LOG, ">:utf8", "/Users/Henry/Google Drive/WA/Test/out/mine.log.log" or die;
#open OUT, ">:utf8", $outputFile or die;
while (<DATA>) {
chomp;
if (/([^\t]*)\t([^\t]*)\t([^\t]*)/) {
$bkAbr{$1} = $2;
$bkFull{$2} = $1;
$wa{$1} = $3;
}
}
ParseLine();
#FindURL();
FindVerse($ref);
#ChecktWPages($word);
#Finish();
#close OUT;
close LOG;
print "\n\tDone.\n\n";
sub ParseLine {
say "\n\n\033[0;1;31mEnter line from missing.log:\033[m\n";
$missingLine = <STDIN>; # I moved chomp to a new line to make it more readable
chomp $missingLine; # Get rid of newline character at the end
exit 0 if ($missingLine eq ""); # If empty string, exit.
#$missingLine = "Mark 11:6 kt/command";
if ($missingLine =~ /^(([^:]*) (\d+):(\d+))\t(\d+)/) {
($ref, $bk, $ch, $vs, $sn, $xfAbr) = ($1, $2, $3, $4, $5, $bkAbr{$1});
say LOG "\$bk: $bk";
open (my $file, "<:utf8", "$dataFile") or die "$dataFile:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /^(# )?([^\t]*)\t([^\t]*)\t([^\t]*)$/) {
my ($fullBk, $numBk, $abr) = ($2, $3, $4);
say LOG "\$fullBk: |$fullBk|, \$numBk: $numBk, \$abr: $abr, \$bk: |$bk|";
if ($fullBk eq $bk) {
say LOG "\$fullBk: |$fullBk|, \$bk: |$bk|";
$lbsBk = $abr;
$abbr = lc $numBk;
say LOG "\$abbr: $abbr";
my $mxl;
if ($bk eq "Psalms?") {$mxl = 3}
else {$mxl = 2}
while (length $ch < $mxl) {$ch =~ s/^/0/}
while (length $vs < $mxl) {$vs =~ s/^/0/}
$xmlFile = "/Users/Henry/Google Drive/WA/OSHB/${numBk}.xml";
say LOG "\$abbr/\$ch/\$vs: $abbr/$ch/$vs";
system `open -a /Applications/BBEdit.app /Users/Henry/Documents/git.Door43/en_tn/$wa{$fullBk}/$ch/$vs.md`;
}
}
}
close $file;
} else {
die "\n\tInput unreadable.\n"
}
#say LOG "Looking for $sn in $xmlFile";
#say "Looking to open \$lbsBk\${ch}.\$vs: $lbsBk${ch}.$vs";
# say LOG "\$missingLine: $missingLine, \$ref: $ref, \$bk: $bk, \$ch: $ch, \$vs: $vs, \$url: $url\n\n";
#system `open -a /Applications/Logos.app "logosres:esv;ref=BibleESV.$lbsBk${ch}.$vs"`;
system `open -a /Applications/Logos.app "logos4:TextComparison;ref=BibleESV.$lbsBk${ch}.$vs;res=esv,niv2011,niv,nasb95,nrsv,gs-netbible,nlt,leb,kjv1900"`;
}
sub FindVerse {
my $fileText = read_file("$txtFile", binmode => 'utf8');
say LOG "FindVerse |$strong|.";
if ($flag && $fileText =~ /$ref\t[^\n]*\n[^\n]*\n/) {
say LOG "$ref\n$&";
say $&;
exit 0;
} else {
if ($fileText =~ /$ref([^\n]*\n )([^\n]*<)$strong(.?>[^\n]*)/) {
my ($fore, $precon, $aft) = ($1, $2, $3);
say LOG "\$ref: $ref\n\$fore: $fore\n\$precon:\n$precon\n\$aft: $aft";
my $preprecon;
if ($precon =~ /^(.*([,>\w\'\"\- —;] |['";\.\?\!]))([\w\-]+) (<[^<>]*> )?<$/) {
($preprecon, $word) = ($1, $3);
say LOG "\$&: $&\n\$preprecon: $preprecon\n\$word: $word";
}
say "$ref$fore$preprecon\033[0;0;32m$word\033[m <\033[0;1;31m$strong\033[m$aft\n";
}
else {
say "\n\nThe Strong's code <<$strong>> is not found in $ref.\n\n";
system ("bbfind -g \"${ref}\\t[^\\n]*\\n[^\\n]*\" '/Users/Henry/Google Drive/WA/Test/data/ULB.NASB.Strongs.txt'") or die "$!";
system ("find $topDir -name \"*.md\" -exec grep -H --color \"$strong\[, \\n\\r\]\" {} \\;");
#system ("find $topDir -name \"*.md\" -exec grep -H --color \"$strong\$\" {} \\;");
}
}
return $word;
}
__DATA__
1 Chronicles 1Chr 1ch
1 Kings 1Kgs 1ki
1 Samuel 1Sam 1sa
2 Chronicles 2Chr 2ch
2 Kings 2Kgs 2ki
2 Samuel 2Sam 2sa
Amos Amos amo
Daniel Dan dan
Deuteronomy Deut deu
Ecclesiastes Eccl ecc
Esther Esth est
Exodus Exod exo
Ezekiel Ezek ezk
Ezra Ezra ezr
Genesis Gen gen
Habakkuk Hab hab
Haggai Hag hag
Hosea Hos hos
Isaiah Isa isa
Jeremiah Jer jer
Job Job job
Joel Joel jol
Jonah Jonah jon
Joshua Josh jos
Judges Judg jdg
Lamentations Lam lam
Leviticus Lev lev
Malachi Mal mal
Micah Mic mic
Nahum Nah nam
Nehemiah Neh neh
Numbers Num num
Obadiah Obad oba
Proverbs Prov pro
Psalms Ps psa
Ruth Ruth rut
Song of Songs Song sng
Zechariah Zech zec
Zephaniah Zeph zep

View File

@ -0,0 +1,37 @@
# opens files with mismatched snippets
use 5.12.0;
use File::Slurp;
use Cwd;
my ($pwd, $os, $d, $textEditor) = (cwd(), $^O, "\\");
if ($os eq "darwin" || $os eq "linux") {$d = "/"}
GetUserDefaults();
my $openString = "";
my $fileText = read_file("temp${d}mismatched_snippets.html", binmode => 'utf8');
while ($fileText =~ /<p><b>(.*)<\/b><\/p>/g) {
$openString .= "$1 " unless $openString =~ /$1/;
}
#say "\n\n$textEditor $openString\n";
system ("open -a $textEditor $openString");
sub GetUserDefaults {
open (my $defaults, "<:utf8", "User${d}User_defaults.txt") or die "User${d}User_defaults.txt:\n$!";
while (my $thisLine = <$defaults>) {
chomp $thisLine;
if ($thisLine =~ /^Text editor: (.*)$/) {
$textEditor = $1;
}
}
if ($os eq "darwin") {$textEditor = "open -a $textEditor"}
say "\$textEditor: $textEditor";
die "No text editor found" if $textEditor eq "";
close $defaults;
}

View File

@ -0,0 +1,33 @@
use 5.12.0;
my ($bk, $ch, $vs, $outputFile, $ulb, $tw, $dir, $ref) = ("", "", "", "/Users/Henry/Documents/git.Door43/en_tw/ForPDF/tWs.for.PDF.txt");
open LOG, ">:utf8", "/Users/Henry/Google Drive/WA/Test/out/log.log" or die;
open OUT, ">:utf8", $outputFile or die;
say OUT "Book,Chapter,Verse,Term,Dir,Ref";
open (my $file, "<:utf8", "/Users/Henry/Google Drive/WA/Test/out/output.dat") or die "/Users/Henry/Google Drive/WA/Test/out/output.dat:\n$!";
while (my $line = <$file>) {
chomp $line;
#say LOG $line;
if ($line =~ /^([^:]*) (\d+):(\d+):$/) {
($bk, $ch, $vs) = ($1, $2, $3);
say LOG $line;
} elsif ($line =~ /^\[([^\]]*)\]\(([^\)]*)\)$/) {
($ulb, $tw) = ($1, $2);
if ($tw =~ /^([^\/]*)\/([^\/]*)$/) {
($dir, $ref) = ($1, $2)
}
say OUT "$bk,$ch,$vs,\"$ulb\",$dir,$ref"
}
}
close $file;
close OUT;
close LOG;
system 'open -a /Applications/BBEdit.app $outputFile';
print "\n\tDone.";

View File

@ -0,0 +1,12 @@
Joel 1:8 1167
Joel 1:13 935
Joel 1:17 2040
Joel 1:18 816
Joel 2:1 935
Joel 2:2 6205
Joel 2:9 935
Joel 2:13 7451
Joel 2:22 2428
Joel 2:23 6666
Joel 3:13 3381
Joel 3:15 622

View File

@ -0,0 +1,368 @@
Malachi 1:1:
[declaration](other/declare)
[word of Yahweh](kt/wordofgod)
[Israel](kt/israel)
[by the hand of](other/hand)
[Malachi](names/malachi)
Malachi 1:2:
[loved](kt/love)
[Yahweh](kt/yahweh)
[Esau](names/esau)
[Jacob](names/jacob)
[brother](kt/brother)
[declares](other/declare)
Malachi 1:3:
[Esau](names/esau)
[devastation](other/devastated)
[inheritance](kt/inherit)
[wilderness](other/desert)
Malachi 1:4:
[Edom](names/edom)
[ruins](other/ruin)
[Yahweh of hosts](kt/yahwehofhosts)
[call](kt/call)
[wickedness](kt/evil)
[forever](kt/eternity)
Malachi 1:5:
[Yahweh](kt/yahweh)
[Israel](kt/israel)
Malachi 1:6:
[honors](kt/honor)
[servant](other/servant)
[master](kt/lord)
[reverence](other/reverence)
[Yahweh of hosts](kt/yahwehofhosts)
[priests](kt/priest)
[name](kt/name)
Malachi 1:7:
[offering](other/sacrifice)
[bread](other/bread)
[altar](kt/altar)
[Yahweh](kt/yahweh)
[contemptible](other/contempt)
Malachi 1:8:
[sacrifice](other/sacrifice)
[evil](kt/evil)
[governor](other/governor)
[face](other/face)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 1:9:
[gracious](kt/grace)
[Yahweh of hosts](kt/yahwehofhosts)
[hand](other/hand)
[faces](other/face)
Malachi 1:10:
[gates](other/gate)
[fires](other/fire)
[altar](kt/altar)
[vain](other/vain)
[pleasure](other/delight)
[Yahweh of hosts](kt/yahwehofhosts)
[offering](other/sacrifice)
[hand](other/hand)
Malachi 1:11:
[name](kt/name)
[great](kt/majesty)
[nations](other/nation)
[pure](kt/purify)
[offerings](kt/gift)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 1:12:
[profaning](other/profane)
[Lord](kt/lord)
[fruit](other/fruit)
Malachi 1:13:
[Yahweh of hosts](kt/yahwehofhosts)
[offering](other/sacrifice)
[hand](other/hand)
Malachi 1:14:
[deceiver](other/deceive)
[cursed](kt/curse)
[flock](other/flock)
[vows](kt/vow)
[sacrifices](other/sacrifice)
[Lord](kt/lord)
[great](kt/majesty)
[king](other/king)
[Yahweh of hosts](kt/yahwehofhosts)
[name](kt/name)
[honored](kt/honor)
[nations](other/nation)
Malachi 2:1:
[priests](kt/priest)
[command](kt/command)
Malachi 2:2:
[heart](kt/heart)
[name](kt/name)
[Yahweh of hosts](kt/yahwehofhosts)
[send](other/send)
[curse](kt/curse)
[blessings](kt/bless)
[cursed](kt/curse)
Malachi 2:3:
[rebuke](other/rebuke)
[descendants](other/descendant)
[dung](other/dung)
[faces](other/face)
[festivals](other/festival)
Malachi 2:4:
[know](other/know)
[sent](other/send)
[command](kt/command)
[covenant](kt/covenant)
[Levi](names/levite)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 2:5:
[covenant](kt/covenant)
[life](kt/life)
[fear](kt/fear)
[feared](kt/fear)
[name](kt/name)
Malachi 2:6:
[instruction](other/instruct)
[walked](other/walk)
[peace](other/peace)
[uprightness](kt/righteous)
Malachi 2:7:
[priest](kt/priest)
[keep](other/obey)
[knowledge](other/know)
[seek](other/seek)
[instruction](other/instruct)
[messenger](other/messenger)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 2:8:
[stumble](other/stumble)
[the law](kt/lawofmoses)
[covenant](kt/covenant)
[Levi](names/levite)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 2:9:
[contemptible](other/contempt)
[people](other/peoplegroup)
[kept](other/obey)
[partiality](other/partial)
[instruction](other/instruct)
Malachi 2:10:
[brother](kt/brother)
[profaning](other/profane)
[covenant](kt/covenant)
[fathers](other/father)
Malachi 2:11:
[Judah](names/judah)
[disgusting thing](kt/abomination)
[committed](other/commit)
[Israel](kt/israel)
[profaned](other/profane)
[holy place](kt/holyplace)
[Yahweh](kt/yahweh)
[loves](kt/love)
[foreign](other/foreigner)
[god](kt/falsegod)
Malachi 2:12:
[tents](other/tent)
[Jacob](names/jacob)
[awake](other/raise)
[offering](other/sacrifice)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 2:13:
[altar](kt/altar)
[Yahweh](kt/yahweh)
[with tears](other/mourn)
[turn](other/turn)
[offering](other/sacrifice)
[favor](kt/favor)
[hand](other/hand)
Malachi 2:14:
[Yahweh](kt/yahweh)
[witness](kt/testimony)
[companion](other/companion)
[covenant](kt/covenant)
Malachi 2:15:
[spirit](kt/spirit)
[seeking](other/seek)
[offspring](other/offspring)
[guard](other/watch)
Malachi 2:16:
[divorce](other/divorce)
[Israel](kt/israel)
[garment](other/clothed)
[violence](kt/evil)
[Yahweh of hosts](kt/yahwehofhosts)
[guard](other/watch)
[spirit](kt/spirit)
Malachi 2:17:
[Yahweh](kt/yahweh)
[saying](other/word)
[evil](kt/evil)
[good](kt/good)
[delights](other/delight)
[justice](kt/justice)
Malachi 3:1:
[send](other/send)
[messenger](other/messenger)
[before](other/face)
[Lord](kt/lord)
[seek](other/seek)
[temple](kt/temple)
[covenant](kt/covenant)
[delight](other/delight)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 3:2:
[endure](other/endure)
[day](other/biblicaltimeday)
[fire](other/fire)
Malachi 3:3:
[silver](other/silver)
[purify](kt/purify)
[sons](kt/son)
[Levi](names/levite)
[gold](other/gold)
[offerings](kt/gift)
[righteousness](kt/righteous)
[Yahweh](kt/yahweh)
Malachi 3:4:
[offering](other/sacrifice)
[Judah](names/judah)
[Jerusalem](names/jerusalem)
[Yahweh](kt/yahweh)
[days](other/biblicaltimeday)
Malachi 3:5:
[judgment](kt/justice)
[sorcerers](other/sorcery)
[false witnesses](other/falsewitness)
[wages](other/reward)
[foreigner](other/foreigner)
[honor](kt/honor)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 3:6:
[Yahweh](kt/yahweh)
[descendants](other/descendant)
[Jacob](names/jacob)
Malachi 3:7:
[fathers](other/father)
[turned](other/turn)
[statutes](other/statute)
[kept](other/obey)
[return](other/return)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 3:8:
[tithes](other/tenth)
Malachi 3:9:
[cursed](kt/curse)
[curse](kt/curse)
[nation](other/nation)
Malachi 3:10:
[tithe](other/tenth)
[storehouse](other/storehouse)
[test](kt/test)
[Yahweh of hosts](kt/yahwehofhosts)
[heaven](kt/heaven)
[blessing](kt/bless)
Malachi 3:11:
[destroy](other/destroyer)
[crops](other/fruit)
[land](other/earth)
[vines](other/vine)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 3:12:
[nations](other/nation)
[blessed](kt/bless)
[land](other/earth)
[delight](other/delight)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 3:13:
[strong](other/strength)
[Yahweh](kt/yahweh)
Malachi 3:14:
[useless](other/vain)
[serve](other/servant)
[profit](other/profit)
[kept](other/obey)
[requirements](other/ordinance)
[walked](other/walk)
[mournfully](other/mourn)
[before](other/face)
[Yahweh of hosts](kt/yahwehofhosts)
Malachi 3:15:
[blessed](kt/bless)
[prosper](other/prosper)
[test](kt/test)
Malachi 3:16:
[Yahweh](kt/yahweh)
[book](other/scroll)
[was written](other/written)
[before](other/face)
[honored](kt/honor)
[name](kt/name)
Malachi 3:17:
[Yahweh of hosts](kt/yahwehofhosts)
[possession](other/possess)
[day](other/biblicaltimeday)
[pity](kt/compassion)
[serves](other/servant)
Malachi 3:18:
[righteous](kt/righteous)
[wicked](kt/evil)
[worships](kt/worship)
Malachi 4:1:
Malachi 4:2:
Malachi 4:3:
Malachi 4:4:
Malachi 4:5:
Malachi 4:6:

View File

@ -0,0 +1,532 @@
Joel 1:1:
[word of Yahweh](kt/wordofgod)
[Joel](names/joel)
Joel 1:2:
[elders](other/elder)
[listen](other/obey)
[land](other/earth)
[days](other/biblicaltimeday)
[ancestors](other/father)
Joel 1:3:
[children](kt/children)
[generation](other/generation)
Joel 1:4:
[locust](other/locust)
Joel 1:5:
[drunkards](other/drunk)
[weep](other/mourn)
[wine](other/wine)
Joel 1:6:
[nation](other/nation)
[come up](other/raise)
[land](other/earth)
[mighty](other/mighty)
[lion](other/lion)
[lioness](other/lion)
Joel 1:7:
[vineyard](other/vineyard)
[desolate](other/desolate)
[fig](other/fig)
[thrown](other/castout)
Joel 1:8:
[virgin](other/virgin)
[girded](other/gird)
[sackcloth](other/sackcloth)
Joel 1:9:
[grain offering](other/grainoffering)
[drink offering](other/drinkoffering)
[house of Yahweh](kt/houseofgod)
[Yahweh](kt/yahweh)
[priests](kt/priest)
[servants](other/servant)
[mourn](other/mourn)
Joel 1:10:
[ground](other/earth)
[mourning](other/mourn)
[grain](other/grain)
[destroyed](other/destroyer)
[new wine](other/wine)
[oil](other/oil)
Joel 1:11:
[ashamed](other/shame)
[farmers](other/plow)
[wail](kt/lament)
[vine growers](other/vineyard)
[wheat](other/wheat)
[barley](other/barley)
[harvest](other/harvest)
[perished](kt/perish)
Joel 1:12:
[vines](other/vine)
[withered](other/barren)
[pomegranate](other/pomegranate)
[palm](other/palm)
[joy](other/joy)
[descendants](other/descendant)
Joel 1:13:
[sackcloth](other/sackcloth)
[mourn](other/mourn)
[priests](kt/priest)
[servants](other/servant)
[altar](kt/altar)
[grain offering](other/grainoffering)
[drink offering](other/drinkoffering)
[house](other/house)
Joel 1:14:
[holy](kt/holy)
[fast](other/fast)
[call](kt/call)
[assembly](other/assembly)
[elders](other/elder)
[land](other/earth)
[house of Yahweh](kt/houseofgod)
[Yahweh](kt/yahweh)
Joel 1:15:
[day of Yahweh](kt/dayofthelord)
[Almighty](kt/almighty)
Joel 1:16:
[joy](other/joy)
[gladness](other/joy)
[house](other/house)
Joel 1:17:
[seeds](other/seed)
[storehouses](other/storehouse)
[desolate](other/desolate)
[grain](other/grain)
[withered](other/barren)
Joel 1:18:
[cattle](other/cow)
[groan](other/groan)
[herds](other/flock)
[flocks](other/flock)
[sheep](other/sheep)
[suffering](other/suffer)
Joel 1:19:
[Yahweh](kt/yahweh)
[cry](other/cry)
[fire](other/fire)
[devoured](other/devour)
[wilderness](other/desert)
Joel 1:20:
[animals](other/beast)
[water](other/water)
[dried](other/barren)
[fire](other/fire)
[devoured](other/devour)
[wilderness](other/desert)
Joel 2:1:
[trumpet](other/trumpet)
[Zion](kt/zion)
[alarm](other/alarm)
[holy](kt/holy)
[land](other/earth)
[tremble](other/tremble)
[day of Yahweh](kt/dayofthelord)
Joel 2:2:
[darkness](other/darkness)
[thick darkness](other/darkness)
[dawn](other/light)
[mighty](other/mighty)
[army](other/warrior)
[never](kt/eternity)
[like](other/like)
[generations](other/generation)
Joel 2:3:
[fire](other/fire)
[consuming](other/consume)
[burning](other/fire)
[garden of Eden](names/eden)
[ruined](other/ruin)
[wilderness](other/desert)
[escape](kt/remnant)
Joel 2:4:
[appearance]()
[horses](other/horse)
[run](other/run)
Joel 2:5:
[chariots](other/chariot)
[sound](other/voice)
[fiery](other/fire)
[devour](other/devour)
[mighty](other/mighty)
[army](other/warrior)
Joel 2:6:
[presence](other/face)
[people](other/peoplegroup)
[anguish](other/anguish)
Joel 2:7:
[run](other/run)
[warriors](other/warrior)
[climb](other/run)
Joel 2:8:
Joel 2:9:
[run](other/run)
[climb](other/run)
[houses](other/house)
[thieves](other/thief)
Joel 2:10:
[earth](other/earth)
[heavens](kt/heaven)
[tremble](other/tremble)
Joel 2:11:
[voice](other/voice)
[strong](other/strength)
[commands](kt/command)
[day of Yahweh](kt/dayofthelord)
[great](kt/majesty)
[terrible](other/terror)
[endure](other/endure)
Joel 2:12:
[Yahweh](kt/yahweh)
[declaration](other/declare)
[heart](kt/heart)
Joel 2:13:
[heart](kt/heart)
[garments](other/clothed)
[return](other/return)
[Yahweh](kt/yahweh)
[gracious](kt/grace)
[merciful](kt/mercy)
[slow](other/patient)
[anger](other/angry)
[abounding](other/multiply)
[steadfast love](kt/covenantfaith)
[relenting](kt/repent)
Joel 2:14:
[knows](other/know)
[turn](other/turn)
[relent](kt/repent)
[blessing](kt/bless)
[grain offering](other/grainoffering)
[drink offering](other/drinkoffering)
[Yahweh](kt/yahweh)
Joel 2:15:
[trumpet](other/trumpet)
[Zion](kt/zion)
[call](kt/call)
[holy](kt/holy)
[fast](other/fast)
[assembly](other/assembly)
Joel 2:16:
[people](other/peoplegroup)
[holy](kt/holy)
[assembly](other/assembly)
[elders](other/elder)
[gather](other/assembly)
[children](kt/children)
[infants](kt/children)
[bridegrooms](other/bridegroom)
[come out](other/send)
[bridal](other/bride)
Joel 2:17:
[priests](kt/priest)
[servants](other/servant)
[Yahweh](kt/yahweh)
[weep](other/mourn)
[people](other/peoplegroup)
[inheritance](kt/inherit)
[nations](other/nation)
[mock](other/mock)
Joel 2:18:
[Yahweh](kt/yahweh)
[zealous](kt/zealous)
[land](other/earth)
[pity](kt/compassion)
[people](other/peoplegroup)
Joel 2:19:
[Yahweh](kt/yahweh)
[people](other/peoplegroup)
[send](other/send)
[grain](other/grain)
[longer](other/time)
[disgrace](other/disgrace)
[nations](other/nation)
Joel 2:20:
[drive](other/castout)
[dry](other/barren)
[desolate](other/desolate)
[land](other/earth)
[the western sea](names/mediterranean)
[rise](other/raise)
[great](kt/majesty)
Joel 2:21:
[fear](kt/fear)
[land](other/earth)
[glad](other/joy)
[rejoice](other/joy)
[Yahweh](kt/yahweh)
[great](kt/majesty)
[things](kt/works)
Joel 2:22:
[fear](kt/fear)
[animals](other/beast)
[wilderness](other/desert)
[bear](other/bear)
[fruit](other/fruit)
[fig](other/fig)
[vines](other/vine)
Joel 2:23:
[glad](other/joy)
[people](other/peoplegroup)
[Zion](kt/zion)
[rejoice](other/joy)
[Yahweh](kt/yahweh)
[spring](other/fountain)
Joel 2:24:
[threshing](other/thresh)
[full](kt/filled)
[wheat](other/wheat)
[new wine](other/wine)
[oil](other/oil)
Joel 2:25:
[restore](kt/restore)
[years](other/biblicaltimeyear)
[locust](other/locust)
[great](kt/majesty)
[destroying](other/destroyer)
[mighty](other/mighty)
[sent](other/send)
Joel 2:26:
[satisfied](kt/filled)
[praise](other/praise)
[name](kt/name)
[Yahweh](kt/yahweh)
[wonders](other/amazed)
[never](kt/eternity)
[shame](other/shame)
[my people](kt/peopleofgod)
Joel 2:27:
[know](other/know)
[Israel](kt/israel)
[Yahweh](kt/yahweh)
[never](kt/eternity)
[shame](other/shame)
[my people](kt/peopleofgod)
Joel 2:28:
[flesh](kt/flesh)
[prophesy](kt/prophet)
[old men](other/elder)
[dream](other/dream)
[young men](kt/children)
[visions](other/vision)
Joel 2:29:
[servants](other/servant)
[female servants](other/servant)
[days](other/biblicaltimeday)
Joel 2:30:
[wonders](other/amazed)
[heavens](kt/heaven)
[blood](kt/blood)
[fire](other/fire)
[pillars](other/pillar)
Joel 2:31:
[turn](other/turn)
[darkness](other/darkness)
[blood](kt/blood)
[before](other/face)
[great](kt/majesty)
[day of Yahweh](kt/dayofthelord)
Joel 2:32:
[calls](kt/call)
[name](kt/name)
[Yahweh](kt/yahweh)
[saved](kt/save)
[Mount Zion](kt/zion)
[survivors](kt/remnant)
Joel 3:1:
[time](other/time)
[reverse](kt/restore)
[captivity](other/captive)
[Judah](names/judah)
[Jerusalem](names/jerusalem)
Joel 3:2:
[gather](other/assembly)
[nations](other/nation)
[Jehoshaphat](names/jehoshaphat)
[judge](kt/judge)
[my people](kt/peopleofgod)
[inheritance](kt/inherit)
[Israel](kt/israel)
[scattered](other/disperse)
[land](other/earth)
Joel 3:3:
[cast lots](other/lots)
[my people](kt/peopleofgod)
[prostitute](other/prostitute)
[wine](other/wine)
Joel 3:4:
[Tyre](names/tyre)
[Sidon](names/sidon)
[Philistia](names/philistia)
[return](other/return)
[repayment](other/reward)
[head](other/head)
Joel 3:5:
[silver](other/silver)
[gold](other/gold)
[precious](other/precious)
[treasures]()
[temples](kt/temple)
Joel 3:6:
[people](other/peoplegroup)
[Judah](names/judah)
[Jerusalem](names/jerusalem)
[Greeks](names/greek)
Joel 3:7:
[return](other/return)
[payment](other/reward)
[head](other/head)
Joel 3:8:
[by the hand of](other/hand)
[people](other/peoplegroup)
[Judah](names/judah)
[nation](other/nation)
[Yahweh](kt/yahweh)
Joel 3:9:
[nations](other/nation)
[mighty](other/mighty)
[come up](other/raise)
Joel 3:10:
[plowshares](other/plow)
[swords](other/sword)
[spears](other/spear)
[mighty](other/mighty)
Joel 3:11:
[nations](other/nation)
[Yahweh](kt/yahweh)
[warriors](other/warrior)
Joel 3:12:
[nations](other/nation)
[come up](other/raise)
[Jehoshaphat](names/jehoshaphat)
[judge](kt/judge)
Joel 3:13:
[harvest](other/harvest)
[winepress](other/winepress)
[full](kt/filled)
[wickedness](kt/evil)
Joel 3:14:
[day of Yahweh](kt/dayofthelord)
Joel 3:15:
[dark](other/darkness)
[brightness](other/light)
Joel 3:16:
[Yahweh](kt/yahweh)
[Zion](kt/zion)
[voice](other/voice)
[heavens](kt/heaven)
[earth](other/earth)
[shake](other/tremble)
[shelter](kt/tabernacle)
[people](other/peoplegroup)
[fortress](other/stronghold)
[Israel](kt/israel)
Joel 3:17:
[know](other/know)
[Yahweh](kt/yahweh)
[Zion](kt/zion)
[holy](kt/holy)
[Jerusalem](names/jerusalem)
[foreigners](other/foreigner)
Joel 3:18:
[that day](kt/judgmentday)
[wine](other/wine)
[flow](other/run)
[Judah](names/judah)
[water](other/water)
[fountain](other/fountain)
[house of Yahweh](kt/houseofgod)
Joel 3:19:
[Egypt](names/egypt)
[devastation](other/devastated)
[Edom](names/edom)
[wilderness](other/desert)
[violence](kt/evil)
[people](other/peoplegroup)
[Judah](names/judah)
[innocent](kt/innocent)
[blood](kt/blood)
[land](other/earth)
Joel 3:20:
[Judah](names/judah)
[forever](kt/eternity)
[Jerusalem](names/jerusalem)
[generation](other/generation)
Joel 3:21:
[blood](kt/blood)
[avenged](other/avenge)
[Yahweh](kt/yahweh)
[Zion](kt/zion)

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

@ -0,0 +1,146 @@
Joel 1:1 This is the word of Yahweh that came to Joel son of Pethuel.
Joel 1:2 Hear this, you elders, and listen, all you inhabitants of the land. Has anything like this happened in your days or in the days of your ancestors?
Joel 1:3 Tell your children about it, and let your children tell their children, and their children the next generation.
Joel 1:4 What the swarming locust has left, the great locust has eaten; what the great locust has left, the grasshopper has eaten; and what the grasshopper has left, the caterpillar has eaten.
Joel 1:5 Wake up, you drunkards, and weep! Wail, all you drinkers of wine, because the sweet wine has been cut off from you.
Joel 1:6 For a nation has come up upon my land, mighty and without number. His teeth are the teeth of a lion, and he has the teeth of a lioness.
Joel 1:7 He has made my vineyard into a desolate place and has stripped my fig tree bare. He has stripped its bark and thrown it away; the branches are bare white.
Joel 1:8 Mourn like a virgin girded in sackcloth for the death of her young bridegroom.
Joel 1:9 The grain offering and the drink offering have been cut off from the house of Yahweh. The priests, Yahweh's servants, mourn.
Joel 1:10 The fields are ruined; the ground is mourning because the grain has been destroyed. The new wine has dried up; the oil fails.
Joel 1:11 Be ashamed, you farmers, and wail, you vine growers, for the wheat and the barley. For the harvest of the fields has perished.
Joel 1:12 The vines have withered and the fig trees have dried up; the pomegranate trees, also the palm trees, and the apple trees—all the trees of the field have withered. For joy has withered away from the descendants of mankind.
Joel 1:13 Gird yourselves with sackcloth and mourn, you priests! Wail, you servants of the altar. Come, lie all night in sackcloth, you servants of my God. For the grain offering and the drink offering have been withheld from the house of your God.
Joel 1:14 Call for a holy fast, and call a holy assembly. Gather the elders and all the inhabitants of the land to the house of Yahweh your God, and cry to Yahweh.
Joel 1:15 Alas for the day! For the day of Yahweh is almost here. With it will come destruction from the Almighty.
Joel 1:16 Has not food been cut off from before our eyes, and joy and gladness from the house of our God?
Joel 1:17 The seeds rot under their clods, the storehouses are desolate, and the barns have been broken down, for the grain has withered.
Joel 1:18 How the cattle groan! Their herds are wandering in confusion because they have no pasture. Even the flocks of sheep are suffering.
Joel 1:19 Yahweh, I cry to you. For fire has devoured the pastures of the wilderness, and flames have burned all the trees of the fields.
Joel 1:20 Even the animals of the fields pant for you, for the water brooks have dried up, and fire has devoured the pastures of the wilderness.
Joel 2:1 Blow the trumpet in Zion, and sound an alarm on my holy mountain! Let all the inhabitants of the land tremble in fear, for the day of Yahweh is coming; indeed, it is near.
Joel 2:2 It is a day of darkness and gloom, a day of clouds and thick darkness. Like the dawn that spreads on the mountains, a large and mighty army is approaching. There has never been an army like it, and there never will be again, even after many generations.
Joel 2:3 A fire is consuming everything in front of it, and behind it a flame is burning. The land is like the garden of Eden in front of it, but behind it there is a ruined wilderness. Indeed, nothing will escape from it.
Joel 2:4 The army's appearance is like horses, and they run like horsemen.
Joel 2:5 They jump with a noise like that of chariots on the tops of the mountains, like the sound of fiery flames that devour the stubble, like a mighty army ready for battle.
Joel 2:6 At their presence people are in anguish and all their faces become pale.
Joel 2:7 They run like mighty warriors; they climb the walls like soldiers; they march, every one in step, and do not break their ranks.
Joel 2:8 Neither does one thrust another aside; they march, each in his path; they break through the defenses and do not fall out of line.
Joel 2:9 They rush on the city, they run on the wall, they climb in the houses, and they go through the windows like thieves.
Joel 2:10 The earth shakes in front of them, the heavens tremble, the sun and the moon are darkened, and the stars stop shining.
Joel 2:11 Yahweh raises his voice in front of his army, for his warriors are very numerous; for they are strong, those who carry out his commands. For the day of Yahweh is great and very terrible. Who can endure it?
Joel 2:12 "Yet even now"—this is Yahweh's declaration—"Return to me with all your heart. Fast, weep, and mourn."
Joel 2:13 Tear your heart and not only your garments, and return to Yahweh your God. For he is gracious and merciful, slow to anger and abounding in steadfast love and relenting from inflicting punishment.
Joel 2:14 Who knows? Will he perhaps turn and relent, and leave a blessing behind him, a grain offering and a drink offering for Yahweh your God?
Joel 2:15 Blow the trumpet in Zion, call for a holy fast, and call a holy assembly.
Joel 2:16 Gather the people; call for the holy assembly. Assemble the elders; gather the children and the nursing infants. Let the bridegrooms come out of their rooms, and the brides out of their bridal chambers.
Joel 2:17 Let the priests, the servants of Yahweh, weep between the porch and the altar. Let them say, "Spare your people, Yahweh, and do not make your inheritance into an object of scorn, that the nations mock them. Why should they say among the nations, 'Where is their God?'"
Joel 2:18 Then Yahweh was zealous for his land and had pity on his people.
Joel 2:19 Yahweh answered his people, "Look, I will send you grain, new wine, and oil. You will be satisfied with them, and I will no longer make you a disgrace among the nations.
Joel 2:20 I will remove the northern attackers far from you, and will drive them into a dry and desolate land. The front of their army will go into the eastern sea, and the rear into the western sea. Its stench will rise, and its bad smell will rise." Indeed, he has done great things.
Joel 2:21 Do not fear, land; be glad and rejoice, for Yahweh will do great things.
Joel 2:22 Do not fear, you wild animals! For the pastures of the wilderness will sprout, the trees will bear their fruit, and the fig trees and the vines will yield their full harvest.
Joel 2:23 Be glad, people of Zion, and rejoice in Yahweh your God. For he will give you the autumn rain as vindication and bring down showers for you, the autumn rain and the spring rain as before.
Joel 2:24 The threshing floors will be full of wheat, and the vats will overflow with new wine and oil.
Joel 2:25 "I will restore to you the years of crops that the swarming locust has eaten—the great locust, the devouring locust, and the destroying locust—my mighty army that I sent among you.
Joel 2:26 You will eat plentifully and be satisfied, and praise the name of Yahweh your God, who has done wonders among you, and I will never again bring shame on my people.
Joel 2:27 You will know that I am among Israel, and that I am Yahweh your God, and there is none else, and I will never bring shame on my people.
Joel 2:28 It will come about afterward that I will pour out my Spirit on all flesh, and your sons and your daughters will prophesy. Your old men will dream dreams; your young men will see visions.
Joel 2:29 Also on servants and female servants, in those days I will pour out my Spirit.
Joel 2:30 I will show wonders in the heavens and on the earth, blood, fire, and pillars of smoke.
Joel 2:31 The sun will turn into darkness and the moon into blood, before the great and terrible day of Yahweh comes.
Joel 2:32 It will be that everyone who calls on the name of Yahweh will be saved. For on Mount Zion and in Jerusalem there will be those who escape, as Yahweh has said, and among the survivors, those whom Yahweh calls.
Joel 3:1 Behold, in those days and at that time, when I reverse the captivity of Judah and Jerusalem,
Joel 3:2 I will gather all the nations, and bring them down to the Valley of Jehoshaphat. I will judge them there, because of my people and my inheritance Israel, whom they scattered among the nations, and because they divided up my land.
Joel 3:3 They cast lots for my people, traded a boy for a prostitute, and sold a girl for wine so they could drink.
Joel 3:4 Now, why are you angry at me, Tyre, Sidon and all the regions of Philistia? Will you repay me? Even if you do repay me, I will immediately return your repayment on your own head.
Joel 3:5 For you took my silver and my gold, and you brought my precious treasures into your temples.
Joel 3:6 You sold the people of Judah and Jerusalem to the Greeks, in order to send them far away from their territory.
Joel 3:7 Look, I am about to stir them up, out of the place where you sold them, and will return payment on your own head.
Joel 3:8 I will sell your sons and your daughters, by the hand of the people of Judah. They will sell them to the Sabeans, to a nation far off, for Yahweh has spoken."
Joel 3:9 Proclaim this among the nations: "Prepare yourselves for war; rouse the mighty men; let them come near; let all the men of battle come up.
Joel 3:10 Beat your plowshares into swords and your pruning knives into spears. Let the weak say, 'I am mighty.'
Joel 3:11 Hurry and come, all you nearby nations; gather yourselves together there. Yahweh, bring down your mighty warriors.
Joel 3:12 Let the nations wake themselves up and come up to the Valley of Jehoshaphat. For there will I sit to judge all the surrounding nations.
Joel 3:13 Put in the sickle, for the harvest is ripe. Come, crush the grapes, for the winepress is full. The vats overflow, for their wickedness is great."
Joel 3:14 There is a tumult, a tumult in the Valley of Judgment. For the day of Yahweh is near in the Valley of Judgment.
Joel 3:15 The sun and the moon become dark, the stars keep back their brightness.
Joel 3:16 Yahweh will roar from Zion, and raise his voice from Jerusalem. The heavens and earth will shake, but Yahweh will be a shelter for his people, and a fortress for the people of Israel.
Joel 3:17 "So you will know that I am Yahweh your God who lives in Zion, my holy mountain. Then Jerusalem will be holy, and foreigners will not pass through her again.
Joel 3:18 It will come about on that day that the mountains will drip with sweet wine, the hills will flow with milk, all the brooks of Judah will flow with water, and a fountain will come from the house of Yahweh and water the Valley of Shittim.
Joel 3:19 Egypt will become an abandoned devastation, and Edom will become an abandoned wilderness, because of the violence done to the people of Judah, because they shed innocent blood in their land.
Joel 3:20 But Judah will be inhabited forever, and Jerusalem will be inhabited from generation to generation.
Joel 3:21 I will avenge their blood that I have not yet avenged, for Yahweh lives in Zion."

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
</head>
<body>
<p>Joel 2:23 Be glad, people of Zion, and rejoice in Yahweh your God. For he will give you the autumn rain as vindication and bring down showers for you, the autumn rain and the spring rain as before.
</p>
<p>So rejoice &lt;H1523&gt;, O sons &lt;H1121&gt; of Zion &lt;H6726&gt;, And be glad &lt;H8055&gt; in the LORD &lt;H3068&gt; your God &lt;H430&gt;; For He has given &lt;H5414&gt; you the early &lt;H4175a&gt; rain &lt;H4175a&gt; for your <span style="color:red">vindication</span> <<span style="color:red">H6666</span>&gt;. And He has poured &lt;H3381&gt; down &lt;H3381&gt; for you the rain &lt;H1653&gt;, The early &lt;H4175a&gt; and latter &lt;H4456&gt; rain &lt;H4456&gt; as before &lt;H7223&gt;. </p>
<p>
/Users/Henry/Documents/git.Door43/en_tw/bible/other/integrity<br />
/Users/Henry/Documents/git.Door43/en_tw/bible/kt/justice<br />
/Users/Henry/Documents/git.Door43/en_tw/bible/kt/righteous<br />
</p>
<p>
/Users/Henry/Documents/git.Door43/en_tw/bible/other/integrity: * Strong's: H3476, H6664, <span style="color:red">H6666</span>, H8535, H8537, H8537, H8538, H8549, G4587<br />
/Users/Henry/Documents/git.Door43/en_tw/bible/kt/justice: * Strong's: H205, H2555, H3477, H4941, H5766, H5767, H6415, H6662, H6663, H6664, <span style="color:red">H6666</span>, H8003, H8636, G91, G93, G94, G95, G1342, G1343, G1344, G1345, G1346, G1347, G1556, G1738, G2118<br />
/Users/Henry/Documents/git.Door43/en_tw/bible/kt/righteous: * Strong's: H205, H2555, H3072, H3474, H3476, H3477, H3483, H4334, H4339, H5228, H5229, H5324, H5765, H5766, H5767, H5977, H6662, H6663, H6664, H6665, <span style="color:red">H6666</span>, H8535, H8537, H8549, H8552, G93, G94, G458, G824, G1341, G1342, G1343, G1344, G1345, G1346<br />
</p>
<p>
</p>
</body>
</html>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Mismatched Snippets</title>
<meta name="generator" content="BBEdit 8.5" />
</head>
<body>
</body>
</html>

View File

@ -0,0 +1,53 @@
Instructions for use of this file are below the second "===============" line.
Here are the current defaults the scripts will be looking for.
===============
Text editor: /Applications/BBEdit.app
HTML browser: /Applications/Firefox.app
Repository directory: /Users/Henry/Documents/git.Door43
translationNotes path: en_tn
translationWords path: en_tw
Unlocked Literal Bible path: ULB/bible
Hebrew Bible XML path: OSHB
Greek Bible USFM path: UGNT
User default file: User/User_defaults.txt
===============
INSTRUCTIONS
To find the path to the required files, use either Windows File Explorer, Linux Files, or Mac Finder to navigate to where your files are located. Right-click (secondary click) on the file name.
In Windows or Linux, this will open a dialog box that gives you the path name and the name of the program. Put the path name, either a backslash (Windows) or a forward slash (Linux), and the application name in the appropriate line below.
In Mac, this will open a menu. If the menu offers "Services," click that and then click "Copy Path"; otherwise click "Copy Path." Then paste the full path in the line below.
Note in the samples that any program or application that you can call any program or application you care to use.
The Text Editor
The text editor is the program or application you will use to edit the files produced by the scripts.
This line (without the #) will call Komodo Edit 10 on a Mac
# Text editor: /Applications/Komodo Edit 10.app
This line (without the #) will call Komodo Edit on a Linux machine.
# Text editor: Komodo-Edit-9/lib/mozilla/Komodo
This line (without the #) will call Notepad ++ on a Windows machine.
# Text editor: "C:\Program Files (x86)\Notepad++\notepad++"
The Repository Directory
This is the top directory for all ULB, translationNotes, translationWords, and UDB files.
Sample Mac path
# Repository directory: /Users/John/Documents/git.Door43
Sample Windows path
# Repository directory: C:\Documents\TranslationFiles
Sample Linux path
# Repository directory: home/john/Documents/TranslationFiles

View File

@ -0,0 +1,27 @@
Matthew 41-MAT Mt
# Mark 42-MRK Mk
# Luke 43-LUK Lu
# John 44-JHN Jn
# Acts 45-ACT Ac
# Romans 46-ROM Ro
# 1 Corinthians 47-1CO 1co
# 2 Corinthians 48-2CO 2co
# Galatians 49-GAL Ga
# Ephesians 50-EPH Ep
# Philippians 51-PHP Pp
# Colossians 52-COL Co
# 1 Thessalonians 53-1TH 1th
# 2 Thessalonians 54-2TH 2th
# 1 Timothy 55-1TI 1ti
# 2 Timothy 56-2TI 2ti
# Titus 57-TIT Ti
# Philemon 58-PHM Pm
# Hebrews 59-HEB He
# James 60-JAS Jas
# 1 Peter 61-1PE 1pe
# 2 Peter 62-2PE 2pe
# 1 John 63-1JN 1jn
# 2 John 64-2JN 2jn
# 3 John 65-3JN 3jn
# Jude 66-JUD Jud
# Revelation 67-REV Re

View File

@ -0,0 +1,8 @@
Joel jol Joel Joe
# Obadiah oba Obad Ob
# Jonah jon Jonah Jon
# Habakkuk hab Hab Hab
# Nahum nam Nah Na
# Zephaniah zep Zeph Zep
# Haggai hag Hag Hag
# Malachi mal Mal Mal

View File

@ -0,0 +1,5 @@
sh update.nt.sh
#perl "/Users/Henry/Google Drive/WA/Test/tWs.from.UGNT.4.pl"
#perl "/Users/Henry/Google Drive/WA/Test/tWs.from.UGNT.5.pl"
#perl "/Users/Henry/Google Drive/WA/Test/tWs.from.UGNT.6.pl"
perl "tWs.from.UGNT.8.pl"

View File

@ -0,0 +1,6 @@
sh update.ot.sh
#perl "/Users/Henry/Google Drive/WA/Test/tWs.from.UGNT.4.pl"
#perl "/Users/Henry/Google Drive/WA/Test/tWs.from.UGNT.5.pl"
#perl "/Users/Henry/Google Drive/WA/Test/tWs.from.UGNT.6.pl"
# perl "/Users/Henry/Google Drive/WA/Test/tWs.from.UGNT.7.pl"
perl "tWs.from.OSHB.1.pl"

View File

@ -0,0 +1,2 @@
# Connects the URL, Strong's number, and ref for anomalous entries.
perl "Mine.URL.Strong.Verse.NT.2.pl"

View File

@ -0,0 +1,2 @@
# Connects the URL, Strong's number, and ref for anomalous entries.
perl "Mine.URL.Strong.Verse.OT.2.pl"

View File

@ -0,0 +1,548 @@
# Produces list of tWs for each verse by linking OSHB to ULB through tWs.
# Taken from tWs.from.UGNT.7.pl, with changes needed because that used USFM
# and this uses XML
# The output from this script is useful for the interleaved PDFs used in MAST.
# This version uses an exception file to handle places where the OSHB points to
# a tW page different from that on which the ULB term appears.
# Make sure the correct input file is $ULBfile. Run script.
# Output is in $output file.
# Check the $missing
# file for needed corrections, probably lines needing to be added to the
# $exceptions file.
use 5.12.0;
use File::Slurp;
use File::Find ;
use Cwd ;
use utf8;
#use open IN => ":utf8", OUT => ":utf8";
use open IO => ":utf8";
use List::MoreUtils qw(uniq);
my ($pwd, $os, $d) = (cwd(), $^O, "\\");
if ($os eq "darwin") {$d = "/"}
elsif ($os eq "linux") {$d = "/"}
else {$d = "\\"}
my ($cv, $ULBfile, $exceptions, $missing, $log, $output, $workFile, $verseMap) =
("00000",
"Temp${d}Extract.txt",
"Exceptions${d}Exceptions_tWs_from_OSHB.txt",
"Output${d}Entries_not_handled.txt",
"Logs${d}log.log",
"Output${d}tWs_for_OT_PDF.txt",
"User${d}tW_work_OT.txt",
"OSHB${d}VerseMap.xml",
);
my ($OSHBfile, $topTwDir, $textEditor, $repoPath, $topSourceLangDir);
my (%entries, %text, %ref, %order, %pages, %listOfPages, %sourcePage, %checkPages, %foundPages, %substitutedPages,
%specifiedText, %realPage, %checkPage, %workEntries, %vsn, %StrongNum, %fullText, %ulbOrder, %bkAbr, %bkFull, %relevantSNs,
%SNsInCV, %entriesThisSN, %entriesThisPage, %pagesThisSN, %pageThisEntry, %adjust, %newRef);
my $book;
my (@OSHBfileList);
# ==============================
chdir("$pwd");
open LOG, ">:utf8", "$log" or die "\$log: $log: $!";
open OUT, ">:utf8", $output or die "$!";
open MISSING, ">$missing" or die "$!";
while (<DATA>) {
chomp;
if (/([^\t]*)\t([^\t]*)/) {
$bkAbr{$2} = $1;
$bkFull{$1} = $2;
}
}
GetUserDefaults();
GetULBBooksToProcess();
CheckForRemaps();
ReadExceptions();
PairtWEntriesTotWPageAndUniqSNs();
ReadLinkedSNs();
LinkULBtoCV();
LinkSNsToULBtextViaEntries();
#Output();
close MISSING;
close OUT;
close LOG;
system ("$textEditor $missing");
print "\n\tDone.\n\n";
# ==============================
sub GetUserDefaults {
open (my $defaults, "<:utf8", "User${d}User_defaults.txt") or die "User${d}User_defaults.txt:\n$!";
while (my $thisLine = <$defaults>) {
chomp $thisLine;
if ($thisLine =~ /^Text editor: (.*)$/) {
$textEditor = $1;
if ($os eq "darwin") {
$textEditor = "open -a $textEditor"
}
} elsif ($thisLine =~ /^Repository directory: (.*)$/) {
$repoPath = $1
}
}
say LOG "\$textEditor: $textEditor\n\$repoPath: $repoPath";
die "No text editor found" if $textEditor eq "";
die "No path to repo found" if $repoPath eq "";
($topTwDir, $topSourceLangDir) = ("$repoPath${d}en_tw${d}bible", "$repoPath${d}OSHB");
close $defaults;
}
sub GetULBBooksToProcess {
say LOG "GetULBBooksToProcess";
open (my $file, "<:utf8", "$workFile") or die "$workFile:\n$!";
while (my $line = <$file>) {
chomp $line;
say LOG $line;
if ($line =~ /^[^#][^\t]*\t[^\t]*\t([^\t]*)\t[^\t]*$/) {
$OSHBfile = "$topSourceLangDir${d}$1.xml";
push @OSHBfileList, $OSHBfile;
}
}
close $file;
say LOG "\@OSHBfileList: @OSHBfileList"
}
sub CheckForRemaps {
#say LOG "Checking for remaps";
open (my $file, "<:utf8", "$repoPath${d}$verseMap") or die "$verseMap:\n$!";
while (my $thisLine = <$file>) {
chomp $thisLine;
#say LOG $thisLine;
if ($thisLine =~ /<verse wlc="([^\.]*)\.(\d+)\.(\d+)" kjv="([^\.]*)\.(\d+)\.(\d+)" type="full"\/>/) {
#say LOG "*\t$thisLine";
my ($oldB, $oldC, $oldV, $newB, $newC, $newV) =($bkFull{$1}, $2, $3, $bkFull{$4}, $5, $6);
my $oldie = "$oldB $oldC:$oldV";
$newRef{$oldie} = "$newB $newC:$newV";
say LOG "**\t" . "\$newRef{$oldie}: " . $newRef{"$oldB $oldC:$oldV"}
}
}
close $file;
}
sub ReadExceptions {
say LOG "ReadExceptions from \$exceptions: $exceptions";
open (my $file, "<:utf8", "$exceptions") or die "$exceptions:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /^([^#\n][^\t\n]*)\t([^\t\n]*\t[^\t\n]*)$/) {
my ($rf, $oldNew) = ($1, $2);
say LOG "\$line: $line, \$rf: $rf, \$oldNew: $oldNew";
($adjust{$rf}) .= "$oldNew, ";
$specifiedText{$rf} = 1;
}
}
close $file;
}
sub PairtWEntriesTotWPageAndUniqSNs {
my (@filesToRun, @relevantSNs) = ();
my $filePattern = '*.md' ;
find (sub {push @filesToRun, $File::Find::name if (m/^(.*)$filePattern$/)}, $topTwDir) ;
#say LOG "\@filesToRun: @filesToRun";
foreach my $file (@filesToRun) {
my ($thisList, $shortFile) = ("", $file);
$shortFile =~ s/$topTwDir\/(.*)\.md/$1/;
#if ($shortFile =~ /^(kt|names)/) {
my $fileText = read_file("$file", binmode => 'utf8');
if ($fileText =~ /^# ([^\n]*)\r?\n/) {
$thisList = $1;
$thisList =~ s/ \([^\)]*\)//g;
$entriesThisPage{$shortFile} = $thisList;
my @ULBEntries = split /, /, $thisList;
foreach my $ULB (@ULBEntries) {
$pageThisEntry{$ULB} = $shortFile;
}
my @tempArray = split /, /, $thisList;
foreach my $slice (@tempArray) {
$sourcePage{$slice} = $shortFile;
#say LOG "$slice: $sourcePage{$slice}";
}
}
if ($fileText =~ /Strong's(.*)$/ms) {
my $SNs = $1;
while ($SNs =~ s/[H](\d*)//) {
push @relevantSNs, $1;
$entriesThisSN{$1} .= "$thisList, ";
$pagesThisSN{$1} .= "$shortFile, ";
}
}
@relevantSNs = uniq(@relevantSNs);
foreach (@relevantSNs) {
$relevantSNs{$_} = "$_";
#say LOG $relevantSNs{$_}
}
#}
#say LOG "|$shortFile|: \t |$entriesThisPage{$shortFile}|"
}
#say LOG "====";
#say LOG "====";
}
sub LinkULBtoCV {
say LOG "LinkULBtoCV, \$ULBfile: $ULBfile";
open IN, "$ULBfile" or die "$ULBfile: $!";
while (<IN>) {
#say LOG $_;
if (/^([^\t]*)\t(.*)$/) {
$cv ++;
($text{$1}, $fullText{$1}) = ($2, $2);
$ref{$cv} = $1;
$order{$1} = $cv;
}
#say LOG "First \$ref{$cv}: $ref{$cv}\n\$text{$ref{$cv}}: $text{$ref{$cv}}";
}
close IN;
foreach my $key (sort keys %ref) {
#say LOG "\$key: $key:, \$ref{$key}: $ref{$key}, \$text{$ref{$key}}: $text{$ref{$key}}"
}
}
sub ReadLinkedSNs {
my ($flag, $OSHBfile) = ("","");
foreach $OSHBfile (@OSHBfileList) {
#say LOG "opening \$OSHB $OSHBfile";
open IN, "$OSHBfile" or die "$OSHBfile can't be opened\n\n";
my ($thisBook, $thisChap, $thisVers, $thisRef);
my (@pages);
while (<IN>) {
chomp;
if (/<verse osisID="([^\.]*).(\d+).(\d+)">/) {
my ($bk, $ch, $vs) = ($1, $2, $3);
say LOG "#>\t$bk $ch:$vs";
#if (exists $newRef{"$bk $ch:$vs"}) {
# $thisRef = $newRef{"$bk $ch:$vs"}
#} else {
($thisRef) = ("$bkFull{$bk} $ch:$vs");
#}
say LOG "##\t$bk $ch:$vs, $thisRef";
}
else {
while (/<w lemma="(\w\/)?(\d+)( \w)?"/g) {
#say LOG $_;
my ($thisNum) = ($2);
say LOG "\t\$thisNum: $thisNum, \$SNsInCV{$thisRef}: $SNsInCV{$thisRef}";
if (exists $relevantSNs{$thisNum}) {
$SNsInCV{$thisRef} .= "$thisNum " unless ($SNsInCV{$thisRef} =~ /\b$thisNum\b/);
}
say LOG ">\t\$thisNum: $thisNum, \$SNsInCV{$thisRef}: $SNsInCV{$thisRef}";
}
}
}
close IN;
}
my %temp;
foreach my $oldRef (sort keys %SNsInCV) {
if (exists $newRef{$oldRef}) {
$temp{$newRef{$oldRef}} = $SNsInCV{$oldRef};
delete $SNsInCV{$oldRef};
}
}
foreach my $changedRef (sort keys %temp) {
$SNsInCV{$changedRef} = $temp{$changedRef}
}
}
sub LinkSNsToULBtextViaEntries {
say LOG "sub LinkSNsToULBtextViaEntries called";
foreach my $thisRef (sort keys %ref) {
say LOG "\nLinkSNsToULBtextViaEntries: \$thisRef: $thisRef\t\$ref{$thisRef}: $ref{$thisRef}";
(%workEntries, %ulbOrder) = ();
my %workPage;
my ($thisCV, $checkList, $tempString, $outString) = ($ref{$thisRef}, "", "", "");
say OUT "$thisCV:";
my (@allEntries);
$listOfPages{$thisCV} = "";
#say LOG "\$SNsInCV{$thisCV}: |$SNsInCV{$thisCV}|\n$text{$thisCV}";
say LOG "\t\$SNsInCV{$thisCV}: >$SNsInCV{$thisCV}<";
$SNsInCV{$thisCV} =~ s/^ +//;
$SNsInCV{$thisCV} =~ s/ +$//;
$SNsInCV{$thisCV} =~ s/ {2,}/ /g;
say LOG "*\t\$SNsInCV{$thisCV}: >$SNsInCV{$thisCV}<";
if (exists $specifiedText{$thisCV}) {
#say LOG "*\t\$SNsInCV{$thisCV}: $SNsInCV{$thisCV}";
$SNsInCV{$thisCV} = Adjust($SNsInCV{$thisCV}, $thisCV);
$SNsInCV{$thisCV} =~ s/^ +(.*) +$/$1/;
$SNsInCV{$thisCV} =~ s/ {2,}/ /g;
say LOG "**\t\$SNsInCV{$thisCV}: >$SNsInCV{$thisCV}<";
}
#say LOG "<>\t<>\t\$SNsInCV{$thisCV}: |$SNsInCV{$thisCV}|";
my @regArray = split / /, $SNsInCV{$thisCV};
say LOG "\@regArray: >@regArray<";
foreach my $thisNum (@regArray) {
my ($found, $specPage);
say LOG "\$thisNum: >$thisNum<\t\$entriesThisSN{$thisNum}: >$entriesThisSN{$thisNum}<";
if ($thisNum =~ /\d+(\[(\w+)\])/) {
$outString .= "$1($pageThisEntry{$2})\n";
next;
} elsif ($thisNum =~ /\d+(\(([\w\/]+)\))/) {
$specPage .= $2;
say LOG "\$specPage: $specPage";
}
if ($specPage) {
$workEntries{$thisNum} = $entriesThisPage{$specPage};
} else {
$workEntries{$thisNum} = $entriesThisSN{$thisNum};
}
$workEntries{$thisNum} =~ s/, $//;
say LOG "**\t\$thisNum: >$thisNum<\t\$workEntries{$thisNum}: >$workEntries{$thisNum}<";
my @beforeArray = split /, /, $workEntries{$thisNum};
my @sortedArray = reverse sort { substr($a,0,1) <=> substr($b,0,1)
|| length($a) <=> length($b)
|| $a <=> $b }
@beforeArray;
$" = "\n\t";
say LOG "\@sortedArray: @sortedArray\n\$outString: $outString";
foreach my $entry (@sortedArray) {
my $testEntry = $entry;
print LOG "\$entry: $entry. Becomes ";
while ($testEntry =~ s/^(.*) \.\.\. (.*)/($1)\\b(.*?)\\b($2)/) {}
print LOG "\$testEntry: |$testEntry| and is ";
if ($testEntry =~ /\(\.\*\?\)/ && $text{$thisCV} =~ s/\b($testEntry)\b/$3/i) {
say LOG "\n===\n and is found in first test.\n===";
$outString .= "[$entry]($pageThisEntry{$entry})\n";
$found = 1;
goto Breakout;
} elsif ($text{$thisCV} =~ s/\b($testEntry)\b//i) {
say LOG "\n===\nand is found in second test.\n===";
$outString .= "[$entry]($pageThisEntry{$entry})\n";
$found = 1;
goto Breakout;
} else {
say LOG "and is not found in\n$text{$ref{$thisRef}}";
}
}
Breakout:
say MISSING "$thisCV $thisNum" unless ($found);
next if $found;
}
say LOG "\t\$outString: $outString";
$outString = ProperOrderOutString($outString, $thisCV);
say LOG "<>\t\$outString: $outString";
say OUT "$outString";
#say LOG "sub LinkSNsToULBtextViaEntries finished";
}
}
sub Adjust {
my ($snsOld, $ref, $snsNew, $addToSnsNew) = ($_[0], $_[1], "", "");
say LOG "\$specifiedText{$ref}: $specifiedText{$ref}\n\$snsOld: $snsOld";
my (%tempEntries);
#say LOG ">\t\$sns: |$sns|";
#say LOG ">\t\$specifiedText{$ref}: |$specifiedText{$ref}|";
$snsOld =~ s/^ +LinkSNsToULBtextViaEntries//;
my @oldArray = split / /, $snsOld;
#say LOG "\$adjust{$ref}: $adjust{$ref}";
my @preadjustments = split /, /, $adjust{$ref};
foreach my $adjustment (@preadjustments) {
#say LOG "<><>\t\$adjustment: >$adjustment<";
if ($adjustment =~ /([^\t]*)\t\|\|$/) { # delete this from list to look for
my $found = $1;
$snsOld =~ s/$found ?//;
say LOG "\$found: $found should be deleted from \$snsOld: $snsOld";
} elsif ($adjustment =~ /^\|\|\t(.*)/) { # add this to list to look for
my $adj = $1;
say LOG "\$adjustment: $adjustment, \$adj: $adj";
if ($adj =~ /([^\t]*)\t([^\t]*)/) {
$snsNew = "[$1]($pageThisEntry{$2})"
} else {
$snsNew .= "$adj "
}
} elsif ($adjustment =~ /^(\d+)\t(\w+)$/) { # add specified word
my ($found1, $found2) = ($1, $2);
#$addToSnsNew .= "$1\[$2\] ";
$snsOld =~ s/$found1/$found1\[$found2\]/;
say LOG "\$snsOld: $snsOld";
} elsif (($adjustment =~ /^(\d+)\t([\/\d\w]+)$/)) { # add specified page
#$addToSnsNew .= "$1\{$2\} "
my ($found1, $found2) = ($1, $2);
$snsOld =~ s/$found1/$found1\($found2\)/;
say LOG "\$snsOld: $snsOld";
}
}
say LOG "\$snsNew: >$snsNew<\n\$snsOld+\$snsNew: >$snsOld< >$snsNew<";
$snsNew = "$snsOld $snsNew";
return $snsNew;
}
sub Output {
#say LOG "Output subRoutine called";
foreach my $key (sort keys %ref) {
my %donePages;
my $thisRef = $ref{$key};
#print LOG "\$key: $key\t\$thisRef: $thisRef\t";
#say LOG "\$SNsInCV{$thisRef}: |$SNsInCV{$thisRef}|";
$SNsInCV{$thisRef} =~ s/^ +//;
$SNsInCV{$thisRef} =~ s/ +$//;
$SNsInCV{$thisRef} =~ s/ {2,}/ /;
#say LOG "\$SNsInCV{$thisRef}: |$SNsInCV{$thisRef}|";
#say LOG "\$listOfPages{$thisRef}: |$listOfPages{$thisRef}|";
#$listOfPages{$thisRef} =~ s/^ +//;
#$listOfPages{$thisRef} =~ s/ +$//;
#$listOfPages{$thisRef} =~ s/ {2,}/ /;
#say LOG "\$listOfPages{$thisRef}: |$listOfPages{$thisRef}|";
my @array = split /\n/, $listOfPages{$thisRef};
#say LOG "\@array: |@array|";
my @sorted =
sort sort { lc($a) cmp lc($b) }
@array;
#say LOG "\@sorted: |@sorted|";
$" = "\n";
$listOfPages{$thisRef} = "@sorted";
say LOG "\$listOfPages{$thisRef}: $listOfPages{$thisRef}\n\$checkPages{$thisRef}: $checkPages{$thisRef}";
#say OUT "$thisRef: $listOfPages{$thisRef}\n";
$checkPages{$thisRef} =~ s/^ +//;
$checkPages{$thisRef} =~ s/ +$//;
$checkPages{$thisRef} =~ s/ {2,}/ /;
$checkPages{$thisRef} =~ s/ \|\|//;
say LOG "\$checkPages{$thisRef}:\t|$checkPages{$thisRef}|";
my @checkArray = split / /, $checkPages{$thisRef};
shift @sorted;
#say LOG "\@checkArray: |@checkArray|";
#say LOG "\@sorted: |@sorted|";
#shift @sorted;
#say LOG "\@sorted: |@sorted|";
foreach my $slice (@sorted) {
#print LOG "\$slice: $slice\t";
$slice =~ s/\[.*?\]\((.*?)\)/$1/;
#say LOG "\t\$slice: $slice";
$donePages{$slice} = $slice;
#say LOG "\t\$donePages{$slice}: $donePages{$slice}"
}
#say LOG "\@checkArray: |@checkArray|";
foreach my $slice (@checkArray) {
#say LOG "\$slice: $slice";
unless (exists $donePages{$slice}) {
#say LOG "\$thisRef: $thisRef\t\$slice:$slice";
#say MISSING "$thisRef\t$slice\t||";
say MISSING "$thisRef\t$slice";
}
}
}
}
sub Substitute {
foreach my $key (sort keys %pages) {
say LOG "\$key: $key\t\$SNsInCV{$key}: $SNsInCV{$key}";
if (exists $substitutedPages{$key}) {
#say LOG "\$substitutedPages{$key}: $substitutedPages{$key}";
$substitutedPages{$key} =~ s/, $//;
my @array = split /, /, $substitutedPages{$key};
foreach my $slice (@array) {
#say LOG "\$slice: $slice";
if ($slice =~ /([^\t]*)\t([^\t]*)/) {
#say LOG "\n\$key: $key";
my ($old, $new) = ($1, $2);
#say LOG "\$old: >$old<\t\$new: >$new<";
#say LOG "\$SNsInCV{$key}: >>$SNsInCV{$key}<<";
if ($old eq "||") {
$SNsInCV{$key} .= "$new ";
$checkPages{$key} = $SNsInCV{$key};
}
elsif ($new eq "||") {
$SNsInCV{$key} =~ s/$old //;
$checkPages{$key} = $SNsInCV{$key};
}
else {
$SNsInCV{$key} =~ s/$old/$new/;
$checkPages{$key} = $SNsInCV{$key};
}
$SNsInCV{$key} =~ s/ \|\|//g;
#say LOG "\$SNsInCV{$key}: >>>$SNsInCV{$key}<<<";
}
}
} else {
$checkPages{$key} = $SNsInCV{$key};
}
say LOG "<>\t\$key: $key\t\$SNsInCV{$key}: $SNsInCV{$key}";
}
}
sub ProperOrderOutString {
my @unordered = split /\n/, $_[0];
my ($thisCV, $outS) = ($_[1], "");
my (%orderedSet);
foreach my $thisSet (@unordered) {
if ($thisSet =~ /(\[([^\]]*)\])(\([^\)]*\))/) {
my ($ulb, $fileLoc) = ($2, $3);
if ($fullText{$thisCV} =~ /^(.*?)\b($ulb)\b(.*)$/) {
my ($order) = (length $1);
$orderedSet{$order} = $thisSet;
}
}
}
foreach my $key (sort {$a<=>$b} keys %orderedSet) {
$outS .= "$orderedSet{$key}\n"
}
return $outS;
}
__DATA__
1Chr 1 Chronicles
1Kgs 1 Kings
1Sam 1 Samuel
2Chr 2 Chronicles
2Kgs 2 Kings
2Sam 2 Samuel
Amos Amos
Dan Daniel
Deut Deuteronomy
Eccl Ecclesiastes
Esth Esther
Exod Exodus
Ezek Ezekiel
Ezra Ezra
Gen Genesis
Hab Habakkuk
Hag Haggai
Hos Hosea
Isa Isaiah
Jer Jeremiah
Job Job
Joel Joel
Jonah Jonah
Josh Joshua
Judg Judges
Lam Lamentations
Lev Leviticus
Mal Malachi
Mic Micah
Nah Nahum
Neh Nehemiah
Num Numbers
Obad Obadiah
Prov Proverbs
Ps Psalms
Ruth Ruth
Song Song of Songs
Zech Zechariah
Zeph Zephaniah

View File

@ -0,0 +1,441 @@
# Produces list of tWs for each verse by linking UGNT to ULB through tWs.
# Seems to give usable output but puts \d John in MISSING when John is also processed.
# Derived from version from OT.
# The output from this script is useful for the interleaved PDFs used in MAST.
# This version uses an exception file to handle places where the UGNT points to
# a tW page different from that on which the ULB term appears.
# Make sure the correct input file is $ULBfile. Run script.
# Output is in $output file.
# Check the $missing
# file for needed corrections, probably lines needing to be added to the
# $exceptions file.
use 5.12.0;
use File::Slurp;
use File::Find ;
use Cwd ;
use utf8;
#use open IN => ":utf8", OUT => ":utf8";
use open IO => ":utf8";
use List::MoreUtils qw(uniq);
my ($pwd, $os, $d) = (cwd(), $^O, "\\");
if ($os eq "darwin") {$d = "/"}
elsif ($os eq "linux") {$d = "/"}
else {$d = "\\"}
my ($cv, $ULBfile, $exceptions, $missing, $log, $output, $workFile, $UGNTfile, $topSourceLangDir, $textEditor, $repoPath, $topTwDir) =
("00000",
"Temp${d}Extract.txt",
"Exceptions${d}Exceptions_tWs_from_UGNT.txt",
"Output${d}Entries_not_handled.txt",
"Logs${d}log.log",
"Output${d}tWs_for_NT_PDF.txt",
"User${d}tW.work.NT.dat"
);
my (%entries, %text, %ref, %order, %pages, %listOfPages, %sourcePage, %checkPages, %foundPages, %substitutedPages,
%specifiedText, %realPage, %checkPage, %workEntries, %vsn, %StrongNum, %fullText, %ulbOrder);
my $book;
my @UGNTfileList;
# ==============================
chdir("$pwd");
open LOG, ">:utf8", "$log" or die "\$log: $log: $!";
open OUT, ">:utf8", $output or die "$!";
open MISSING, ">$missing" or die "$!";
GetUserDefaults();
GetULBBooksToProcess();
ReadExceptions();
PairtWEntriesTotWPage();
ReadLinkedSNs();
LinkULBtoCV();
LinkEntriestoULBtext();
close MISSING;
close OUT;
close LOG;
if ($os eq "darwin") {
system ("open -a $textEditor $missing");
} else {
system ("$textEditor $missing");
}
print "\n\tDone.\n\n";
# ==============================
sub GetUserDefaults {
open (my $defaults, "<:utf8", "User${d}User_defaults.txt") or die "User${d}User_defaults.txt:\n$!";
while (my $thisLine = <$defaults>) {
chomp $thisLine;
if ($thisLine =~ /^Text editor: (.*)$/) {
$textEditor = $1;
} elsif ($thisLine =~ /^Repository directory: (.*)$/) {
$repoPath = $1
}
}
say LOG "\$textEditor: $textEditor, \$repoPath: $repoPath";
die "No text editor found" if $textEditor eq "";
die "No path to repo found" if $repoPath eq "";
$topTwDir = "$repoPath${d}en_tw${d}bible";
$topSourceLangDir = "$repoPath${d}";
close $defaults;
}
sub GetULBBooksToProcess {
open (my $file, "<:utf8", "$workFile") or die "$workFile:\n$!";
while (my $line = <$file>) {
chomp $line;
if ($line =~ /^[^#][^\t\n]*\t([^\t\n]*)\t[^\t\n]*$/) {
$UGNTfile = "$repoPath/UGNT/$1.usfm";
push @UGNTfileList, $UGNTfile;
}
}
close $file;
#say LOG "\@UGNTfileList: @UGNTfileList"
}
sub ReadExceptions {
say LOG "ReadExceptions from \$exceptions: $exceptions";
open (my $file, "<:utf8", "$exceptions") or die "$exceptions:\n$!";
while (my $line = <$file>) {
chomp $line;
#say LOG $line;
if ($line =~ /^([^#][^\t\n]*)\t([^\t\n]*\t[^\t\n]*)$/) {
my ($ref, $oldNew) = ($1, $2);
$substitutedPages{$ref} .= "$oldNew, ";
#say LOG "$ref|\t|\$substitutedPages{$ref}: $substitutedPages{$ref}"
} elsif ($line =~ /^([^#][^\t\n]*)\t([^\t\n]*>[^\t\n]*)$/) {
my ($ref, $oldNew) = ($1, $2);
$specifiedText{$ref} .= "$oldNew, ";
#say LOG "$ref|\t|\$specifiedText{$ref}: $specifiedText{$ref}"
} elsif ($line =~ /\|\|$/) {}
}
close $file;
}
sub PairtWEntriesTotWPage {
my @filesToRun = ();
my $filePattern = '*.md' ;
find (sub {push @filesToRun, $File::Find::name if (m/^(.*)$filePattern$/)}, $topTwDir) ;
#say LOG "\@filesToRun: @filesToRun";
foreach my $file (@filesToRun) {
my $shortFile = $file;
$shortFile =~ s/$topTwDir\/(.*)\.md/$1/;
my $fileText = read_file("$file", binmode => 'utf8');
if ($fileText =~ /^# ([^\n]*)\r?\n/) {
my $thisList = $1;
$thisList =~ s/ \([^\)]*\)//g;
$entries{$shortFile} = $thisList;
my @tempArray = split /, /, $thisList;
foreach my $slice (@tempArray) {
$sourcePage{$slice} = $shortFile;
#say LOG "$slice: $sourcePage{$slice}";
}
}
#say LOG "\$file: $file, \$shortFile: |$shortFile|, \$entries{$shortFile}: |$entries{$shortFile}|"
}
}
sub LinkULBtoCV {
say LOG "LinkULBtoCV called for \$ULBfile $ULBfile";
open IN, "$ULBfile" or die "$ULBfile: $!";
while (<IN>) {
chomp;
if (/^([^\t]*)\t(.*)$/) {
$cv ++;
($text{$1}, $fullText{$1}) = ($2, $2);
$ref{$cv} = $1;
$order{$1} = $cv;
}
#say LOG "First \$ref{$cv}: $ref{$cv}\n\$text{$ref{$cv}}: $text{$ref{$cv}}";
}
close IN;
#foreach my $key (sort keys %ref) {
# #say LOG "$key: $ref{$key}: $text{$ref{$key}}"
#}
}
sub ReadLinkedSNs {
my ($flag, $UGNTfile) = ("","");
foreach $UGNTfile (@UGNTfileList) {
#say LOG "opening \$UGNTfile $UGNTfile";
open IN, "$UGNTfile" or die "$UGNTfile can't be opened\n\n";
my ($thisBook, $thisChap, $thisVers, $thisRef);
my (@pages);
while (<IN>) {
chomp;
if (/\\v (\d+)/) {
($thisVers, $thisRef) = ($1, "$thisBook $thisChap:$1");
}
elsif (/\\c (\d+)/) {
($thisChap, $thisRef) = ($1, "$thisBook $1:1");
}
elsif (/\\mt (.*)$/) {
($thisBook, $thisRef) = ($1, "$thisBook 1:1");
}
elsif (/\\k-s.*rc:\/\/\*\/tw\/dict\/bible\/([^"]*)"/) {
#say LOG $_;
my ($thisPage) = ($1);
$pages{$thisRef} .= "$thisPage ";
}
elsif (/\\w .*strong="([^"]*)".*x-tw="rc:\/\/\*\/tw\/dict\/bible\/([^"]*\/[^"]*)"/) {
#say LOG $_;
my ($thisPage) = ($2);
# Need to find a way to log what Strong's number is being called here.
$StrongNum{$thisPage} = $1;
#$pages{$thisRef} .= "$thisPage,$StrongNum{$thisPage} ";
$pages{$thisRef} .= "$thisPage ";
#say LOG "\$StrongNum{$thisPage}: $StrongNum{$thisPage}\n\$pages{$thisRef}: $pages{$thisRef}\n";
}
}
close IN;
}
foreach my $key (sort keys %pages) {
say LOG "\t\$key: $key\t\$pages{$key}: $pages{$key}";
if (exists $substitutedPages{$key}) {
#say LOG "\$substitutedPages{$key}: $substitutedPages{$key}";
$substitutedPages{$key} =~ s/, $//;
my @array = split /, /, $substitutedPages{$key};
foreach my $slice (@array) {
#say LOG "\$slice: $slice";
if ($slice =~ /([^\t]*)\t([^\t]*)/) {
#say LOG "\n\$key: $key";
my ($old, $new) = ($1, $2);
#say LOG "\$old: >$old<\t\$new: >$new<";
#say LOG "\$pages{$key}: >>$pages{$key}<<";
if ($old eq "||") {
$pages{$key} .= "$new ";
$checkPages{$key} = $pages{$key};
}
elsif ($new eq "||") {
$pages{$key} =~ s/$old //;
$checkPages{$key} = $pages{$key};
}
else {
$pages{$key} =~ s/$old/$new/;
$checkPages{$key} = $pages{$key};
}
$pages{$key} =~ s/ \|\|//g;
#say LOG "\$pages{$key}: >>>$pages{$key}<<<";
}
}
} else {
$checkPages{$key} = $pages{$key};
}
say LOG "<>\t\$key: $key\t\$pages{$key}: $pages{$key}";
}
}
sub LinkEntriestoULBtext {
say LOG "sub LinkEntriestoULBtext called";
foreach my $key (sort keys %ref) {
say LOG "\nLinkEntriestoULBtext: \$key: $key\t\$ref{$key}: $ref{$key}";
(%workEntries, %ulbOrder) = ();
my %workPage;
my ($thisRef, $checkList, $tempString) = ($ref{$key}, "", "");
my (@allEntries);
$listOfPages{$thisRef} = "";
say LOG "\$pages{$thisRef}: |$pages{$thisRef}|\n$text{$thisRef}";
#say LOG "\$pages{$thisRef}: |$pages{$thisRef}|";
$pages{$thisRef} =~ s/^ +//;
$pages{$thisRef} =~ s/ +$//;
$pages{$thisRef} =~ s/ {2,}/ /g;
say LOG "\$pages{$thisRef}: |$pages{$thisRef}|";
if (exists $specifiedText{$thisRef}) {
#say LOG "*\t\$specifiedText{$thisRef}: $specifiedText{$thisRef}";
$specifiedText{$thisRef} =~ s/, $//;
SpecifyText($pages{$thisRef}, $thisRef);
#say LOG "**\t\$specifiedText{$thisRef}: $specifiedText{$thisRef}";
} else {
#say LOG "<>\t<>\t\$pages{$thisRef}: |$pages{$thisRef}|";
my @regArray = split / /, $pages{$thisRef};
foreach my $thisPage (@regArray) {
say LOG "1\t\$thisPage: $thisPage\t\$entries{$thisPage}: $entries{$thisPage}";
$workEntries{$thisPage} = $entries{$thisPage};
say LOG "2\t\$thisPage: $thisPage\t\$workEntries{$thisPage}: $workEntries{$thisPage}"
}
}
foreach my $thisPage (sort keys %workEntries) {
say LOG "\$thisPage: $thisPage,\n\t\$workEntries{$thisPage}: $workEntries{$thisPage}";
$workEntries{$thisPage} =~ s/ $//;
$workEntries{$thisPage} =~ s/^ //;
$workEntries{$thisPage} =~ s/ {2,}/ /;
say LOG ">|>\t\$workEntries{$thisPage}: |$workEntries{$thisPage}|";
$tempString .= "$workEntries{$thisPage}, ";
my (@workArray) = split /, /, $workEntries{$thisPage};
foreach my $wentry (@workArray) {
$workPage{$wentry} = $thisPage;
#say LOG "\$workPage{$wentry}: $workPage{$wentry}";
}
}
$tempString =~ s/, $//;
$tempString =~ s/^, //;
say LOG "->\t\$tempString: |$tempString|";
@allEntries = split /, /, $tempString;
say LOG "\n\@allEntries: |@allEntries|";
my @revsort = reverse sort { substr($a,0,1) <=> substr($b,0,1)
|| length($a) <=> length($b)
|| $a <=> $b }
@allEntries;
#say LOG "\n\@revsort: |@revsort|\n";
foreach my $slice (@revsort) {
#say LOG "\$slice: |$slice|";
my ($searchSlice, $restoredSourcePage) = ($slice, $sourcePage{$slice});
#$searchSlice =~ s/^(.*) \.\.\. (.*)/($1)(.*?)($2)/g;
while ($searchSlice =~ s/^(.*) \.\.\. (.*)/($1)\\b(.*?)\\b($2)/) {}
print LOG "\$searchSlice: |$searchSlice|\t";
if ($searchSlice =~ /\(\.\*\?\)/ && $text{$thisRef} =~ s/\b($searchSlice)\b/$3/i) {
say LOG " found in first test.";
$listOfPages{$thisRef} .= "\n[$slice]($workPage{$slice})";
my $thisSlice = $1;
if ($fullText{$thisRef} =~ /^(.*)\b$thisSlice\b.*$/) {
my $lenPre = length $1;
while (length $lenPre < 3) {$lenPre =~ s/^/0/}
$ulbOrder{$lenPre} = "[$slice]($workPage{$slice})";
say LOG "**\t\$lenPre: $lenPre\t\$ulbOrder{$lenPre}: $ulbOrder{$lenPre}";
}
$sourcePage{$searchSlice} = $restoredSourcePage;
#say LOG "\$sourcePage{$slice}: $sourcePage{$slice}\t\$sourcePage{$searchSlice}: $sourcePage{$searchSlice}";
$checkList =~ s/$checkPage{$slice}//;
say LOG ">> $text{$thisRef}";
say LOG ">>> \$listOfPages{$thisRef}: |$listOfPages{$thisRef}|";
} elsif ($text{$thisRef} =~ s/\b($searchSlice)\b//i) {
say LOG " found in second test.";
my $thisSlice = $1;
$listOfPages{$thisRef} .= "\n[$slice]($workPage{$slice})";
if ($fullText{$thisRef} =~ /^(.*?)\b$thisSlice\b.*$/) {
my $lenPre = length $1;
while (length $lenPre < 3) {$lenPre =~ s/^/0/}
$ulbOrder{$lenPre} = "[$slice]($workPage{$slice})";
say LOG "**\t\$lenPre: $lenPre\t\$ulbOrder{$lenPre}: $ulbOrder{$lenPre}";
}
#$checkPages{$thisRef} .= "\n$workPage{$searchSlice}";
#say LOG "\$sourcePage{$slice}: $sourcePage{$slice}\t\$sourcePage{$searchSlice}: $sourcePage{$searchSlice}";
$checkList =~ s/$checkPage{$slice}//;
#$listOfPages{$ref{$key}} .= "\n[$slice]($sourcePage{$slice})";
#$checkPages{$ref{$key}} .= "\n$sourcePage{$slice}";
#$checkList =~ s/$sourcePage{$slice}//;
say LOG ">> $text{$thisRef}";
say LOG ">>> \$listOfPages{$thisRef}: |$listOfPages{$thisRef}|";
} else {
say LOG " not found in\n$text{$ref{$key}}";
}
}
while ($checkList =~ /[^\|]+/) {
my $found = $&;
say LOG "$ref{$key}: $found not dealt with";
$checkList =~ s/$found//;
}
say OUT "$thisRef:";
foreach my $key (sort keys %ulbOrder) {
say LOG "$key: $ulbOrder{$key}";
say OUT "$ulbOrder{$key}"
}
say OUT "";
}
#say LOG "sub LinkEntriestoULBtext finished";
}
sub SpecifyText {
my ($pages, $ref) = ($_[0], $_[1]);
#say LOG "\$specifiedText{$ref}: $specifiedText{$ref}\n";
my (%tempEntries);
#say LOG ">\t\$pages: |$pages|";
#say LOG ">\t\$specifiedText{$ref}: |$specifiedText{$ref}|";
$pages =~ s/^ //;
my @oldArray = split / /, $pages;
my @specText = split /, /, $specifiedText{$ref};
foreach my $pair (@specText) {
#say LOG ">>>\t\$pair: $pair";
if ($pair =~ /^(.*)>(.*)$/) {
$tempEntries{$1} = $2;
#say LOG "\$tempEntries{$1} = $tempEntries{$1}"
}
}
foreach my $thisPage (@oldArray) {
#say LOG "<>\t\$thisPage: $thisPage\n\$tempEntries{$thisPage}: $tempEntries{$thisPage}\n";
if (exists $tempEntries{$thisPage}) {
$workEntries{$thisPage} = $tempEntries{$thisPage}
} else {
$workEntries{$thisPage} = $entries{$thisPage}
}
#say LOG "<>\t\$workEntries{$thisPage}: $workEntries{$thisPage}";
}
}
sub Output {
#say LOG "Output subRoutine called";
foreach my $key (sort keys %ref) {
my %donePages;
my $thisRef = $ref{$key};
#print LOG "\$key: $key\t\$thisRef: $thisRef\t";
#say LOG "\$pages{$thisRef}: |$pages{$thisRef}|";
$pages{$thisRef} =~ s/^ +//;
$pages{$thisRef} =~ s/ +$//;
$pages{$thisRef} =~ s/ {2,}/ /;
#say LOG "\$pages{$thisRef}: |$pages{$thisRef}|";
#say LOG "\$listOfPages{$thisRef}: |$listOfPages{$thisRef}|";
#$listOfPages{$thisRef} =~ s/^ +//;
#$listOfPages{$thisRef} =~ s/ +$//;
#$listOfPages{$thisRef} =~ s/ {2,}/ /;
#say LOG "\$listOfPages{$thisRef}: |$listOfPages{$thisRef}|";
my @array = split /\n/, $listOfPages{$thisRef};
#say LOG "\@array: |@array|";
my @sorted =
sort sort { lc($a) cmp lc($b) }
@array;
#say LOG "\@sorted: |@sorted|";
$" = "\n";
$listOfPages{$thisRef} = "@sorted";
#say LOG "\$listOfPages{$thisRef}: $listOfPages{$thisRef}\n\$checkPages{$thisRef}: $checkPages{$thisRef}";
#say OUT "$thisRef: $listOfPages{$thisRef}\n";
$checkPages{$thisRef} =~ s/^ +//;
$checkPages{$thisRef} =~ s/ +$//;
$checkPages{$thisRef} =~ s/ {2,}/ /;
$checkPages{$thisRef} =~ s/ \|\|//;
#say LOG "\$checkPages{$thisRef}:\t|$checkPages{$thisRef}|";
my @checkArray = split / /, $checkPages{$thisRef};
shift @sorted;
#say LOG "\@checkArray: |@checkArray|";
#say LOG "\@sorted: |@sorted|";
#shift @sorted;
#say LOG "\@sorted: |@sorted|";
foreach my $slice (@sorted) {
#print LOG "\$slice: $slice\t";
$slice =~ s/\[.*?\]\((.*?)\)/$1/;
#say LOG "\t\$slice: $slice";
$donePages{$slice} = $slice;
#say LOG "\t\$donePages{$slice}: $donePages{$slice}"
}
#say LOG "\@checkArray: |@checkArray|";
foreach my $slice (@checkArray) {
#say LOG "\$slice: $slice";
unless (exists $donePages{$slice}) {
#say LOG "\$thisRef: $thisRef\t\$slice:$slice";
#say MISSING "$thisRef\t$slice\t||";
say MISSING "$thisRef\t$slice";
}
}
}
}

View File

@ -0,0 +1,4 @@
perl "MakeULB.3.pl"
perl "CombineULBandNASBwithCodes.pl";
perl "Build_extract_NT.pl";
#perl "/Users/Henry/Google Drive/WA/Test/GrepBook.0.pl";

View File

@ -0,0 +1,4 @@
perl "MakeULB.3.pl"
perl "CombineULBandNASBwithCodes.pl";
perl "Build_extract_OT.pl";
#perl "/Users/Henry/Google Drive/WA/Test/GrepBook.0.pl";

View File

@ -0,0 +1,22 @@
echo "ULB"
(cd "/Users/Henry/Documents/git.Door43/en_ulb"; git pull)
echo "UDB"
(cd "/Users/Henry/Documents/git.Door43/en_udb"; git pull)
echo "tW"
(cd "/Users/Henry/Documents/git.Door43/en_tw"; git pull)
echo "tN"
(cd "/Users/Henry/Documents/git.Door43/en_tn"; git pull)
echo "hq"
(cd "/Users/Henry/Documents/git.Door43/en_hq"; git pull)
echo "MakeULB.3.pl"
perl "MakeULB.3.pl"
echo "FindMismatchedULBSnippets.3.noChunks.pl"
perl "FindMismatchedULBSnippets.3.noChunks.pl"
echo "CombineULBandNASBwithCodes.pl"
perl "CombineULBandNASBwithCodes.pl"
open -a /Applications/Firefox.app "Temp/mismatched_snippets.html"
echo "OpenMismatchedFiles.pl"
perl "OpenMismatchedFiles.pl"
open -a /Applications/BBEdit.app "Temp/ULB_text.txt"
echo "ExtractLinksFromScratchPad.pl"
perl "ExtractLinksFromScratchPad.pl"

View File

@ -0,0 +1,127 @@
# Updating the tW list for PDFs
These procedures work on my Mac. If a version is needed for another machine, I can adapt it, as can anyone familiar with scripts.
## Suggested repository structure
You will find it easiest to use this tool if all of your files are in one place, as in this sample repository, which has been taken directly from the Wycliffe Associates database.
<img align = "bottom"
alt = "sample repo"
height = "200pt"
hspace = "200"
src = "FilesForUpdates/SampleRepoStructure.png"
/>
Here the respective directories are for the translationNotes (en_tn), the translationWords (en_tw, with its three divisions into key terms [kt], names, and other terms), the dynamic translation (en_udb), the literal translation (en_ulb), the Hebrew morphological Bible (OSHB) and the Greek mophological Bible (UGNT).
## Files included in the package
### User files
These files, found in the *User* subdirectory are for you to tell the tool what data to look for, how to look for it, and what to do once it has found it.
The UserDefaults file tells the scripts where you have put the repository (i.e., the ULB, UDB, tN, and tW files) and which text editor to use when it is finished working.
User.defaults.txt
These other files tell the Perl scripts which books of either the Old Testament or the New Testament you want to work on.
tW.work.NT.txt
tW.work.OT.txt
### Main scripts
These files call the Perl scripts that actually do the work. They are in the form Filename.sh for Mac and Linux, Filename.bat for Windows.
do.nt.sh
do.ot.sh
mine.sh
update.nt.sh
update.ot.sh
waa.sh
### Perl scripts
These are the scripts that do the work for this tool.
CombineULBandNASBwithCodes.pl
ExtractLinksFromScratchPad.pl
FindMismatchedULBSnippets.3.noChunks.pl
GrepBook.NT.pl
GrepBook.OT.pl
MakeULB.3.pl
Mine.URL.Strong.Verse.NT.pl
Mine.URL.Strong.Verse.OT.pl
OpenMismatchedFiles.pl
Output.to.csv.pl
tWs.from.OSHB.1.pl
tWs.from.UGNT.8.pl
### Output files
These files are found in the *Output* subdirectory. The file *tWs.for.PDF.txt* is the file you are trying to produce. It is a list of all the translationWords relevant to every verse in the New Testament and the Old Testament. As you are building this file, however, you will find that many of the entries in the source file are not handled. These will be listed in the file *Entries.not.handled.txt*.
### Exceptions files
These files, found in the **Exceptions** subdirectory, tell the Perl scripts how to handle words in each verse that do not fit the tW pages easily. You will be editing these files so that the tool produces the proper **tWs.for.PDF.txt** file.
Exceptions.tWs.from.OSHB.txt
Exceptions.tWs.from.UGNT.txt
### Data files
This file in the *Data* subdirectory does not change. It tells the main tool what Strong's codes are in the NASB.
NASB.Strongs.txt
### Log and temporary files
You should never have to look at these files, which are found in the *Logs* and *Temp* subdirectories. They are produced at different times when the Perl scripts are run and so often change.
#### Log files
log.log
mine.log.log
#### Temporary files
Extract.txt
UDB text.txt
ULB text.txt
ULB.NASB.Strongs.txt
mismatched_snippets.html
## Procedures
**First run the do shell for the appropriate testament**
sh do.ot.sh
or
sh do.nt.sh
This will pull the latest of all files down, update the ULB, and check for missing key words.
**For each missing keyword pair in the missing.log file**
Select the line, including the EOL
Run mine.sh
>sh mine.sh
Paste the copied line to answer the prompt
Choose the best alternative
* change key word associated with the Strong's number
* specify ULB text to go with that key word
* comment out the key word so it is not in the tW list
**After dealing with all missing words**
Push all changes to the Git
Run do.sh again to make sure no new errors have been introduced
Run waa.sh to check for and correct ULBtN snippet mismatches
**After all corrections have been made**
Run Output.to.csv.pl to update the local repo
Commit all changes

View File

@ -1 +0,0 @@
This folder contains a cross-platform tool that provides data that can be used to build lists of key terms, names, and other terms covered in the translationWords pages on each page of the PDF used by translators in MAST events.

File diff suppressed because it is too large Load Diff