1*32a11226SJim Jagielski--- misc/mythes-1.2.4/th_gen_idx.pl 2010-06-16 06:37:34 2*32a11226SJim Jagielski+++ misc/build/mythes-1.2.4/th_gen_idx.pl 2026-06-11 08:10:31 3*32a11226SJim Jagielski@@ -1,11 +1,26 @@ 4*32a11226SJim Jagielski-#!/usr/bin/perl 5*32a11226SJim Jagielski- 6*32a11226SJim Jagielski-# perl program to take a thesaurus structured text data file 7*32a11226SJim Jagielski-# and create the proper sorted index file (.idx) 8*32a11226SJim Jagielski+: 9*32a11226SJim Jagielski+eval 'exec perl -wS $0 ${1+"$@"}' 10*32a11226SJim Jagielski+ if 0; 11*32a11226SJim Jagielski+#************************************************************** 12*32a11226SJim Jagielski # 13*32a11226SJim Jagielski-# typically invoked as follows: 14*32a11226SJim Jagielski-# cat th_en_US_new.dat | ./th_gen_idx.pl > th_en_US_new.idx 15*32a11226SJim Jagielski+# Licensed to the Apache Software Foundation (ASF) under one 16*32a11226SJim Jagielski+# or more contributor license agreements. See the NOTICE file 17*32a11226SJim Jagielski+# distributed with this work for additional information 18*32a11226SJim Jagielski+# regarding copyright ownership. The ASF licenses this file 19*32a11226SJim Jagielski+# to you under the Apache License, Version 2.0 (the 20*32a11226SJim Jagielski+# "License"); you may not use this file except in compliance 21*32a11226SJim Jagielski+# with the License. You may obtain a copy of the License at 22*32a11226SJim Jagielski # 23*32a11226SJim Jagielski+# http://www.apache.org/licenses/LICENSE-2.0 24*32a11226SJim Jagielski+# 25*32a11226SJim Jagielski+# Unless required by applicable law or agreed to in writing, 26*32a11226SJim Jagielski+# software distributed under the License is distributed on an 27*32a11226SJim Jagielski+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 28*32a11226SJim Jagielski+# KIND, either express or implied. See the License for the 29*32a11226SJim Jagielski+# specific language governing permissions and limitations 30*32a11226SJim Jagielski+# under the License. 31*32a11226SJim Jagielski+# 32*32a11226SJim Jagielski+#************************************************************** 33*32a11226SJim Jagielski 34*32a11226SJim Jagielski sub by_entry { 35*32a11226SJim Jagielski my ($aent, $aoff) = split('\|',$a); 36*32a11226SJim Jagielski@@ -13,6 +28,27 @@ 37*32a11226SJim Jagielski $aent cmp $bent; 38*32a11226SJim Jagielski } 39*32a11226SJim Jagielski 40*32a11226SJim Jagielski+#FIXME: someone may want "infile" or even parameter parsing 41*32a11226SJim Jagielski+sub get_outfile { 42*32a11226SJim Jagielski+ my $next_is_file = 0; 43*32a11226SJim Jagielski+ foreach ( @ARGV ) { 44*32a11226SJim Jagielski+ if ( $next_is_file ) { 45*32a11226SJim Jagielski+ return $_ 46*32a11226SJim Jagielski+ } 47*32a11226SJim Jagielski+ if ( $_ eq "-o" ) { 48*32a11226SJim Jagielski+ $next_is_file = 1; 49*32a11226SJim Jagielski+ } 50*32a11226SJim Jagielski+ } 51*32a11226SJim Jagielski+ return ""; 52*32a11226SJim Jagielski+} 53*32a11226SJim Jagielski+ 54*32a11226SJim Jagielski+sub usage { 55*32a11226SJim Jagielski+ print "usage:\n"; 56*32a11226SJim Jagielski+ print "$0 -o outfile < input\n"; 57*32a11226SJim Jagielski+ 58*32a11226SJim Jagielski+ exit 99; 59*32a11226SJim Jagielski+} 60*32a11226SJim Jagielski+ 61*32a11226SJim Jagielski # main routine 62*32a11226SJim Jagielski my $ne = 0; # number of entries in index 63*32a11226SJim Jagielski my @tindex=(); # the index itself 64*32a11226SJim Jagielski@@ -24,7 +60,11 @@ 65*32a11226SJim Jagielski my $meaning=""; # current meaning and synonyms 66*32a11226SJim Jagielski my $p; # misc uses 67*32a11226SJim Jagielski my $encoding; # encoding used by text file 68*32a11226SJim Jagielski+my $outfile = ""; 69*32a11226SJim Jagielski 70*32a11226SJim Jagielski+$outfile = get_outfile(); 71*32a11226SJim Jagielski+usage() if ( $outfile eq "" ); 72*32a11226SJim Jagielski+ 73*32a11226SJim Jagielski # top line of thesaurus provides encoding 74*32a11226SJim Jagielski $encoding=<STDIN>; 75*32a11226SJim Jagielski $foffset = $foffset + length($encoding); 76*32a11226SJim Jagielski@@ -51,9 +91,13 @@ 77*32a11226SJim Jagielski # now we have all of the information 78*32a11226SJim Jagielski # so sort it and then output the encoding, count and index data 79*32a11226SJim Jagielski @tindex = sort by_entry @tindex; 80*32a11226SJim Jagielski-print STDOUT "$encoding\n"; 81*32a11226SJim Jagielski-print STDOUT "$ne\n"; 82*32a11226SJim Jagielski+ 83*32a11226SJim Jagielski+print "$outfile\n"; 84*32a11226SJim Jagielski+open OUTFILE, ">$outfile" or die "ERROR: Can't open $outfile for writing!"; 85*32a11226SJim Jagielski+print OUTFILE "$encoding\n"; 86*32a11226SJim Jagielski+print OUTFILE "$ne\n"; 87*32a11226SJim Jagielski foreach $one (@tindex) { 88*32a11226SJim Jagielski- print STDOUT "$one\n"; 89*32a11226SJim Jagielski+ print OUTFILE "$one\n"; 90*32a11226SJim Jagielski } 91*32a11226SJim Jagielski+close OUTFILE; 92*32a11226SJim Jagielski 93