Perl-Tidy
view release on metacpan or search on metacpan
lib/Perl/Tidy.pm view on Meta::CPAN
Warn(
"file: $display_name: bad guess to decode source as $encoding_in\n"
);
$encoding_in = EMPTY_STRING;
}
else {
$encoding_log_message .= <<EOM;
Guessed encoding '$encoding_in' successfully decoded
EOM
$decoded_input_as = $encoding_in;
$rinput_string = \$buf;
}
}
}
else {
$encoding_log_message .= <<EOM;
Does not look like utf8 encoded text so processing as raw bytes
EOM
}
}
# Case 4. Decode with a specific encoding
else {
$encoding_in = $rOpts_character_encoding;
my $buf;
if (
!eval {
$buf = Encode::decode( $encoding_in, ${$rinput_string},
Encode::FB_CROAK | Encode::LEAVE_SRC );
1;
}
)
{
# Quit if we cannot decode by the requested encoding;
# Something is not right.
Warn(
"skipping file: $display_name: Unable to decode source as $encoding_in\n"
);
# return nothing on error
return;
}
else {
$encoding_log_message .= <<EOM;
Specified encoding '$encoding_in' successfully decoded
EOM
$decoded_input_as = $encoding_in;
$rinput_string = \$buf;
}
}
# Set the encoding to be used for all further i/o: If we have
# decoded the data with any format, then we must continue to
# read and write it as encoded data, and we will normalize these
# operations with utf8. If we have not decoded the data, then
# we must not treat it as encoded data.
my $is_encoded_data = $encoding_in ? 'utf8' : EMPTY_STRING;
$self->[_is_encoded_data_] = $is_encoded_data;
# Delete any Byte Order Mark (BOM), which can cause trouble
if ($is_encoded_data) {
${$rinput_string} =~ s/^\x{FEFF}//;
}
$rstatus->{'input_name'} = $display_name;
$rstatus->{'opt_encoding'} = $rOpts_character_encoding;
$rstatus->{'char_mode_used'} = $encoding_in ? 1 : 0;
$rstatus->{'input_decoded_as'} = $decoded_input_as;
# Define the function to determine the display width of character
# strings
my $length_function;
if ($is_encoded_data) {
# Try to load Unicode::GCString for defining text display width, if
# requested, when the first encoded file is encountered
if ( !defined($loaded_unicode_gcstring) ) {
if ( eval { require Unicode::GCString; 1 } ) {
$loaded_unicode_gcstring = 1;
}
else {
$loaded_unicode_gcstring = 0;
if ( $rOpts->{'use-unicode-gcstring'} ) {
Warn(<<EOM);
----------------------
Unable to load Unicode::GCString: $EVAL_ERROR
Processing continues but some vertical alignment may be poor
To prevent this warning message, you can either:
- install module Unicode::GCString, or
- remove '--use-unicode-gcstring' or '-gcs' from your perltidyrc or command line
----------------------
EOM
}
}
}
if ($loaded_unicode_gcstring) {
$length_function = sub {
return Unicode::GCString->new( $_[0] )->columns;
};
$encoding_log_message .= <<EOM;
Using 'Unicode::GCString' to measure horizontal character widths
EOM
$rstatus->{'gcs_used'} = 1;
}
}
return (
$rinput_string,
$is_encoded_data,
$decoded_input_as,
$encoding_log_message,
$length_function,
);
} ## end sub get_decoded_string_buffer
{ #<<<
my $LF;
my $CR;
my $CRLF;
( run in 0.745 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )