]> git.pld-linux.org Git - packages/rpm-build-tools.git/blame - spec_utf8
- there is no ftp.task.gda.pl/pub/mozilla/js
[packages/rpm-build-tools.git] / spec_utf8
CommitLineData
11774a5d
AF
1#!/usr/bin/python
2
3import os, os.path, re, sys, locale
4
5langs={
6 'bg':'windows-1251',
7 'br':'iso8859-1',
8 'ca':'iso8859-1',
9 'cs':'iso8859-2',
10 'da':'iso8859-1',
11 'de':'iso8859-1',
12 'en':'iso8859-1',
13 'eo':'iso8859-3',
14 'es':'iso8859-1',
15 'fi':'iso8859-1',
16 'fo':'iso8859-1',
17 'fr':'iso8859-1',
18 'gl':'iso8859-1',
19 'he':'iso8859-8',
20 'id':'iso8859-1',
21 'is':'iso8859-1',
22 'it':'iso8859-1',
23 'ja':'euc-jp',
24 'ko':'euc-kr',
25 'nb':'iso8859-1',
26 'nl':'iso8859-1',
27 'pl':'iso8859-2',
28 'pt':'iso8859-1',
29 'pt_BR':'iso8859-1',
30 'ro':'iso8859-2',
e4fe63e5 31 'ru':'KOI8-R',
11774a5d
AF
32 'se':'UTF-8',
33 'sk':'iso8859-2',
34 'sl':'iso8859-2',
35 'sv':'iso8859-1',
36 'tr':'iso8859-9',
37 'uk':'KOI8-U',
38 'wa':'iso8859-1',
39 'zh_CN':'GB2312',
40 'zh_HK':'BIG5-HKSCS',
41 'zh_TW':'BIG5',
42 0:0}
43
fb3b78fc
AF
44def find_encoding(lang):
45 r = re.match("^([^.]+)(\.[^@]+)?$", lang)
46 pure_lang = r.group(1)
47 if r.group(2) == None:
48 try:
49 enc = langs[lang]
50 except KeyError:
51 enc = None
52 else:
53 # strip dot
54 enc = r.group(2)[1:]
55 return (enc, pure_lang)
56
11774a5d
AF
57def parse_spec(infile, outfile):
58 re_summary = re.compile("^Summary\(([^\)]+)\):\t+(.*)$")
fb3b78fc 59 re_utf = re.compile("^utf-8$", re.I)
11774a5d
AF
60 re_desc = re.compile("^(%description.*\s)-l\s+([\S]+)($|\s.*$)")
61 re_proc = re.compile("^%")
62 in_desc = False
63
64 for l in infile:
65 outline = l
66 r = re_summary.match(l)
67 if r:
fb3b78fc
AF
68 (enc, pure_lang) = find_encoding(r.group(1))
69 if enc == None:
70 outfile.write("#unknow lang code Summary(%s)\n" % (lang))
71 elif not re_utf.search(enc):
11774a5d 72 try:
fb3b78fc
AF
73 desc = unicode(r.group(2), enc).encode("UTF-8")
74 l = "Summary(%s.UTF-8): %s\n" % (pure_lang, desc)
11774a5d
AF
75 except UnicodeDecodeError:
76 outfile.write("#transcoding error Summary(%s)\n" % (lang))
11774a5d
AF
77 if in_desc:
78 if re_proc.search(l):
79 in_desc = False
80 else:
fb3b78fc 81 if not re_utf.search(enc):
11774a5d 82 try:
fb3b78fc 83 l = unicode(l, enc).encode("UTF-8")
11774a5d
AF
84 except UnicodeDecodeError:
85 outfile.write("#transcoding error %%description -l %s\n" % (lang))
86
87 r = re_desc.match(l)
88 if r:
fb3b78fc
AF
89 (enc, pure_lang) = find_encoding(r.group(2))
90 if enc == None:
983ae5dd 91 outfile.write("#unknown lang code in %%description -l %s\n" % (lang))
fb3b78fc
AF
92 elif not re_utf.search(enc):
93 in_desc = True
94 l = "%s-l %s.UTF-8%s\n" % (r.group(1), pure_lang, r.group(3))
11774a5d
AF
95
96 outfile.write(l)
97
11774a5d
AF
98def main():
99 parse_spec(sys.stdin, sys.stdout)
100
101if __name__ == "__main__":
102 main()
103
This page took 0.172532 seconds and 4 git commands to generate.