History: A simple perl script for grepping the word lists with colorized output

Preview of version: 4


This script is in the public domain.

Beware, to prevent transforming code pieces into hyperlinks some additional "((" charactere were inserted in the source code of this page. Do not go to "Edit" and cut-and-paste from there blindly.



#!/usr/bin/env perl -w
#
# ko facki fi le jbovla
#

# le kajde cu xamgu mi
use strict;

# ko galfi ti
my $gihuste = "/home/fracture/misc/lojban/gismu.txt";
my $mahoste = "/home/fracture/misc/lojban/cmavo.txt";
my $jvoste = "/home/fracture/misc/lojban/lujvo.txt";
my $rafsyste = "/home/fracture/misc/lojban/rafsi.txt";

# ko cpacu le sumti
use vars qw($opt_g $opt_p $opt_a $opt_c $opt_C $opt_l $opt_L
$opt_r $opt_R $opt_A);
use Getopt::Std;
getopts("gcClLaRrp");
if ($#ARGV < 0) {
print "pilno: viska [-aAg)) [[-lrc | -C | -L | -R] valsi\n";
exit 1;
}
if ($opt_a) {
$opt_c = 1;
$opt_l = 1;
$opt_r = 1;
}

# xxx
$opt_c = 1;

while ($#ARGV >= 0) {
my $valsi="$ARGV[0]";
shift;

$valsi =~ s/h/\'/g if !$opt_g;

sub viska_valsi {
my ($wha, $v, $fullstart, $rafstart, $raflen, $smallstart) = @_;
my ($val, $fulldef, $smalldef, $rafsi);

# ji'a zo rafsi pilno fi le selma'o
$fulldef = substr($v, $fullstart);
$rafsi = substr($v, $rafstart, $raflen);
$smalldef = substr($v, $smallstart, $fullstart - $smallstart);
$v =~ /([a-z\']+)/;
$val = $1;

print "\33[1m" . $val . "\33[0m";
if ($wha != 2) {
print "\r\t\t" if $wha;
print " \33[36m";
print "|" if !$wha;
print $rafsi;
print "|" if !$wha;
print "\33[0m";
print "\t\33[31m" . $smalldef . "\33[0m";
}

if (!$opt_p) {
$| = 1;
print "\n\33[33m";
$fulldef =~ s/\'/\'\\\'\'/g;
system "echo \'$fulldef\' | fmt";
print "\33[0m";
$| = 0;
} else {
print "\n";
}
}

sub viska_gismu {
my ($gis) = @_;
viska_valsi 0, $gis, 61, 6, 12, 19;
}

sub viska_cmavo {
my ($cma) = @_;
viska_valsi 1, $cma, 61, 10, 9, 19;
}

sub viska_lujvo {
my ($luj) = @_;
viska_valsi 2, $luj, 31, 0, 0, 0;
}

# caku ko troci fi le gismu
if (!$opt_C && !$opt_L && !$opt_R) {
open GISMU, "< $gihuste" or die "open($gihuste): $!";
while (<GISMU>) {
if ($opt_g) {
# le glibau
my $str = substr($_, 19);

viska_gismu $_ if $str =~ /
$valsi/;

} else {
# la lojban

viska_gismu $_ if /
$valsi/;

}
}
close GISMU;
}

# caku ko troci fi le cmavo

if (($opt_c
$opt_C) && !$opt_L && !$opt_R) {
open CMAVO, "< $mahoste" or die "open($mahoste): $!";
while (<CMAVO>) {
if ($opt_g) {
# le glibau
viska_cmavo $_ if /$valsi/;
} else {
# la lojban
viska_cmavo $_ if /
\.?$valsi/;
}
}
close CMAVO;
}
# ko ca troci fi le lujvo
if (($opt_l
$opt_L) && !$opt_R) {

open LUJVO, "< $jvoste" or die "open($jvoste): $!";
while (<LUJVO>) {
if ($opt_g) {
# le glibau
my $str = substr($_, 42);
viska_lujvo $_ if $str =~ /$valsi/;
} else {
# la lojban

viska_lujvo $_ if /
$valsi/;

}
}
close LUJVO;
}

# ko ca troci fi le rafsi
if ($opt_r || $opt_R) {
open RAFSI, "< $rafsyste" or die "open($rafsyste): $!";
while (<RAFSI>) {
if ($opt_g) {
# le glibau
my $str = substr($_, 12);
print if $str =~ /$valsi/;
} else {
# la lojban
print if /^$valsi/;
}
}
close RAFSI;
}

}

exit 0;

History

Advanced
Information Version
Wed 27 of Jul, 2005 04:31 GMT rlpowell from 64.81.49.134 5
Mon 22 of Sep, 2003 19:52 GMT RaphaelPoss from 80.65.225.119 updated by the phpwiki import process 4
Mon 22 of Sep, 2003 19:52 GMT RaphaelPoss from 80.65.225.119 updated by the phpwiki import process 3
Fri 27 of Jun, 2003 00:58 GMT RaphaelPoss from 80.65.225.119 created from phpwiki import 2
Show PHP error messages