utt/src/kot.pl
Mateusz Hromada 3a2ae91d94 Migration to new build system.
* kot moved and checked
2009-06-09 20:01:41 +02:00

103 lines
2.0 KiB
Perl

#!/usr/bin/perl
#package: UAM Text Tools
#component: kot
#version: 1.0
#author: Tomasz Obrebski
use strict;
use Getopt::Long;
use File::HomeDir;
my $help=0;
my $gap_fill="\n-----\n";
my $spaces=0;
my $systemconfigfile='/usr/local/etc/utt/kot.conf';
#my $userconfigfile="$ENV{'HOME'}/.utt/kot.conf";
my $userconfigfile=home()."/.utt/kot.conf";
#read configuration files###########################
my $file;
foreach $file ($systemconfigfile, $userconfigfile){
if(open(CONFIG, $file)){
while (<CONFIG>) {
chomp;
s/#.*//;
s/^\s+//;
s/\s+$//;
next unless length;
my ($name, $value) = split(/\s*=\s*/, $_, 2);
if(($name eq "gap-fill")or($name eq "g")){
$gap_fill=$value;
}
elsif(($name eq "spaces")or($name eq "s")){
$spaces=1;
}
elsif(($name eq "help")or($name eq "h")){
$help=1;
}
}
close CONFIG;
}
}
#########################################################
GetOptions("gap-fill|g=s" => \$gap_fill,
"spaces|r" => \$spaces,
"help|h" => \$help);
if($help)
{
print <<'END'
Usage: ser [OPTIONS] [file ..]
Options:
--gap-fill -g Help.
--spaces -r
--define=FILE Read macrodefinitions from FILE.
--flex-template=FILE Read flex code template from FILE.
--only-matching -m Print only fragments matching PATTERN.
--flex Print only the generated flex code and exit.
END
;
exit 0;
}
$gap_fill =~ s/\\t/\t/g;
$gap_fill =~ s/\\n/\n/g;
$gap_fill =~ s/\\r/\r/g;
$gap_fill =~ s/\\f/\f/g;
my $prevend=-1;
my $count=0;
while(<>)
{
my ($start,$len,$type,$form) = /^\s*(\d+)\s+(\d+)\s+(\S+)\s+(\S+)/;
if($start > $prevend)
{
print $gap_fill unless $count++ == 0;
}
$prevend=$start+$len;
next if $len==0;# || $form eq "*";
$form =~ s/\\\*/*/g;
if($type eq 'S' && ! $spaces)
{
$form =~ s/_/ /g;
$form =~ s/\\t/\t/g;
$form =~ s/\\n/\n/g;
$form =~ s/\\r/\r/g;
$form =~ s/\\f/\f/g;
}
print $form;
}