Unicode-Tussle

 view release on metacpan or  search on metacpan

script/ucsort  view on Meta::CPAN


sub main();

sub compile($);
sub dequeue($$);
sub deQ($);
sub deQQ($);
sub flip_fields(_);
sub flip_line(_);
sub get_input();
sub load_options();
sub reorder(@);
sub usage(;$);

#################################################################

##
## ** THIS IS AN UNSUPPORTED, PRE-RELEASE VERSION ONLY **
##
our $VERSION = "0.3";

our %Opt;

#################################################################

$SIG{__DIE__} = sub { confess @_ unless $^S };

main();
exit;

#################################################################

sub main() {
    load_options();

    my @input  = get_input();
    my @output = reorder(@input);

    if ($Opt{"reverse-output"}) {
	print for reverse @output;
    } else {
	print for         @output;
    }

}

#################################################################

sub get_input() {
    confess "expected list context" unless wantarray();

    if (!@ARGV && -t STDIN) {
	warn "$0: reading from stdin, type ^D to end, ^C to kill...\n";
    }

    if (my $incoding = $Opt{"input-encoding"}) {
	# need postfix :: to insist is classname not builtin function
	open::->import(IN => $incoding);
    }

    local $/ = "" if $Opt{paragraph};
    return <>;
}

#################################################################

sub load_options() {

    Getopt::Long::Configure qw[ bundling auto_version ];

    my @options = (

	# standard options
	qw[
	    help|?
	    man|m
	    debug|d
	],

	# collator constructor options
	qw[
	    backwards-levels=i
	    collation-level|level|l=i
	    katakana-before-hiragana
	    normalization|n=s
	    preprocess|P=s
	    override-CJK=s
	    override-Hangul=s
	    upper-before-lower|u
	    variable=s
	],

	# program specific options
	qw[
	    case-insensitive|insensitive|i
	    input-encoding|e=s
	    locale|L=s
	    paragraph|p
	    right-to-left|reverse-input
	    reverse-output|r
	    reverse-fields|last
	],

    );

    GetOptions(\%Opt => @options) || pod2usage(2);

    pod2usage(0)                                 if $Opt{help};
    pod2usage(-exitstatus => 0, -verbose => 2)   if $Opt{man};

    if ($Opt{"case-insensitive"}) {
	if ($Opt{"level"}) {
	    usage "you already specified a level of --level=$Opt{level}";
	}
	$Opt{"level"} = 1;
    }

	state $nf_types = {
		map { $_, 1 } qw[NFD NFC NFKD NFKC undef prenormalized]
		};



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