Acme-Pythonic
view release on metacpan or search on metacpan
lib/Acme/Pythonic.pm view on Meta::CPAN
# easily about the end of the code in this line. It is later
# appended back in the continue block below.
$comment = $line =~ s/(\s*$tc)//o ? $1 : '';
next if $line =~ /^\s*$/;
if (!$joining) {
$unbalanced_paren = left_parenthesize($line);
$might_be_modifier = $line =~ /^\s*(?:if|unless|while|until|for|foreach)\b/;
$line_with_modifier = \$line if $might_be_modifier;
($indent) = $line =~ /^(\s*)/;
$indent = length(expand($indent));
}
if ($line =~ /(?:,|=>)\s*$/ || $line =~ s/\\\s*$//) {
++$joining;
next if $joining > 1; # if 1 we need yet to handle indentation
} else {
$joining = 0;
}
# Handle trailing colons, which can be Pythonic, mark a labeled
t/text_wrap.t view on Meta::CPAN
package Acme::Pythonic::Text::Wrap
require Exporter
@ISA = qw(Exporter)
@EXPORT = qw(wrap fill)
@EXPORT_OK = qw($columns $break $huge)
$VERSION = 2001.09291
use vars qw($VERSION $columns $debug $break $huge $unexpand $tabstop
$separator)
use strict
BEGIN:
$columns = 76 # <= screen width
$debug = 0
$break = '\s'
$huge = 'wrap' # alternatively: 'die' or 'overflow'
$unexpand = 1
$tabstop = 8
$separator = "\n"
use Text::Tabs qw(expand unexpand)
sub wrap:
my ($ip, $xp, @t) = @_
local($Text::Tabs::tabstop) = $tabstop
my $r = ""
my $tail = pop(@t)
my $t = expand(join("", (map { /\s+\z/ ? ( $_ ) : ($_, ' ') } @t), $tail))
my $lead = $ip
my $ll = $columns - length(expand($ip)) - 1
$ll = 0 if $ll < 0
my $nll = $columns - length(expand($xp)) - 1
my $nl = ""
my $remainder = ""
use re 'taint'
pos($t) = 0
while $t !~ /\G\s*\Z/gc:
if $t =~ /\G([^\n]{0,$ll})($break|\z)/xmgc:
$r .= $unexpand \
? unexpand($nl . $lead . $1) \
: $nl . $lead . $1
$remainder = $2
elsif $huge eq 'wrap' && $t =~ /\G([^\n]{$ll})/gc:
$r .= $unexpand \
? unexpand($nl . $lead . $1) \
: $nl . $lead . $1
$remainder = $separator
elsif $huge eq 'overflow' && $t =~ /\G([^\n]*?)($break|\z)/xmgc:
$r .= $unexpand \
? unexpand($nl . $lead . $1) \
: $nl . $lead . $1
$remainder = $2
elsif $huge eq 'die':
die "couldn't wrap '$t'"
else:
die "This shouldn't happen"
$lead = $xp
$ll = $nll
$nl = $separator
( run in 2.285 seconds using v1.01-cache-2.11-cpan-5b529ec07f3 )