1#!/usr/bin/env python
2
3from plasTeX import Command, Environment, log
4
5# Map of CJK encoding names to Python encoding names
6encodings = {
7    'Bg5': 'big5',
8    'GB': '',
9    'GBt': '',
10    'JIS': 'euc_jp',
11    'SJIS': 'shift_jis',
12    'KS': '',
13    'UTF8': 'utf_8',
14}
15
16class CJK(Environment):
17    args = '* [ fontencoding ] encoding args'
18
19class CJKchar(Command):
20    args = '[ encoding:str ] char1:int char2:int'
21    @property
22    def str(self):
23        a = self.attributes
24        enc = encodings[a['encoding'].strip()]
25        if not enc:
26            log.warning('Unknown encoding: %s' % a['encoding'])
27            raise AttributeError('str')
28        return str(chr(a['char1'])+chr(a['char2'])).encode(enc)
29
30class Str(Command):
31    args = 'char1:int char2:int'
32    @property
33    def str(self):
34        return chr(a['char1'])+chr(a['char2'])
35
36class CJKcaption(Command):
37    args = 'caption:str'
38
39class CKJenc(Command):
40    args = 'encoding:str'
41
42class CJKfamily(Command):
43    args = 'family:str'
44
45class CJKencfamily(Command):
46    args = '[ fontencoding:str ] encoding:str family:str'
47
48class CJKfontenc(Command):
49    args = 'encoding:str fontencoding:str'
50
51class CJKkern(Command):
52    pass
53
54class CJKglue(Command):
55    pass
56
57class CJKtilde(Command):
58    pass
59
60class nbs(Command):
61    pass
62
63class standardtilde(Command):
64    pass
65
66class CJKspace(Command):
67    pass
68
69class CJKnospace(Command):
70    pass
71
72class CJKhanja(Command):
73    pass
74
75class CJKhanjul(Command):
76    pass
77
78class CJKtolerance(Command):
79    pass
80
81class CJKuppercase(Command):
82    pass
83
84class Bg5text(Environment):
85    pass
86
87class SJIStext(Environment):
88    pass
89
90class CJKCJKchar(Command):
91    pass
92
93class CJKhangulchar(Command):
94    pass
95
96class CJKlatinchar(Command):
97    pass
98
99class CJKbold(Command):
100    pass
101
102class CJKnormal(Command):
103    pass
104
105class CJKsymbol(Command):
106    pass
107
108class CJKsymbols(Command):
109    pass
110
111class CJKboldshift(Command):
112    pass
113
114class CJKaddEncHook(Command):
115    args = 'encoding:str body'
116