Skip to content

Commit

Permalink
cjk enhancement, #505
Browse files Browse the repository at this point in the history
  • Loading branch information
cmhughes committed Jan 13, 2024
1 parent c87556f commit 29c24ad
Show file tree
Hide file tree
Showing 10 changed files with 65 additions and 11 deletions.
14 changes: 9 additions & 5 deletions .github/workflows/batch-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,12 @@ jobs:
run: |
./latexindent.exe -l test-cases/replacements/issue-503b.yaml -r test-cases/replacements/issue-503a.tex
cat test-cases/replacements/indent.log
### - name: latexindent.exe cjk test, issue 505
### # https://github.com/cmhughes/latexindent.pl/issues/505
### run: |
### ./latexindent.exe -w test-cases/back-up-tests/新建.tex -y 'onlyOneBackUp:1'
### cat test-cases/back-up-tests/indent.log
- name: latexindent.exe cjk test, issue 505
# https://github.com/cmhughes/latexindent.pl/issues/505
run: |
./latexindent.exe -w --encoding "GB2312" test-cases/back-up-tests/新建.tex -y 'onlyOneBackUp:1'
cat test-cases/back-up-tests/indent.log
./latexindent.exe --encoding "GB2312" test-cases/back-up-tests/新建.tex -o=+-mod1 -y 'onlyOneBackUp:1'
cat test-cases/back-up-tests/indent.log
./latexindent.exe --encoding "GB2312" test-cases/back-up-tests/新建.tex -g=新建.log
cat 新建.log
18 changes: 15 additions & 3 deletions LatexIndent/BackUpFileProcedure.pm
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ use LatexIndent::LogFile qw/$logger/;
use File::Basename; # to get the filename and directory path
use File::Copy; # to copy the original file to backup (if overwrite option set)
use Exporter qw/import/;
use Encode qw/decode/;
use Encode qw/decode encode/;
our @EXPORT_OK = qw/create_back_up_file check_if_different/;

# copy main file to a backup in the case of the overwrite switch being active
Expand All @@ -36,7 +36,13 @@ sub create_back_up_file {
# if we want to overwrite the current file create a backup first
$logger->info("*Backup procedure (-w flag active):");

my $fileName = decode( "utf-8", ${$self}{fileName} );
my $fileName;
if ( ${$self}{encoding} and ref( find_encoding( ${$self}{encoding} ) ) ) {
$fileName = ${$self}{fileName};
}
else {
$fileName = decode( "utf-8", ${$self}{fileName} );
}

# grab the file extension preferences
my %fileExtensionPreference = %{ $mainSettings{fileExtensionPreference} };
Expand All @@ -49,7 +55,13 @@ sub create_back_up_file {
my $backupFileNoExt = basename( ${$self}{fileName}, @fileExtensions );

# add the user's backup directory to the backup path
$backupFileNoExt = decode( "utf-8", "${$self}{cruftDirectory}/$backupFileNoExt" );
if ( ${$self}{encoding} and ref( find_encoding( ${$self}{encoding} ) ) ) {
my $encodingObject = find_encoding( ${$self}{encoding} );
$backupFileNoExt = $encodingObject->encode("${$self}{cruftDirectory}/$backupFileNoExt");
}
else {
$backupFileNoExt = decode( "utf-8", "${$self}{cruftDirectory}/$backupFileNoExt" );
}

# local variables, determined from the YAML settings
my $onlyOneBackUp = $mainSettings{onlyOneBackUp};
Expand Down
7 changes: 6 additions & 1 deletion LatexIndent/Document.pm
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use warnings;
use Data::Dumper;
use File::Basename; # to get the filename and directory path
use open ':std', ':encoding(UTF-8)';
use Encode qw/decode/;
use Encode;

# gain access to subroutines in the following modules
use LatexIndent::Switches
Expand Down Expand Up @@ -98,7 +98,12 @@ sub latexindent {

# one-time operations
$self->store_switches;
if ( ${$self}{encoding} and ref( find_encoding( ${$self}{encoding} ) ) ) {
my $encodingObject = find_encoding( ${$self}{encoding} );
${$self}{fileName} = $encodingObject->encode( ${$self}{fileName} );
} else {
${$self}{fileName} = decode( "utf-8", $fileNames[0] );
}
$self->process_switches( \@fileNames );
$self->yaml_read_settings;

Expand Down
1 change: 1 addition & 0 deletions LatexIndent/FileExtension.pm
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ use Encode qw/decode/;
use LatexIndent::GetYamlSettings qw/%mainSettings/;
use LatexIndent::Switches qw/%switches $is_check_switch_active/;
use LatexIndent::LogFile qw/$logger/;
use Encode;
our @EXPORT_OK = qw/file_extension_check/;

sub file_extension_check {
Expand Down
13 changes: 11 additions & 2 deletions LatexIndent/LogFile.pm
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ use File::Path qw(make_path);
use Exporter qw/import/;
use LatexIndent::Switches qw/%switches/;
use LatexIndent::Version qw/$versionNumber $versionDate/;
use Encode qw/decode/;
use Encode;
our @EXPORT_OK = qw/process_switches $logger/;
our $logger;

Expand Down Expand Up @@ -116,6 +116,9 @@ usage: latexindent.pl [options] [file]
--GCString
loads the Unicode::GCString module for the align-at-ampersand routine
Note: this requires the Unicode::GCString module to be installed on your system
-e, --encoding=<value>
specify encoding, sample usage
latexindent.pl --encoding gb2312 myfile.tex
ENDQUOTE
;
exit(0);
Expand Down Expand Up @@ -147,7 +150,13 @@ ENDQUOTE
my $logfileName = ( $switches{cruftDirectory} ? ${$self}{cruftDirectory} . "/" : '' )
. ( $switches{logFileName} || "indent.log" );

$logfileName = decode( "utf-8", $logfileName );
if ( ${$self}{encoding} and ref( find_encoding( ${$self}{encoding} ) ) ) {
my $encodingObject = find_encoding( ${$self}{encoding} );
$logfileName = $encodingObject->encode($logfileName);
}
else {
$logfileName = decode( "utf-8", $logfileName );
}

# details of the script to log file
$logger->info("*$FindBin::Script version $versionNumber, $versionDate, a script to indent .tex files");
Expand Down
2 changes: 2 additions & 0 deletions LatexIndent/Switches.pm
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ sub store_switches {
$is_check_verbose_switch_active = defined $switches{checkverbose} ? $switches{checkverbose} : 0;
$is_check_switch_active
= $is_check_verbose_switch_active ? $is_check_verbose_switch_active : $is_check_switch_active;
${$self}{encoding} = ( $switches{encoding} ? $switches{encoding} : 0 );

delete ${$self}{switches};
}
1;
1 change: 1 addition & 0 deletions latexindent.pl
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
"checkv|kv" => \$switches{checkverbose},
"lines|n=s" => \$switches{lines},
"GCString" => \$switches{GCString},
"encoding|e=s" => \$switches{encoding},
);

# conditionally load the GCString module
Expand Down
5 changes: 5 additions & 0 deletions test-cases/back-up-tests/back-up-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ latexindent.pl -s -w 新建.tex -g issue-505.log -y 'onlyOneBackUp:1'
cp issue-505.log issue-505.txt
perl -p0i -e 's/.*?(INFO:\s*Backup)/$1/s' issue-505.txt

latexindent.pl -s -w 新建.tex -g=新建.log -y 'onlyOneBackUp:1'
cp 新建.log issue-505-1.txt
perl -p0i -e 's/.*?(INFO:\s*Backup)/$1/s' issue-505-1.txt

latexindent.pl -s -w --encoding "GB2312" 新建.tex -y 'onlyOneBackUp:1'
set +x
[[ $gitStatus == 1 ]] && git status
[[ $noisyMode == 1 ]] && makenoise
14 changes: 14 additions & 0 deletions test-cases/back-up-tests/issue-505-1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
INFO: Backup procedure (-w flag active):
./新建.bak will be overwritten (see onlyOneBackUp)
Backing up 新建.tex to ./新建.bak...
新建.tex will be overwritten after indentation
INFO: Phase 1: searching for objects
No objects found.
INFO: Phase 2: finding surrounding indentation
INFO: Phase 3: indenting objects
INFO: Phase 4: final indentation check
INFO: Output routine:
Overwriting file 新建.tex
--------------
INFO: Please direct all communication/issues to:
https://github.com/cmhughes/latexindent.pl
1 change: 1 addition & 0 deletions test-cases/back-up-tests/issue-505.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
encoding: GB2312

0 comments on commit 29c24ad

Please sign in to comment.