updated support for readonly files

svn: r948
This commit is contained in:
Don Allingham
2002-05-01 22:37:18 +00:00
parent 18605f4d87
commit 26879174b9
9 changed files with 305 additions and 286 deletions

View File

@@ -1,4 +1,3 @@
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000 Donald N. Allingham
@@ -23,8 +22,9 @@ import cStringIO
ANSEL_ERROR = "ANSEL Error"
_s1 = {
0xC3 : { 0xB8 : 0xF8 , 0x98 : 0xD8},
0xEA : { ord('A') : 0xC5, ord('a') : 0xE5 },
0xE8 : { ord('A') : 0xC4, ord('E') : 0xCB, ord('I') : 0xCF, ord('O') : 0xD6,
0xE8 : { ord('A') : 0xC4, ord('E') : 0xCB, ord('I') : 0xCF, ord('O') : 0xD6,
ord('U') : 0xDC, ord('a') : 0xE4, ord('e') : 0xEB, ord('i') : 0xEF,
ord('o') : 0xF6, ord('u') : 0xFC, ord('y') : 0xFF },
0xE2 : { ord('A') : 0xC1, ord('E') : 0xC9, ord('I') : 0xCD, ord('O') : 0xD3,
@@ -59,7 +59,9 @@ _t1 = {
0xF2 : (chr(0xE1), 'o'), 0xF3 : (chr(0xE2), 'o'), 0xF4 : (chr(0xE3), 'o'),
0xF5 : (chr(0xE4), 'o'), 0xF6 : (chr(0xE8), 'o'), 0xF9 : (chr(0xE1), 'u'),
0xFA : (chr(0xE2), 'u'), 0xFB : (chr(0xE3), 'u'), 0xFC : (chr(0xE8), 'u'),
0xFD : (chr(0xE2), 'y'), 0xFF : (chr(0xE8), 'y')
0xFD : (chr(0xE2), 'y'), 0xFF : (chr(0xE8), 'y'),
0xF8 : (chr(0xC3), chr(0xB8)),
0xD8 : (chr(0xC3), chr(0x98)),
}
_s0 = {
@@ -67,16 +69,18 @@ _s0 = {
0xB3 : 0xF8, 0xA5 : 0xC6, 0xB5 : 0xE6, 0xBA : 0xF0 }
_t0 = {
0xDF : chr(0xCF), 0xDE : chr(0xA4), 0xFE : chr(0xB4), 0xD8 : chr(0xA2),
0xF8 : chr(0xB3), 0xC6 : chr(0xA5), 0xE6 : chr(0xB5), 0xBA : chr(0xF0),
0xDF : chr(0xCF), 0xDE : chr(0xA4), 0xFE : chr(0xB4),
0xC6 : chr(0xA5), 0xE6 : chr(0xB5), 0xBA : chr(0xF0),
0xB0 : chr(0xC0) }
#-------------------------------------------------------------------------
#
#
# Tasks
#
#-------------------------------------------------------------------------
def ansel_to_latin(s):
"""Converts an ANSEL encoded string to ISO-8859-1"""
buff = cStringIO.StringIO()
while s:
c0 = ord(s[0])
@@ -85,7 +89,7 @@ def ansel_to_latin(s):
s = s[1:]
elif c0 > 127:
try:
if c0 >= 0xE0:
if c0 >= 0xC0:
c1 = ord(s[1])
head = chr(_s1[c0][c1])
s = s[2:]
@@ -103,12 +107,8 @@ def ansel_to_latin(s):
buff.close()
return ans
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def latin_to_ansel(s):
"""converts a iso-8859-1 string to ansel encoding"""
buff = cStringIO.StringIO()
orig = s
while s: