Tryag File Manager
Home
-
Turbo Force
Current Path :
/
usr
/
lib
/
python2.4
/
site-packages
/
japanese
/
c
/
Upload File :
New :
File
Dir
//usr/lib/python2.4/site-packages/japanese/c/shift_jis.py
# Tamito KAJIYAMA <12 March 2000> import codecs, japanese.c._japanese_codecs class Codec(codecs.Codec): encode = japanese.c._japanese_codecs.shift_jis_encode decode = japanese.c._japanese_codecs.shift_jis_decode class StreamWriter(Codec, codecs.StreamWriter): pass class StreamReader(Codec, codecs.StreamReader): def __init__(self, stream, errors='strict'): codecs.StreamReader.__init__(self, stream, errors) self.data = '' def _read(self, func, size): if size == 0: return u'' if size is None or size < 0: data = self.data + func() self.data = '' else: data = self.data + func(max(size, 2) - len(self.data)) size = len(data) p = 0 while p < size: if data[p] < "\x80" or data[p] >= "\xa1" and data[p] <= "\xdf": p = p + 1 elif p + 2 <= size: p = p + 2 else: break data, self.data = data[:p], data[p:] return self.decode(data, self.errors)[0] def read(self, size=-1): return self._read(self.stream.read, size) def readline(self, size=-1): return self._read(self.stream.readline, size) def readlines(self, size=-1): data = self._read(self.stream.read, size) buffer = [] end = 0 while 1: pos = data.find(u'\n', end) if pos < 0: if end < len(data): buffer.append(data[end:]) break buffer.append(data[end:pos+1]) end = pos+1 return buffer def reset(self): self.data = '' ### encodings module API def getregentry(): return (Codec().encode,Codec().decode,StreamReader,StreamWriter)