iso8859_8.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. """ Python Character Mapping Codec iso8859_8 generated from 'MAPPINGS/ISO8859/8859-8.TXT' with gencodec.py.
  2. """#"
  3. import codecs
  4. ### Codec APIs
  5. class Codec(codecs.Codec):
  6. def encode(self,input,errors='strict'):
  7. return codecs.charmap_encode(input,errors,encoding_table)
  8. def decode(self,input,errors='strict'):
  9. return codecs.charmap_decode(input,errors,decoding_table)
  10. class IncrementalEncoder(codecs.IncrementalEncoder):
  11. def encode(self, input, final=False):
  12. return codecs.charmap_encode(input,self.errors,encoding_table)[0]
  13. class IncrementalDecoder(codecs.IncrementalDecoder):
  14. def decode(self, input, final=False):
  15. return codecs.charmap_decode(input,self.errors,decoding_table)[0]
  16. class StreamWriter(Codec,codecs.StreamWriter):
  17. pass
  18. class StreamReader(Codec,codecs.StreamReader):
  19. pass
  20. ### encodings module API
  21. def getregentry():
  22. return codecs.CodecInfo(
  23. name='iso8859-8',
  24. encode=Codec().encode,
  25. decode=Codec().decode,
  26. incrementalencoder=IncrementalEncoder,
  27. incrementaldecoder=IncrementalDecoder,
  28. streamreader=StreamReader,
  29. streamwriter=StreamWriter,
  30. )
  31. ### Decoding Table
  32. decoding_table = (
  33. '\x00' # 0x00 -> NULL
  34. '\x01' # 0x01 -> START OF HEADING
  35. '\x02' # 0x02 -> START OF TEXT
  36. '\x03' # 0x03 -> END OF TEXT
  37. '\x04' # 0x04 -> END OF TRANSMISSION
  38. '\x05' # 0x05 -> ENQUIRY
  39. '\x06' # 0x06 -> ACKNOWLEDGE
  40. '\x07' # 0x07 -> BELL
  41. '\x08' # 0x08 -> BACKSPACE
  42. '\t' # 0x09 -> HORIZONTAL TABULATION
  43. '\n' # 0x0A -> LINE FEED
  44. '\x0b' # 0x0B -> VERTICAL TABULATION
  45. '\x0c' # 0x0C -> FORM FEED
  46. '\r' # 0x0D -> CARRIAGE RETURN
  47. '\x0e' # 0x0E -> SHIFT OUT
  48. '\x0f' # 0x0F -> SHIFT IN
  49. '\x10' # 0x10 -> DATA LINK ESCAPE
  50. '\x11' # 0x11 -> DEVICE CONTROL ONE
  51. '\x12' # 0x12 -> DEVICE CONTROL TWO
  52. '\x13' # 0x13 -> DEVICE CONTROL THREE
  53. '\x14' # 0x14 -> DEVICE CONTROL FOUR
  54. '\x15' # 0x15 -> NEGATIVE ACKNOWLEDGE
  55. '\x16' # 0x16 -> SYNCHRONOUS IDLE
  56. '\x17' # 0x17 -> END OF TRANSMISSION BLOCK
  57. '\x18' # 0x18 -> CANCEL
  58. '\x19' # 0x19 -> END OF MEDIUM
  59. '\x1a' # 0x1A -> SUBSTITUTE
  60. '\x1b' # 0x1B -> ESCAPE
  61. '\x1c' # 0x1C -> FILE SEPARATOR
  62. '\x1d' # 0x1D -> GROUP SEPARATOR
  63. '\x1e' # 0x1E -> RECORD SEPARATOR
  64. '\x1f' # 0x1F -> UNIT SEPARATOR
  65. ' ' # 0x20 -> SPACE
  66. '!' # 0x21 -> EXCLAMATION MARK
  67. '"' # 0x22 -> QUOTATION MARK
  68. '#' # 0x23 -> NUMBER SIGN
  69. '$' # 0x24 -> DOLLAR SIGN
  70. '%' # 0x25 -> PERCENT SIGN
  71. '&' # 0x26 -> AMPERSAND
  72. "'" # 0x27 -> APOSTROPHE
  73. '(' # 0x28 -> LEFT PARENTHESIS
  74. ')' # 0x29 -> RIGHT PARENTHESIS
  75. '*' # 0x2A -> ASTERISK
  76. '+' # 0x2B -> PLUS SIGN
  77. ',' # 0x2C -> COMMA
  78. '-' # 0x2D -> HYPHEN-MINUS
  79. '.' # 0x2E -> FULL STOP
  80. '/' # 0x2F -> SOLIDUS
  81. '0' # 0x30 -> DIGIT ZERO
  82. '1' # 0x31 -> DIGIT ONE
  83. '2' # 0x32 -> DIGIT TWO
  84. '3' # 0x33 -> DIGIT THREE
  85. '4' # 0x34 -> DIGIT FOUR
  86. '5' # 0x35 -> DIGIT FIVE
  87. '6' # 0x36 -> DIGIT SIX
  88. '7' # 0x37 -> DIGIT SEVEN
  89. '8' # 0x38 -> DIGIT EIGHT
  90. '9' # 0x39 -> DIGIT NINE
  91. ':' # 0x3A -> COLON
  92. ';' # 0x3B -> SEMICOLON
  93. '<' # 0x3C -> LESS-THAN SIGN
  94. '=' # 0x3D -> EQUALS SIGN
  95. '>' # 0x3E -> GREATER-THAN SIGN
  96. '?' # 0x3F -> QUESTION MARK
  97. '@' # 0x40 -> COMMERCIAL AT
  98. 'A' # 0x41 -> LATIN CAPITAL LETTER A
  99. 'B' # 0x42 -> LATIN CAPITAL LETTER B
  100. 'C' # 0x43 -> LATIN CAPITAL LETTER C
  101. 'D' # 0x44 -> LATIN CAPITAL LETTER D
  102. 'E' # 0x45 -> LATIN CAPITAL LETTER E
  103. 'F' # 0x46 -> LATIN CAPITAL LETTER F
  104. 'G' # 0x47 -> LATIN CAPITAL LETTER G
  105. 'H' # 0x48 -> LATIN CAPITAL LETTER H
  106. 'I' # 0x49 -> LATIN CAPITAL LETTER I
  107. 'J' # 0x4A -> LATIN CAPITAL LETTER J
  108. 'K' # 0x4B -> LATIN CAPITAL LETTER K
  109. 'L' # 0x4C -> LATIN CAPITAL LETTER L
  110. 'M' # 0x4D -> LATIN CAPITAL LETTER M
  111. 'N' # 0x4E -> LATIN CAPITAL LETTER N
  112. 'O' # 0x4F -> LATIN CAPITAL LETTER O
  113. 'P' # 0x50 -> LATIN CAPITAL LETTER P
  114. 'Q' # 0x51 -> LATIN CAPITAL LETTER Q
  115. 'R' # 0x52 -> LATIN CAPITAL LETTER R
  116. 'S' # 0x53 -> LATIN CAPITAL LETTER S
  117. 'T' # 0x54 -> LATIN CAPITAL LETTER T
  118. 'U' # 0x55 -> LATIN CAPITAL LETTER U
  119. 'V' # 0x56 -> LATIN CAPITAL LETTER V
  120. 'W' # 0x57 -> LATIN CAPITAL LETTER W
  121. 'X' # 0x58 -> LATIN CAPITAL LETTER X
  122. 'Y' # 0x59 -> LATIN CAPITAL LETTER Y
  123. 'Z' # 0x5A -> LATIN CAPITAL LETTER Z
  124. '[' # 0x5B -> LEFT SQUARE BRACKET
  125. '\\' # 0x5C -> REVERSE SOLIDUS
  126. ']' # 0x5D -> RIGHT SQUARE BRACKET
  127. '^' # 0x5E -> CIRCUMFLEX ACCENT
  128. '_' # 0x5F -> LOW LINE
  129. '`' # 0x60 -> GRAVE ACCENT
  130. 'a' # 0x61 -> LATIN SMALL LETTER A
  131. 'b' # 0x62 -> LATIN SMALL LETTER B
  132. 'c' # 0x63 -> LATIN SMALL LETTER C
  133. 'd' # 0x64 -> LATIN SMALL LETTER D
  134. 'e' # 0x65 -> LATIN SMALL LETTER E
  135. 'f' # 0x66 -> LATIN SMALL LETTER F
  136. 'g' # 0x67 -> LATIN SMALL LETTER G
  137. 'h' # 0x68 -> LATIN SMALL LETTER H
  138. 'i' # 0x69 -> LATIN SMALL LETTER I
  139. 'j' # 0x6A -> LATIN SMALL LETTER J
  140. 'k' # 0x6B -> LATIN SMALL LETTER K
  141. 'l' # 0x6C -> LATIN SMALL LETTER L
  142. 'm' # 0x6D -> LATIN SMALL LETTER M
  143. 'n' # 0x6E -> LATIN SMALL LETTER N
  144. 'o' # 0x6F -> LATIN SMALL LETTER O
  145. 'p' # 0x70 -> LATIN SMALL LETTER P
  146. 'q' # 0x71 -> LATIN SMALL LETTER Q
  147. 'r' # 0x72 -> LATIN SMALL LETTER R
  148. 's' # 0x73 -> LATIN SMALL LETTER S
  149. 't' # 0x74 -> LATIN SMALL LETTER T
  150. 'u' # 0x75 -> LATIN SMALL LETTER U
  151. 'v' # 0x76 -> LATIN SMALL LETTER V
  152. 'w' # 0x77 -> LATIN SMALL LETTER W
  153. 'x' # 0x78 -> LATIN SMALL LETTER X
  154. 'y' # 0x79 -> LATIN SMALL LETTER Y
  155. 'z' # 0x7A -> LATIN SMALL LETTER Z
  156. '{' # 0x7B -> LEFT CURLY BRACKET
  157. '|' # 0x7C -> VERTICAL LINE
  158. '}' # 0x7D -> RIGHT CURLY BRACKET
  159. '~' # 0x7E -> TILDE
  160. '\x7f' # 0x7F -> DELETE
  161. '\x80' # 0x80 -> <control>
  162. '\x81' # 0x81 -> <control>
  163. '\x82' # 0x82 -> <control>
  164. '\x83' # 0x83 -> <control>
  165. '\x84' # 0x84 -> <control>
  166. '\x85' # 0x85 -> <control>
  167. '\x86' # 0x86 -> <control>
  168. '\x87' # 0x87 -> <control>
  169. '\x88' # 0x88 -> <control>
  170. '\x89' # 0x89 -> <control>
  171. '\x8a' # 0x8A -> <control>
  172. '\x8b' # 0x8B -> <control>
  173. '\x8c' # 0x8C -> <control>
  174. '\x8d' # 0x8D -> <control>
  175. '\x8e' # 0x8E -> <control>
  176. '\x8f' # 0x8F -> <control>
  177. '\x90' # 0x90 -> <control>
  178. '\x91' # 0x91 -> <control>
  179. '\x92' # 0x92 -> <control>
  180. '\x93' # 0x93 -> <control>
  181. '\x94' # 0x94 -> <control>
  182. '\x95' # 0x95 -> <control>
  183. '\x96' # 0x96 -> <control>
  184. '\x97' # 0x97 -> <control>
  185. '\x98' # 0x98 -> <control>
  186. '\x99' # 0x99 -> <control>
  187. '\x9a' # 0x9A -> <control>
  188. '\x9b' # 0x9B -> <control>
  189. '\x9c' # 0x9C -> <control>
  190. '\x9d' # 0x9D -> <control>
  191. '\x9e' # 0x9E -> <control>
  192. '\x9f' # 0x9F -> <control>
  193. '\xa0' # 0xA0 -> NO-BREAK SPACE
  194. '\ufffe'
  195. '\xa2' # 0xA2 -> CENT SIGN
  196. '\xa3' # 0xA3 -> POUND SIGN
  197. '\xa4' # 0xA4 -> CURRENCY SIGN
  198. '\xa5' # 0xA5 -> YEN SIGN
  199. '\xa6' # 0xA6 -> BROKEN BAR
  200. '\xa7' # 0xA7 -> SECTION SIGN
  201. '\xa8' # 0xA8 -> DIAERESIS
  202. '\xa9' # 0xA9 -> COPYRIGHT SIGN
  203. '\xd7' # 0xAA -> MULTIPLICATION SIGN
  204. '\xab' # 0xAB -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
  205. '\xac' # 0xAC -> NOT SIGN
  206. '\xad' # 0xAD -> SOFT HYPHEN
  207. '\xae' # 0xAE -> REGISTERED SIGN
  208. '\xaf' # 0xAF -> MACRON
  209. '\xb0' # 0xB0 -> DEGREE SIGN
  210. '\xb1' # 0xB1 -> PLUS-MINUS SIGN
  211. '\xb2' # 0xB2 -> SUPERSCRIPT TWO
  212. '\xb3' # 0xB3 -> SUPERSCRIPT THREE
  213. '\xb4' # 0xB4 -> ACUTE ACCENT
  214. '\xb5' # 0xB5 -> MICRO SIGN
  215. '\xb6' # 0xB6 -> PILCROW SIGN
  216. '\xb7' # 0xB7 -> MIDDLE DOT
  217. '\xb8' # 0xB8 -> CEDILLA
  218. '\xb9' # 0xB9 -> SUPERSCRIPT ONE
  219. '\xf7' # 0xBA -> DIVISION SIGN
  220. '\xbb' # 0xBB -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
  221. '\xbc' # 0xBC -> VULGAR FRACTION ONE QUARTER
  222. '\xbd' # 0xBD -> VULGAR FRACTION ONE HALF
  223. '\xbe' # 0xBE -> VULGAR FRACTION THREE QUARTERS
  224. '\ufffe'
  225. '\ufffe'
  226. '\ufffe'
  227. '\ufffe'
  228. '\ufffe'
  229. '\ufffe'
  230. '\ufffe'
  231. '\ufffe'
  232. '\ufffe'
  233. '\ufffe'
  234. '\ufffe'
  235. '\ufffe'
  236. '\ufffe'
  237. '\ufffe'
  238. '\ufffe'
  239. '\ufffe'
  240. '\ufffe'
  241. '\ufffe'
  242. '\ufffe'
  243. '\ufffe'
  244. '\ufffe'
  245. '\ufffe'
  246. '\ufffe'
  247. '\ufffe'
  248. '\ufffe'
  249. '\ufffe'
  250. '\ufffe'
  251. '\ufffe'
  252. '\ufffe'
  253. '\ufffe'
  254. '\ufffe'
  255. '\ufffe'
  256. '\u2017' # 0xDF -> DOUBLE LOW LINE
  257. '\u05d0' # 0xE0 -> HEBREW LETTER ALEF
  258. '\u05d1' # 0xE1 -> HEBREW LETTER BET
  259. '\u05d2' # 0xE2 -> HEBREW LETTER GIMEL
  260. '\u05d3' # 0xE3 -> HEBREW LETTER DALET
  261. '\u05d4' # 0xE4 -> HEBREW LETTER HE
  262. '\u05d5' # 0xE5 -> HEBREW LETTER VAV
  263. '\u05d6' # 0xE6 -> HEBREW LETTER ZAYIN
  264. '\u05d7' # 0xE7 -> HEBREW LETTER HET
  265. '\u05d8' # 0xE8 -> HEBREW LETTER TET
  266. '\u05d9' # 0xE9 -> HEBREW LETTER YOD
  267. '\u05da' # 0xEA -> HEBREW LETTER FINAL KAF
  268. '\u05db' # 0xEB -> HEBREW LETTER KAF
  269. '\u05dc' # 0xEC -> HEBREW LETTER LAMED
  270. '\u05dd' # 0xED -> HEBREW LETTER FINAL MEM
  271. '\u05de' # 0xEE -> HEBREW LETTER MEM
  272. '\u05df' # 0xEF -> HEBREW LETTER FINAL NUN
  273. '\u05e0' # 0xF0 -> HEBREW LETTER NUN
  274. '\u05e1' # 0xF1 -> HEBREW LETTER SAMEKH
  275. '\u05e2' # 0xF2 -> HEBREW LETTER AYIN
  276. '\u05e3' # 0xF3 -> HEBREW LETTER FINAL PE
  277. '\u05e4' # 0xF4 -> HEBREW LETTER PE
  278. '\u05e5' # 0xF5 -> HEBREW LETTER FINAL TSADI
  279. '\u05e6' # 0xF6 -> HEBREW LETTER TSADI
  280. '\u05e7' # 0xF7 -> HEBREW LETTER QOF
  281. '\u05e8' # 0xF8 -> HEBREW LETTER RESH
  282. '\u05e9' # 0xF9 -> HEBREW LETTER SHIN
  283. '\u05ea' # 0xFA -> HEBREW LETTER TAV
  284. '\ufffe'
  285. '\ufffe'
  286. '\u200e' # 0xFD -> LEFT-TO-RIGHT MARK
  287. '\u200f' # 0xFE -> RIGHT-TO-LEFT MARK
  288. '\ufffe'
  289. )
  290. ### Encoding table
  291. encoding_table=codecs.charmap_build(decoding_table)