Trying to make more useful

This commit is contained in:
Henry Whitney 2020-04-27 13:35:01 -04:00
parent 9ebc7806e8
commit 92c7b7ca6e
2 changed files with 151 additions and 0 deletions

View File

@ -0,0 +1,103 @@
use 5.12.0;
use File::Slurp;
use File::Find ;
use Cwd ;
use utf8;
#use open IN => ":utf8", OUT => ":utf8";
use open IO => ":utf8";
binmode STDOUT, ":encoding(UTF-8)";
mkdir "OGNT";
mkdir "Logs";
open LOG, ">Logs/log.log";
my (%bk);
my ($last_bn, $last_ch, $last_vs, $bklc) = ("00", "00", "00");
say "Reading data ...";
while (<DATA>) {
chomp;
if (/^(\d\d)-(...)/) {
$bk{$1} = $2;
}
}
#open IN, "/Users/Henry/Documents/WACS/Tips_and_Hacks/MAST_tW_PDF_Updater/FilesForUpdates/OGNT/OpenGNT_version3_3.csv" or die "$!";
open IN, "OpenGNT_version3_3.csv" or die "$!";
say "Reading input ...";
while (<IN>) {
chomp;
Separate();
}
say OUT " </verse>\n </chapter>\n </book>\n</xml>";
say "Closing input and output files ...";
close OUT;
close IN;
close LOG;
say "Done.";
sub Separate {
if (/[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t.\t[^\t]*\t(\d+)(\d+)(\d+)\t[^\]*[^\]*([^\]*)([^\]*)([^\]*)([^\]*)/) {
my ($bn, $ch, $vs, $word, $lexeme, $gram, $sn) = ($1, $2, $3, $4, $5, $6, $7);
say LOG "$1, $2, $3, $4, $5, $6, $7";
$sn =~ s/[GH]//;
$bn = $bn + 1;
if ($bn ne $last_bn) {
my ($this_bk) = ($bk{$bn});
$bklc = lc $bk{$bn};
if (OUT-> opened()) {
say OUT " </verse>\n </chapter>\n </book>\n</xml>";
close OUT;
}
open OUT, ">:utf8", "OGNT/$bn-$bk{$bn}.xml" or die "$! $bn-$bk{$bn}.xml";
say OUT "\n<xml>\n <div type=\"book\" osisID=\"$bklc\">\n <chapter osisID=\"$bklc.$ch\">\n <verse osisID=\"$bklc.$ch.$vs\">";
($last_bn, $last_ch, $last_vs) = ($bn, $ch, $vs)
}
elsif ($ch ne $last_ch) {
say OUT " </verse>\n </chapter>\n <chapter osisID=\"$bklc.$ch\">\n <verse osisID=\"$bklc.$ch.$vs\">";
($last_ch, $last_vs) = ($ch, $vs)
}
elsif ($vs ne $last_vs) {
my ($this_bk, $bklc) = ($bk{$bn}, lc $bk{$bn});
say OUT " </verse>\n <verse osisID=\"$bklc.$ch.$vs\">";
$last_vs = $vs;
}
say OUT "\t\t\t\t<w lemma=\"$sn\" morph=\"$gram\" lexeme=\"$lexeme\">$word</w>"
}
}
__DATA__
41-MAT.xml
42-MRK.xml
43-LUK.xml
44-JHN.xml
45-ACT.xml
46-ROM.xml
47-1CO.xml
48-2CO.xml
49-GAL.xml
50-EPH.xml
51-PHP.xml
52-COL.xml
53-1TH.xml
54-2TH.xml
55-1TI.xml
56-2TI.xml
57-TIT.xml
58-PHM.xml
59-HEB.xml
60-JAS.xml
61-1PE.xml
62-2PE.xml
63-1JN.xml
64-2JN.xml
65-3JN.xml
66-JUD.xml
67-REV.xml

View File

@ -0,0 +1,48 @@
use 5.12.0;
use File::Slurp;
use File::Find ;
use Cwd ;
use utf8;
#use open IN => ":utf8", OUT => ":utf8";
use open IO => ":utf8";
open LOG, ">:utf8", "Logs/log.log" or die;
open OUT, ">:utf8", "Output/output.txt" or die;
my $topDir = "/Users/Henry/Documents/WACS/en_tw/bible";
my $filePattern = '\.md' ;
my %foundEntries;
my @theseEntries;
my @filesToRun = ();
find( sub { push @filesToRun, $File::Find::name if ( m/^(.*)$filePattern$/ ) }, $topDir) ;
foreach my $file ( @filesToRun ) {
say LOG $file;
my $fileText = read_file("$file", binmode => 'utf8');
my $theseEntries;
if ($fileText =~ /^# ([^\n]*?)\n/) {
$theseEntries = $1;
@theseEntries = split /, /, $theseEntries;
ParseEntries();
}
}
close OUT;
close LOG;
print "\n\tDone.";
# ============
sub ParseEntries {
foreach my $entry (@theseEntries) {
$entry =~ s/ \([^\)]*\)//g;
if (exists $foundEntries{$entry}) {
say OUT $entry;
} else {
$foundEntries{$entry} = $entry
}
}
@theseEntries = "";
}