| Text-OutdentEdge documentation | Contained in the Text-OutdentEdge distribution. |
Text::OutdentEdge - remove indent chars.
Version 0.01
use Text::OutdentEdge qw(xoutdent); print <<INDENT, xoutdent <<XOUTDENT; Hello, World! INDENT X Hello, Edged-Outdent! XOUTDENT # ==> print " Hello, World!\n", "Hello, Edged-Outdent!\n";
This Module can export two function.
my $text = xoutdent $in; my $text = xoutdent $in, $opts;
This function removed edged-indent. For example:
print xoutdent <<TEXT; X Hello, X World! TEXT
just prints two words, "Hello" and "World!" on each lines.
This function take two arguments. First one is target text which may be indented. Second one is optional hash-ref. Options are:
specifies what are removed. Default is qr/[ \t]+/;
specifies edge-string regexp. Default is qr/\S([ \t]|$)/;
specifies whether chomp result text. Default is false.
specified whether trimming spaces of multiline q{..}. Default is true.
my $text = outdent $in;
my $text = outdent $in, qr/^ {4}/;
my $text = outdent $in, $opts;
This function take two arguments. This function is same as:
xoutdent $in, { %$opts, indent => minimum-indent, xchar => '', }
If regexp is passed as second argument, it treated as
{ indent = $regexp, xchar => '', }>.
YAMASHINA Hio, <hio at cpan.org>
Please report any bugs or feature requests to
bug-text-outdentedge at rt.cpan.org, or through the web interface at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Text-OutdentEdge.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc Text::OutdentEdge
You can also look for information at:
Copyright 2006 YAMASHINA Hio, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Text-OutdentEdge documentation | Contained in the Text-OutdentEdge distribution. |
#! /usr/bin/perl -w ## ---------------------------------------------------------------------------- # Text::OutdentEdge. # ----------------------------------------------------------------------------- # Mastering programmed by YAMASHINA Hio # # Copyright 2006 YAMASHINA Hio # ----------------------------------------------------------------------------- # $Id: /perl/Text-OutdentEdge/lib/Text/OutdentEdge.pm 252 2006-11-25T09:35:55.628540Z hio $ # ----------------------------------------------------------------------------- package Text::OutdentEdge; use strict; use warnings; use base 'Exporter'; our @EXPORT_OK = qw(xoutdent outdent); our %EXPORT_TAGS = ( all => \@EXPORT_OK ); our $VERSION = 0.01; 1; # ----------------------------------------------------------------------------- # $out = xoutdent($text); # sub xoutdent($;$) { my $text = shift; my $opts = shift || {}; defined($opts->{indent}) or $opts->{indent} = qr/[ \t]+/; defined($opts->{xchar}) or $opts->{xchar} = qr/\S([ \t]|$)/; if( !exists($opts->{trim}) || $opts->{trim} ) { $text =~ s/\A\r?\n?//s; $text =~ s/[ \t]+\z//s; } $text =~ s/^$opts->{indent}$opts->{xchar}//mg; if( $opts->{chomp} ) { chomp $text; } $text; } # ----------------------------------------------------------------------------- # $out = outdent($text); # $out = outdent($text, qr//); # $out = outdent($text, $opts); # sub outdent($;$) { my $text = shift; my $opts = shift; my $re; if( (ref($opts)||'') eq 'Regexp' ) { $re = $opts; $opts = {}; } $re ||= $opts->{indent}; if( !$re ) { my ($len) = sort{ $a<=>$b } map{length($_)} $text =~ /^([ \t]*(?=\S))/gm; $re = $len ? qr/[ \t]{1,$len}/ : qr//; } xoutdent $text, {%$opts, indent=>$re, xchar=>'' }; } # ----------------------------------------------------------------------------- # End of File. # ----------------------------------------------------------------------------- __END__