1
1
#!/usr/bin/python3
2
2
# -*- coding: utf-8 -*-
3
3
# Automatically derive Recode table files from various sources.
4
- # Copyright © 1993-2000 Free Software Foundation, Inc.
4
+ # Copyright © 1993-2023 Free Software Foundation, Inc.
5
5
# François Pinard <[email protected] >, 1993.
6
6
7
7
# This program is free software; you can redistribute it and/or modify
40
40
When `-F' and `-n' are used, process Alain's tables.
41
41
"""
42
42
43
- import re , sys , io
43
+ import re , sys , os , io
44
44
45
45
# Character constants.
46
46
REPLACEMENT_CHARACTER = 0xFFFD
@@ -98,7 +98,6 @@ def main(self, *arguments):
98
98
99
99
# Read all data tables.
100
100
if self .directory :
101
- import os
102
101
os .chdir (self .directory )
103
102
if self .iconv :
104
103
self .iconv .digest ()
@@ -464,32 +463,22 @@ def digest(self):
464
463
canonical [charset .upper ()] = charset
465
464
466
465
# Read in the encodings.def file.
467
- sys .stdout .write ("Reading from `iconv -l'\n " )
468
- libc = None
469
- import os
466
+ sys .stdout .write ("Reading from `iconv_no_18n -l'\n " )
470
467
names = []
471
- for line in os .popen ('iconv -l' ):
472
- if libc is None :
473
- libc = len (line .split ('/' )) == 3
474
- if libc :
475
- first , second , empty = line .split ('/' )
476
- assert empty == '\n ' , repr (line )
477
- name = second or first
478
- if name not in names :
479
- names .append (name )
480
- self .data .append ((name , ()))
481
- else :
482
- aliases = []
483
- for alias in line .split ():
484
- if alias in canonical :
485
- alias = canonical [alias ]
486
- aliases .append (alias )
487
- self .data .append ((aliases [0 ], aliases [1 :]))
468
+ for line in os .popen ('../libiconv/src/iconv_no_i18n -l' ):
469
+ aliases = []
470
+ for alias in line .split ():
471
+ if alias in canonical :
472
+ alias = canonical [alias ]
473
+ aliases .append (alias )
474
+ self .data .append ((aliases [0 ], aliases [1 :]))
488
475
489
476
def complete (self , french ):
490
- def write_charset (format , charset ):
491
- write (format % charset )
492
- write (format % (charset + "-translit" ))
477
+ def write_charset_with_aliases (charset , suffix = '' ):
478
+ write (f' "{ charset + suffix } ",\n ' )
479
+ for alias in aliases [:- 1 ]:
480
+ write (f'\t "{ alias + suffix } ",\n ' )
481
+ write (f'\t "{ aliases [- 1 ] + suffix } ", NULL,\n ' )
493
482
if not self .do_sources :
494
483
return
495
484
write = Output (self .SOURCES ).write
@@ -505,12 +494,11 @@ def write_charset(format, charset):
505
494
% count )
506
495
for charset , aliases in self .data :
507
496
if aliases :
508
- write_charset (' "%s",\n ' , charset )
509
- for alias in aliases [:- 1 ]:
510
- write_charset ('\t "%s",\n ' , alias )
511
- write_charset ('\t "%s", NULL,\n ' , aliases [- 1 ])
497
+ write_charset_with_aliases (charset )
498
+ write_charset_with_aliases (charset , '-translit' )
512
499
else :
513
- write_charset (' "%s", NULL,\n ' , charset )
500
+ write (f' "{ charset } ", NULL,\n ' )
501
+ write (f' "{ charset } -translit", NULL,\n ' )
514
502
write (' NULL\n '
515
503
' };\n ' )
516
504
0 commit comments