Skip to content

Commit

Permalink
Возвращена проверка на наличие Unicode BOM. Исправлены ошибки в текст…
Browse files Browse the repository at this point in the history
…ах справки и инструкций.
  • Loading branch information
chomobi committed Nov 5, 2017
1 parent e1ffdde commit 2f2f8d1
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 17 deletions.
3 changes: 3 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
0.6.1 2017-11-05
- Возвращено либеральное правило проверки на BOM (но только в начале файла; кроме мода-сохранения) — теперь BOM не обязательно проставлять в исходных файлах. Более того — теперь я этого не рекомендую.

0.6.0 2017-05-13
- Прекращена поставка устаревшего `font.txt`.
- Графический интерфейс переведён на IUP.
Expand Down
36 changes: 32 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ CP1252CYR:

Интерфейс выбора каталогов для EU4Lite и CK2Lite отличается, т. к. соответствующая функция производит сборку локализации для Lite-перевода, поэтому требуются два исходных каталога с разными локализациями и обязательный каталог сохранения.

Начаная с версии 0.6.1 BOM в начале исходного файла в кодировке UTF-8 не обязателен и не рекомендуется к установке.

<!--
СТАНДАРТНЫЕ ДЕЙСТВИЯ
СООБЩЕНИЯ ОБ ОШИБКАХ
Expand All @@ -101,7 +103,7 @@ CP1252CYR:

* Кодировать (CP1251) — произвести промежуточное преобразование кодовых позиций символов кириллицы в кодировке UTF-8 из их расположения в этой кодировке к позициям символов, которые после прочтения движком соответственно станут на позиции символов кириллицы в кодировке CP1251.

* Кодировать (CP1252CYR) — произвести промежуточное преобразование кодовых позиций символов кириллицы в кодировке UTF-8 из их расположения в этой кодировке к позициям символов, которые после прочтения движком соответственно станут на позиции символов кириллицы в кодировке CP1252CYR.
* Кодировать (CP1252CYR) — произвести промежуточное преобразование кодовых позиций символов кириллицы в кодировке UTF-8 из их расположения в этой кодировке к позициям символов, которые после прочтения движком соответственно станут на позиции символов кириллицы в кодировке CP1252CYREU4.

* Транслитерировать — транслитерировать кириллицу и произвести промежуточное преобразование кодовых позиций символов кириллицы в кодировке UTF-8 из их расположения в этой кодировке к позициям символов, которые после прочтения движком соответственно станут на позиции транслитерированных символов кириллицы в кодировке CP1252.

Expand All @@ -117,9 +119,9 @@ CP1252CYR:

Формат входных файлов: кодировка UTF-8 с BOM, обрыв строки LF (в стиле \*nix). Формат выходных файлов такой же. Выбор файлов производится по расширению `*.yml`.

* CP1252CYR — получить Lite-перевод в кодировке CP1252CYRCK2.
* CP1252CYR — получить Lite-перевод в кодировке CP1252CYREU4.

* CP1251 — получить Lite-перевод в кодировке CP1251
* CP1251 — получить Lite-перевод в кодировке CP1251.

* Транслитерировать — получить транслитерированную версию локализации.

Expand Down Expand Up @@ -163,7 +165,7 @@ CP1252CYR:

* CP1252CYR — получить Lite-перевод в кодировке CP1252CYRCK2.

* CP1251 — получить Lite-перевод в кодировке CP1251
* CP1251 — получить Lite-перевод в кодировке CP1251.

* Транслитерировать — получить транслитерированную версию локализации.

Expand Down Expand Up @@ -254,6 +256,32 @@ CP1252CYR:

<!-- в разделе №8 был несвободный текст -->

## Примеры текста

Текст примера:

```
Съешь же ещё этих мягких французских булок да выпей чаю.
```

CP1251 в промежуточном представлении в UTF8:

```
Ñúåøü æå åù¸ ýòèõ ìÿãêèõ ôðàíöóçñêèõ áóëîê äà âûïåé ÷àþ.
```

CP1252CYR в промежуточном представлении в UTF8:

```
C¹e·» ¨e e¸ë ¼²ªx ¯÷¥¬ªx ´pa°µ³©c¬ªx  ³®o¬ ¦a ¢º±e« ¶a¾.
```

Транслит:

```
S’exy je eçë êtih mägkih franquzskih bulok da vîpey caü.
```

<!-- 9. -->

## Связь с автором
Expand Down
40 changes: 30 additions & 10 deletions Recodenc.pm
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,9 @@ sub l10n_eu4 {
closedir($ch);
foreach my $filename (@filenames) {
open(my $filehandle, '<:unix:perlio:encoding(utf-8)', encode('locale_fs', "$dir1/$filename"));
seek($filehandle, 3, 0); # отбрасывание трёх байт с начала файла (BOM)
my $sof; # отбрасывание BOM, если он есть
read($filehandle, $sof, 1);
unless ($sof eq "\x{FEFF}") {seek($filehandle, 0, 0)}
my $fl = 0; # флаг нужности/ненужности обработки строк
my @strs; # объявление хранилища строк
push(@strs, "\x{FEFF}"); # добавление BOM в начало файла
Expand Down Expand Up @@ -375,7 +377,7 @@ sub l10n_eu4 {
undef $filehandle;
# запись результатов обработки
unless (defined($dir2)) {$dir2 = $dir1}
open($filehandle, '>:unix:perlio:encoding(utf-8)', encode('locale_fs', "$dir2/$filename"));
open($filehandle, '>:unix:perlio:encoding(utf-8)', encode('locale_fs', "$dir2/$filename")) or die "Невозможно открыть файл: $!";
print $filehandle @strs;
close $filehandle;
}
Expand Down Expand Up @@ -425,7 +427,9 @@ sub l10n_eu4_lite {
closedir($ch);
foreach my $filename (@filenames) {
open(my $filehandle, '<:unix:perlio:encoding(utf-8)', encode('locale_fs', "$dir_orig_ru/$filename"));
seek($filehandle, 3, 0);
my $sof; # отбрасывание BOM, если он есть
read($filehandle, $sof, 1);
unless ($sof eq "\x{FEFF}") {seek($filehandle, 0, 0)}
my $fl = 0; # флаг нужности/ненужности обработки строк
my @strs;
push(@strs, "\x{FEFF}");
Expand Down Expand Up @@ -471,7 +475,9 @@ sub l10n_eu4_lite {
@filenames = ('prov_names_l_english.yml', 'prov_names_adj_l_english.yml');
foreach my $filename (@filenames) {
open(my $filehandle, '<:unix:perlio:encoding(utf-8)', "$dir_orig_en/$filename");
seek($filehandle, 3, 0);
my $sof; # отбрасывание BOM, если он есть
read($filehandle, $sof, 1);
unless ($sof eq "\x{FEFF}") {seek($filehandle, 0, 0)}
my @strs;
push(@strs, "\x{FEFF}");
while (my $str = <$filehandle>) {
Expand Down Expand Up @@ -552,7 +558,9 @@ sub l10n_eu4_tags {
mkdir(encode('locale_fs', "$dir_save_ru/ru"));
foreach my $filename (@filenames) {
open(my $filehandle, '<:unix:perlio:encoding(utf-8)', encode('locale_fs', "$dir_orig_ru/$filename"));
seek($filehandle, 3, 0);
my $sof; # отбрасывание BOM, если он есть
read($filehandle, $sof, 1);
unless ($sof eq "\x{FEFF}") {seek($filehandle, 0, 0)}
my @strs;
push(@strs, "\x{FEFF}");
while (my $str = <$filehandle>) {
Expand Down Expand Up @@ -581,7 +589,9 @@ sub l10n_eu4_tags {
mkdir(encode('locale_fs', "$dir_save_ru/en"));
foreach my $filename (@filenames) {
open(my $filehandle, '<:crlf:perlio:encoding(utf-8)', encode('locale_fs', "$dir_orig_en/$filename"));
seek($filehandle, 3, 0);
my $sof; # отбрасывание BOM, если он есть
read($filehandle, $sof, 1);
unless ($sof eq "\x{FEFF}") {seek($filehandle, 0, 0)}
my @strs;
push(@strs, "\x{FEFF}");
while (my $str = <$filehandle>) {
Expand Down Expand Up @@ -695,7 +705,9 @@ sub l10n_ck2 {
foreach my $filename (@filenames) {
open(my $filehandle, "<$reg_read", encode('locale_fs', "$dir1/$filename"));
if ($cpfl == $ENC_CP1251 or $cpfl == $ENC_CP1252CYRCK2 or $cpfl == $ENC_TRANSLIT) {
seek($filehandle, 3, 0);
my $sof; # отбрасывание BOM, если он есть
read($filehandle, $sof, 1);
unless ($sof eq "\x{FEFF}") {seek($filehandle, 0, 0)}
}
my @strs;
while (my $str = <$filehandle>) {
Expand Down Expand Up @@ -777,7 +789,9 @@ sub l10n_ck2_lite {
closedir($corh);
foreach my $filename (@filenames_or) {
open(my $filehandle, '<:unix:perlio:encoding(utf-8)', encode('locale_fs', "$dir_orig_ru/$filename"));
seek($filehandle, 3, 0);
my $sof; # отбрасывание BOM, если он есть
read($filehandle, $sof, 1);
unless ($sof eq "\x{FEFF}") {seek($filehandle, 0, 0)}
while (my $str = <$filehandle>) {
chomp $str;
if ($str =~ m/^$/ or $str =~ m/^\#/ or $str =~ m/^;/) {next} # пропуск пустых строк, строк с комментариями и строк без тегов
Expand Down Expand Up @@ -891,7 +905,9 @@ sub l10n_ck2_tags {
mkdir(encode('locale_fs', "$dir_save_ru/ru"));
foreach my $filename (@filenames_or) {
open(my $filehandle, '<:unix:perlio:encoding(utf-8)', encode('locale_fs', "$dir_orig_ru/$filename"));
seek($filehandle, 3, 0);
my $sof; # отбрасывание BOM, если он есть
read($filehandle, $sof, 1);
unless ($sof eq "\x{FEFF}") {seek($filehandle, 0, 0)}
my $ff;
my @strs;
push(@strs, "\x{FEFF}#CODE\n");
Expand Down Expand Up @@ -1217,7 +1233,11 @@ sub plaintext {
foreach my $filename (@filenames) {
unless (-f encode('locale_fs', "$dir1/$filename")) {next}
open(my $filehandle, "<$reg_read", encode('locale_fs', "$dir1/$filename"));
if ($reg_read eq ':encoding(utf-8)') {seek($filehandle, 3, 0)}
if ($reg_read eq ':encoding(utf-8)') {
my $sof; # отбрасывание BOM, если он есть
read($filehandle, $sof, 1);
unless ($sof eq "\x{FEFF}") {seek($filehandle, 0, 0)}
}
my @strs;
if ($reg_write eq ':encoding(utf-8)') {push(@strs, "\x{FEFF}")}
while (my $str = <$filehandle>) {
Expand Down
2 changes: 1 addition & 1 deletion encxs/INSTALL
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
* Windows
1. Установите Strawberry Perl <http://strawberryperl.com/>.
2. Откройте отно командной строки.
2. Откройте окно командной строки.
3. В окне командной строки перейдите в каталог с модулем.
4. В окне командной строки выполните следующие команды:
1. perl Build.PL
Expand Down
2 changes: 1 addition & 1 deletion recodenc-gui.pl
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ BEGIN
binmode(STDERR, ":encoding(console_out)");

*PROGNAME = \'Recodenc';
*VERSION = \'0.6.0';
*VERSION = \'0.6.1';

# загрузка конфигурации
my $conf_path_dir; # имя каталога файла конфигурации
Expand Down
2 changes: 1 addition & 1 deletion recodenc.pl
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
@ARGV = map {decode('locale', $_)} @ARGV;

*PROGNAME = \'Recodenc';
*VERSION = \'0.6.0';
*VERSION = \'0.6.1';
*ACTION_ENCODE = \1;
*ACTION_DECODE = \2;
*ACTION_TRANSLIT = \3;
Expand Down

0 comments on commit 2f2f8d1

Please sign in to comment.