# Perltidy Change Log
-## 2022 02 16
+## 2022 02 17
- A new flag, --encode-output-strings, or -eos, has been added to resolve
issue git #83. This issue involves the interface between Perl::Tidy and
t/testsa.t
t/testss.t
t/testwide-passthrough.pl.src
-t/testwide-passthrough.t
+t/testwide-passthrough.t.SKIP
t/testwide-tidy.pl.src
t/testwide-tidy.pl.srctdy
-t/testwide-tidy.t
+t/testwide-tidy.t.SKIP
t/testwide.pl.src
t/testwide.t
=head1 VERSION
-This man page documents perltidy version 20220216
+This man page documents perltidy version 20220217
=head1 BUG REPORTS
<h1>Perltidy Change Log</h1>
-<h2>2022 02 15</h2>
+<h2>2022 02 17</h2>
<pre><code>- A new flag, --encode-output-strings, or -eos, has been added to resolve
issue git #83. This issue involves the interface between Perl::Tidy and
<p>If the <b>destination</b> parameter is given, it will be used to define the file or memory location to receive output of perltidy.</p>
-<p><b>Important note if destination is a string or array reference</b>. Perl strings of characters which are decoded as utf8 by Perl::Tidy can be returned in either of two possible states, decoded or encoded, and it is important that the calling program and Perl::Tidy are in agreement regarding the state to be returned. A flag <b>--encode-output-strings</b>, or simply <b>-eos</b>, was added in versions of Perl::Tidy after 20220101 for this purpose. This flag should be added to the end of the <b>argv</b> paremeter (described below). The options are as follows.</p>
+<p><b>Important note if destination is a string or array reference</b>. Perl strings of characters which are decoded as utf8 by Perl::Tidy can be returned in either of two possible states, decoded or encoded, and it is important that the calling program and Perl::Tidy are in agreement regarding the state to be returned. A flag <b>--encode-output-strings</b>, or simply <b>-eos</b>, was added in versions of Perl::Tidy after 20220101 for this purpose. This flag should be added to the end of the <b>argv</b> paremeter (described below) if Perl::Tidy will be decoding utf8 text. The options are as follows.</p>
<ul>
<h1 id="VERSION">VERSION</h1>
-<p>This man page documents Perl::Tidy version 20220215</p>
+<p>This man page documents Perl::Tidy version 20220217</p>
<h1 id="LICENSE">LICENSE</h1>
<p>This flag has been added to resolve an issue involving the interface between Perl::Tidy and calling programs, and in particular <b>Code::TidyAll (tidyall)</b>. By default Perl::Tidy returns unencoded strings to the calling program, but some programs expect encoded strings. Setting this flag causes Perl::Tidy to return encoded output strings which it decoded. For some background information see <a href="https://github.com/perltidy/perltidy/issues/83">https://github.com/perltidy/perltidy/issues/83</a> and <a href="https://github.com/houseabsolute/perl-code-tidyall/issues/84">https://github.com/houseabsolute/perl-code-tidyall/issues/84</a>.</p>
-<p>If you only run the perltidy binary this flag has no effect.</p>
+<p>If you only run the <b>perltidy</b> binary this flag has no effect.</p>
<p>If you use <b>tidyall</b> with encoded files and encounter irregularities such as <b>wide character</b> messages you should set this flag.</p>
+<p>Additional information can be found in the man pages for the <b>Perl::Tidy</b> module.</p>
+
</dd>
<dt id="gcs---use-unicode-gcstring"><b>-gcs</b>, <b>--use-unicode-gcstring</b></dt>
<dd>
<h1 id="VERSION">VERSION</h1>
-<p>This man page documents perltidy version 20220215</p>
+<p>This man page documents perltidy version 20220217</p>
<h1 id="BUG-REPORTS">BUG REPORTS</h1>
# Release version must be bumped, and it is probably past time for a
# release anyway.
- $VERSION = '20220216';
+ $VERSION = '20220217';
}
sub DESTROY {
=head1 VERSION
-This man page documents Perl::Tidy version 20220216
+This man page documents Perl::Tidy version 20220217
=head1 LICENSE
package Perl::Tidy::Debugger;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
sub new {
package Perl::Tidy::DevNull;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
sub new { my $self = shift; return bless {}, $self }
sub print { return }
sub close { return }
package Perl::Tidy::Diagnostics;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
sub AUTOLOAD {
package Perl::Tidy::FileWriter;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
use constant DEVEL_MODE => 0;
{ #<<< A non-indenting brace to contain all lexical variables
use Carp;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
# The Tokenizer will be loaded with the Formatter
##use Perl::Tidy::Tokenizer; # for is_keyword()
package Perl::Tidy::HtmlWriter;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
use File::Basename;
use strict;
use warnings;
use Carp;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
sub AUTOLOAD {
use strict;
use warnings;
use Carp;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
sub AUTOLOAD {
package Perl::Tidy::IndentationItem;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
BEGIN {
package Perl::Tidy::LineBuffer;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
sub AUTOLOAD {
package Perl::Tidy::LineSink;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
sub AUTOLOAD {
package Perl::Tidy::LineSource;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
sub AUTOLOAD {
package Perl::Tidy::Logger;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
sub AUTOLOAD {
package Perl::Tidy::Tokenizer;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
# this can be turned on for extra checking during development
use constant DEVEL_MODE => 0;
use strict;
use warnings;
use Carp;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
use Perl::Tidy::VerticalAligner::Alignment;
use Perl::Tidy::VerticalAligner::Line;
{ #<<< A non-indenting brace
-our $VERSION = '20220216';
+our $VERSION = '20220217';
BEGIN {
package Perl::Tidy::VerticalAligner::Line;
use strict;
use warnings;
-our $VERSION = '20220216';
+our $VERSION = '20220217';
BEGIN {
+++ /dev/null
-use strict;
-use warnings;
-use utf8;
-
-use FindBin qw($Bin);
-use File::Temp qw(tempfile);
-use Test::More;
-
-BEGIN { unshift @INC, "./" }
-use Perl::Tidy;
-
-# This tests the -eos (--encode-output-strings) which was added for issue
-# git #83 to fix an issue with tidyall.
-
-# NOTE: to prevent automatic conversion of line endings LF to CRLF under github
-# Actions with Windows, which would cause test failure, it is essential that
-# there be a file 't/.gitattributes' with the line:
-# * -text
-
-# The test file has no tidying needs but is UTF-8 encoded, so all passes
-# through perltidy should read/write identical contents (previously only
-# file test behaved correctly)
-
-plan( tests => 6 );
-
-test_all();
-
-sub test_all {
- my $test_file = "$Bin/testwide-passthrough.pl.src";
- test_file2file($test_file);
- test_scalar2scalar($test_file);
- test_scalararray2scalararray($test_file);
-}
-
-sub test_file2file {
- my $test_file = shift;
-
- my $tmp_file = File::Temp->new( TMPDIR => 1 );
-
- my $source = $test_file;
- my $destination = $tmp_file->filename();
-
- note("Testing file2file: '$source' => '$destination'\n");
-
- my $tidyresult = Perl::Tidy::perltidy(
- argv => '-utf8',
- source => $source,
- destination => $destination
- );
- ok( !$tidyresult, 'perltidy' );
-
- my $source_str = slurp_raw($source);
- my $destination_str = slurp_raw($destination);
-
- my $source_hex = unpack( 'H*', $source_str );
- my $destination_hex = unpack( 'H*', $destination_str );
- note("Comparing contents:\n $source_hex\n $destination_hex\n");
-
- ok( $source_hex eq $destination_hex, 'file content compare' );
-}
-
-sub test_scalar2scalar {
- my $testfile = shift;
-
- my $source = slurp_raw($testfile);
- my $destination;
-
- note("Testing scalar2scalar\n");
-
- my $tidyresult = Perl::Tidy::perltidy(
- argv => '-utf8 -eos',
- source => \$source,
- destination => \$destination
- );
- ok( !$tidyresult, 'perltidy' );
-
- my $source_hex = unpack( 'H*', $source );
- my $destination_hex = unpack( 'H*', $destination );
-
- note("Comparing contents:\n $source_hex\n $destination_hex\n");
- ok( $source_hex eq $destination_hex, 'scalar content compare' );
-}
-
-sub test_scalararray2scalararray {
- my $testfile = shift;
-
- my $source = [ lines_raw($testfile) ];
- my $destination = [];
-
- note("Testing scalararray2scalararray\n");
-
- my $tidyresult = Perl::Tidy::perltidy(
- argv => '-utf8 -eos',
- source => $source,
- destination => $destination
- );
- ok( !$tidyresult, 'perltidy' );
-
- my $source_str = join( "", @$source );
- my $destination_str = join( "", @$destination );
-
- my $source_hex = unpack( 'H*', $source_str );
- my $destination_hex = unpack( 'H*', $destination_str );
-
- note("Comparing contents:\n $source_hex\n $destination_hex\n");
- ok( $source_hex eq $destination_hex, 'scalararray content compare' );
-}
-
-sub slurp_raw {
- my $filename = shift;
-
- open( TMP, '<', $filename );
- binmode( TMP, ':raw' );
- local $/;
- my $contents = <TMP>;
- close(TMP);
-
- return $contents;
-}
-
-sub lines_raw {
- my $filename = shift;
-
- open( TMP, '<', $filename );
- binmode( TMP, ':raw' );
- my @contents = <TMP>;
- close(TMP);
-
- return @contents;
-}
--- /dev/null
+use strict;
+use warnings;
+use utf8;
+
+use FindBin qw($Bin);
+use File::Temp qw(tempfile);
+use Test::More;
+
+BEGIN { unshift @INC, "./" }
+use Perl::Tidy;
+
+# This tests the -eos (--encode-output-strings) which was added for issue
+# git #83 to fix an issue with tidyall.
+
+# NOTE: to prevent automatic conversion of line endings LF to CRLF under github
+# Actions with Windows, which would cause test failure, it is essential that
+# there be a file 't/.gitattributes' with the line:
+# * -text
+
+# The test file has no tidying needs but is UTF-8 encoded, so all passes
+# through perltidy should read/write identical contents (previously only
+# file test behaved correctly)
+
+plan( tests => 6 );
+
+test_all();
+
+sub test_all {
+ my $test_file = "$Bin/testwide-passthrough.pl.src";
+ test_file2file($test_file);
+ test_scalar2scalar($test_file);
+ test_scalararray2scalararray($test_file);
+}
+
+sub test_file2file {
+ my $test_file = shift;
+
+ my $tmp_file = File::Temp->new( TMPDIR => 1 );
+
+ my $source = $test_file;
+ my $destination = $tmp_file->filename();
+
+ note("Testing file2file: '$source' => '$destination'\n");
+
+ my $tidyresult = Perl::Tidy::perltidy(
+ argv => '-utf8',
+ source => $source,
+ destination => $destination
+ );
+ ok( !$tidyresult, 'perltidy' );
+
+ my $source_str = slurp_raw($source);
+ my $destination_str = slurp_raw($destination);
+
+ my $source_hex = unpack( 'H*', $source_str );
+ my $destination_hex = unpack( 'H*', $destination_str );
+ note("Comparing contents:\n $source_hex\n $destination_hex\n");
+
+ ok( $source_hex eq $destination_hex, 'file content compare' );
+}
+
+sub test_scalar2scalar {
+ my $testfile = shift;
+
+ my $source = slurp_raw($testfile);
+ my $destination;
+
+ note("Testing scalar2scalar\n");
+
+ my $tidyresult = Perl::Tidy::perltidy(
+ argv => '-utf8 -eos',
+ source => \$source,
+ destination => \$destination
+ );
+ ok( !$tidyresult, 'perltidy' );
+
+ my $source_hex = unpack( 'H*', $source );
+ my $destination_hex = unpack( 'H*', $destination );
+
+ note("Comparing contents:\n $source_hex\n $destination_hex\n");
+ ok( $source_hex eq $destination_hex, 'scalar content compare' );
+}
+
+sub test_scalararray2scalararray {
+ my $testfile = shift;
+
+ my $source = [ lines_raw($testfile) ];
+ my $destination = [];
+
+ note("Testing scalararray2scalararray\n");
+
+ my $tidyresult = Perl::Tidy::perltidy(
+ argv => '-utf8 -eos',
+ source => $source,
+ destination => $destination
+ );
+ ok( !$tidyresult, 'perltidy' );
+
+ my $source_str = join( "", @$source );
+ my $destination_str = join( "", @$destination );
+
+ my $source_hex = unpack( 'H*', $source_str );
+ my $destination_hex = unpack( 'H*', $destination_str );
+
+ note("Comparing contents:\n $source_hex\n $destination_hex\n");
+ ok( $source_hex eq $destination_hex, 'scalararray content compare' );
+}
+
+sub slurp_raw {
+ my $filename = shift;
+
+ open( TMP, '<', $filename );
+ binmode( TMP, ':raw' );
+ local $/;
+ my $contents = <TMP>;
+ close(TMP);
+
+ return $contents;
+}
+
+sub lines_raw {
+ my $filename = shift;
+
+ open( TMP, '<', $filename );
+ binmode( TMP, ':raw' );
+ my @contents = <TMP>;
+ close(TMP);
+
+ return @contents;
+}
+++ /dev/null
-use strict;
-use warnings;
-use utf8;
-
-use FindBin qw($Bin);
-use File::Temp qw(tempfile);
-use Test::More;
-
-BEGIN { unshift @INC, "./" }
-use Perl::Tidy;
-
-# This tests the -eos (--encode-output-strings) which was added for issue
-# git #83 to fix an issue with tidyall.
-
-# NOTE: to prevent automatic conversion of line endings LF to CRLF under github
-# Actions with Windows, which would cause test failure, it is essential that
-# there be a file 't/.gitattributes' with the line:
-# * -text
-
-# The test file is UTF-8 encoded
-
-plan( tests => 6 );
-
-test_all();
-
-sub test_all {
- my $test_file = "$Bin/testwide-tidy.pl.src";
- my $tidy_file = "$Bin/testwide-tidy.pl.srctdy";
- my $tidy_str = slurp_raw($tidy_file);
- test_file2file( $test_file, $tidy_str );
- test_scalar2scalar( $test_file, $tidy_str );
- test_scalararray2scalararray( $test_file, $tidy_str );
-}
-
-sub test_file2file {
- my $test_file = shift;
- my $tidy_str = shift;
- my $tidy_hex = unpack( 'H*', $tidy_str );
-
- my $tmp_file = File::Temp->new( TMPDIR => 1 );
-
- my $source = $test_file;
- my $destination = $tmp_file->filename();
-
- note("Testing file2file: '$source' => '$destination'\n");
-
- my $tidyresult = Perl::Tidy::perltidy(
- argv => '-utf8',
- source => $source,
- destination => $destination
- );
- ok( !$tidyresult, 'perltidy' );
-
- my $destination_str = slurp_raw($destination);
- my $destination_hex = unpack( 'H*', $destination_str );
-
- note("Comparing contents:\n $tidy_hex\n $destination_hex\n");
- ok($tidy_hex eq $destination_hex, 'file content compare');
-
-}
-
-sub test_scalar2scalar {
- my $test_file = shift;
- my $tidy_str = shift;
- my $tidy_hex = unpack( 'H*', $tidy_str );
-
- my $source = slurp_raw($test_file);
- my $destination;
-
- note("Testing scalar2scalar\n");
-
- my $tidyresult = Perl::Tidy::perltidy(
- argv => '-utf8 -eos',
- source => \$source,
- destination => \$destination
- );
- ok( !$tidyresult, 'perltidy' );
-
- my $destination_hex = unpack( 'H*', $destination );
-
- note("Comparing contents:\n $tidy_hex\n $destination_hex\n");
- ok($tidy_hex eq $destination_hex, 'scalar content compare');
-
-}
-
-sub test_scalararray2scalararray {
- my $test_file = shift;
- my $tidy_str = shift;
- my $tidy_hex = unpack( 'H*', $tidy_str );
-
- my $source = [ lines_raw($test_file) ];
- my $destination = [];
-
- note("Testing scalararray2scalararray\n");
-
- my $tidyresult = Perl::Tidy::perltidy(
- argv => '-utf8 -eos',
- source => $source,
- destination => $destination
- );
- ok( !$tidyresult, 'perltidy' );
-
- my $destination_str = join( '', @$destination );
- my $destination_hex = unpack( 'H*', $destination_str );
-
- note("Comparing contents:\n $tidy_hex\n $destination_hex\n");
- ok($tidy_hex eq $destination_hex, 'scalararray content compare');
-}
-
-sub slurp_raw {
- my $filename = shift;
-
- open( TMP, '<', $filename );
- binmode( TMP, ':raw' );
- local $/;
- my $contents = <TMP>;
- close(TMP);
-
- return $contents;
-}
-
-sub lines_raw {
- my $filename = shift;
-
- open( TMP, '<', $filename );
- binmode( TMP, ':raw' );
- my @contents = <TMP>;
- close(TMP);
-
- return @contents;
-}
--- /dev/null
+use strict;
+use warnings;
+use utf8;
+
+use FindBin qw($Bin);
+use File::Temp qw(tempfile);
+use Test::More;
+
+BEGIN { unshift @INC, "./" }
+use Perl::Tidy;
+
+# This tests the -eos (--encode-output-strings) which was added for issue
+# git #83 to fix an issue with tidyall.
+
+# NOTE: to prevent automatic conversion of line endings LF to CRLF under github
+# Actions with Windows, which would cause test failure, it is essential that
+# there be a file 't/.gitattributes' with the line:
+# * -text
+
+# The test file is UTF-8 encoded
+
+plan( tests => 6 );
+
+test_all();
+
+sub test_all {
+ my $test_file = "$Bin/testwide-tidy.pl.src";
+ my $tidy_file = "$Bin/testwide-tidy.pl.srctdy";
+ my $tidy_str = slurp_raw($tidy_file);
+ test_file2file( $test_file, $tidy_str );
+ test_scalar2scalar( $test_file, $tidy_str );
+ test_scalararray2scalararray( $test_file, $tidy_str );
+}
+
+sub test_file2file {
+ my $test_file = shift;
+ my $tidy_str = shift;
+ my $tidy_hex = unpack( 'H*', $tidy_str );
+
+ my $tmp_file = File::Temp->new( TMPDIR => 1 );
+
+ my $source = $test_file;
+ my $destination = $tmp_file->filename();
+
+ note("Testing file2file: '$source' => '$destination'\n");
+
+ my $tidyresult = Perl::Tidy::perltidy(
+ argv => '-utf8',
+ source => $source,
+ destination => $destination
+ );
+ ok( !$tidyresult, 'perltidy' );
+
+ my $destination_str = slurp_raw($destination);
+ my $destination_hex = unpack( 'H*', $destination_str );
+
+ note("Comparing contents:\n $tidy_hex\n $destination_hex\n");
+ ok($tidy_hex eq $destination_hex, 'file content compare');
+
+}
+
+sub test_scalar2scalar {
+ my $test_file = shift;
+ my $tidy_str = shift;
+ my $tidy_hex = unpack( 'H*', $tidy_str );
+
+ my $source = slurp_raw($test_file);
+ my $destination;
+
+ note("Testing scalar2scalar\n");
+
+ my $tidyresult = Perl::Tidy::perltidy(
+ argv => '-utf8 -eos',
+ source => \$source,
+ destination => \$destination
+ );
+ ok( !$tidyresult, 'perltidy' );
+
+ my $destination_hex = unpack( 'H*', $destination );
+
+ note("Comparing contents:\n $tidy_hex\n $destination_hex\n");
+ ok($tidy_hex eq $destination_hex, 'scalar content compare');
+
+}
+
+sub test_scalararray2scalararray {
+ my $test_file = shift;
+ my $tidy_str = shift;
+ my $tidy_hex = unpack( 'H*', $tidy_str );
+
+ my $source = [ lines_raw($test_file) ];
+ my $destination = [];
+
+ note("Testing scalararray2scalararray\n");
+
+ my $tidyresult = Perl::Tidy::perltidy(
+ argv => '-utf8 -eos',
+ source => $source,
+ destination => $destination
+ );
+ ok( !$tidyresult, 'perltidy' );
+
+ my $destination_str = join( '', @$destination );
+ my $destination_hex = unpack( 'H*', $destination_str );
+
+ note("Comparing contents:\n $tidy_hex\n $destination_hex\n");
+ ok($tidy_hex eq $destination_hex, 'scalararray content compare');
+}
+
+sub slurp_raw {
+ my $filename = shift;
+
+ open( TMP, '<', $filename );
+ binmode( TMP, ':raw' );
+ local $/;
+ my $contents = <TMP>;
+ close(TMP);
+
+ return $contents;
+}
+
+sub lines_raw {
+ my $filename = shift;
+
+ open( TMP, '<', $filename );
+ binmode( TMP, ':raw' );
+ my @contents = <TMP>;
+ close(TMP);
+
+ return @contents;
+}