Text-Lossy

 view release on metacpan or  search on metacpan

script/text-lossy  view on Meta::CPAN

#!/usr/bin/env perl

use 5.008;
use strict;
use warnings;
use open ':std', IO => ':utf8'; # all is utf8!

use Getopt::Long;
use Pod::Usage;
use Text::Lossy;

my $help = undef;
my $version = undef;
my $available_filters = undef;
my @filters = ();

GetOptions(
    'help' => \$help,
    'version' => \$version,
    'filter=s' => \@filters, 
    '1' => sub { @filters = qw( lower ); },
    '2' => sub { @filters = qw( lower whitespace ); },
    '3' => sub { @filters = qw( lower punctuation_sp whitespace ); },
    'paragraph' => sub { $/ = ''; }, # global, we're in top scope here
    '2l' => sub { @filters = qw( lower whitespace_nl ); },
    '3l' => sub { @filters = qw( lower punctuation_sp whitespace_nl ); },
    'available-filters' => \$available_filters,
) or pod2usage(2);
if ($help) {
    pod2usage(1) 
}
if ($version) {
    print "text-lossy version $Text::Lossy::VERSION\n";
    exit(0);
}
if ($available_filters) {
    my @available = Text::Lossy->available_filters();
    print "Available filters: \n";
    foreach my $f (@available) {
        print "  $f\n"
    }
    exit(0);
}


# Multiple filters, in-order
@filters = split(qr{ , }xms, join(',', @filters));

my $lossy = Text::Lossy->new();
$lossy->add( @filters );

while (my $line = <>) {
    $line = $lossy->process($line);
    print $line;
}
# No extra newline, nice as it would be: no longer idempotent!

__END__

=head1 NAME

text-lossy - lossy text compression via entropy reduction

=head1 SYNOPSIS

text-lossy [-1|-2|-3|--filter <aa,bb,cc>|--paragraph] [file ...]

 Options:
   - help                This help
   - version             Version of text-lossy
   - filter  aa,bb,cc    Add filters named 'aa', 'bb' and 'cc' to the process
                         This option can also be given more than once
   - available-filters   List of available filters
   - 1                   Preset 1: filter  'lower'
   - 2                   Preset 2: filters 'lower whitespace'
   - 3                   Preset 3: filters 'lower punctuation_sp whitespace'
   - 2l                  Same as preset 2, but uses 'whitespace_nl'
   - 3l                  Same as preset 3, but uses 'whitespace_nl'
   - paragraph           Read files in paragraph mode

=head1 OPTIONS

=over 4



( run in 0.813 second using v1.01-cache-2.11-cpan-364913b4093 )