xref: /trunk/main/mythes/mythes-1.2.4-vanilla-th-gen-idx.patch (revision 32a112266ab469d77ad6b03b1522e3c406aa7704)
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