]> Nutra Git (v1) - gamesguru/getmyancestors.git/commitdiff
Add CONT tag to fact descriptions
authorBenoît Fontaine <benoitfontaine.ba@gmail.com>
Tue, 19 Dec 2017 14:39:33 +0000 (15:39 +0100)
committerBenoît Fontaine <benoitfontaine.ba@gmail.com>
Tue, 19 Dec 2017 14:39:33 +0000 (15:39 +0100)
fsearch_translation.py
getmyancestors.py
mergemyancestors.py

index d899bed77a1aed89e596cecc09401ce84952b5b8..1465d2fd51accea737d62f92eb38819c8fb74412 100644 (file)
@@ -1,98 +1,98 @@
 translations = {
-    "Life Sketch": {
-        "de": "Kurzinfo zum Lebenslauf",
-        "eo": "[Ļîƒé Šķéţçĥ---- П國カ내]",
-        "es": "Resumen de la vida de la persona",
-        "fr": "Biographie succincte",
-        "it": "Profilo",
-        "ja": "生涯の概要",
-        "ko": "인생 개요",
-        "pt": "Resumo da Vida",
-        "ru": "Краткое жизнеописание",
-        "zh": "生活簡述"
+    'Life Sketch': {
+        'de': 'Kurzinfo zum Lebenslauf',
+        'eo': '[Ļîƒé Šķéţçĥ---- П國カ내]',
+        'es': 'Resumen de la vida de la persona',
+        'fr': 'Biographie succincte',
+        'it': 'Profilo',
+        'ja': '生涯の概要',
+        'ko': '인생 개요',
+        'pt': 'Resumo da Vida',
+        'ru': 'Краткое жизнеописание',
+        'zh': '生活簡述'
     },
-    "Contributors": {
-        "de": "Mitwirkende",
-        "eo": "Contributors",
-        "es": "Colaboradores",
-        "fr": "Contributeurs",
-        "it": "Contributori",
-        "ja": "貢献者",
-        "ko": "기여자",
-        "pt": "Colaboradores",
-        "ru": "Авторы",
-        "zh": "贡献者"
+    'Contributors': {
+        'de': 'Mitwirkende',
+        'eo': 'Contributors',
+        'es': 'Colaboradores',
+        'fr': 'Contributeurs',
+        'it': 'Contributori',
+        'ja': '貢献者',
+        'ko': '기여자',
+        'pt': 'Colaboradores',
+        'ru': 'Авторы',
+        'zh': '贡献者'
     },
-    "Stillborn": {
-        "de": "Tot geboren",
-        "eo": "[Šţîļļƀöŕñ----------- П國カ내]",
-        "es": "Nacido muerto o mortinato",
-        "fr": "Mort-né(e)",
-        "it": "Nato morto",
-        "ja": "死産",
-        "ko": "사산아",
-        "pt": "Natimorto",
-        "ru": "Мертворожденный",
-        "zh": "死胎"
+    'Stillborn': {
+        'de': 'Tot geboren',
+        'eo': '[Šţîļļƀöŕñ----------- П國カ내]',
+        'es': 'Nacido muerto o mortinato',
+        'fr': 'Mort-né(e)',
+        'it': 'Nato morto',
+        'ja': '死産',
+        'ko': '사산아',
+        'pt': 'Natimorto',
+        'ru': 'Мертворожденный',
+        'zh': '死胎'
     },
-    "Affiliation": {
-        "de": "Zugehörigkeit",
-        "eo": "[Ńƒîļîåţîöñ---- П國カ내]",
-        "es": "Afiliación",
-        "fr": "Affiliation",
-        "it": "Affiliazione",
-        "ja": "所属",
-        "ko": "소속",
-        "pt": "Afiliação",
-        "ru": "Принадлежность",
-        "zh": "所屬團體"
+    'Affiliation': {
+        'de': 'Zugehörigkeit',
+        'eo': '[Ńƒîļîåţîöñ---- П國カ내]',
+        'es': 'Afiliación',
+        'fr': 'Affiliation',
+        'it': 'Affiliazione',
+        'ja': '所属',
+        'ko': '소속',
+        'pt': 'Afiliação',
+        'ru': 'Принадлежность',
+        'zh': '所屬團體'
     },
-    "Clan Name": {
-        "de": "Bezeichnung des Clans",
-        "eo": "[Çļåñ Ñåɱé----------- П國カ내]",
-        "es": "Nombre del clan",
-        "fr": "Nom de clan",
-        "it": "Nome clan",
-        "ja": "氏族名",
-        "ko": "씨족 이름",
-        "pt": "Nome do Clã",
-        "ru": "Название клана",
-        "zh": "氏族名字"
+    'Clan Name': {
+        'de': 'Bezeichnung des Clans',
+        'eo': '[Çļåñ Ñåɱé----------- П國カ내]',
+        'es': 'Nombre del clan',
+        'fr': 'Nom de clan',
+        'it': 'Nome clan',
+        'ja': '氏族名',
+        'ko': '씨족 이름',
+        'pt': 'Nome do Clã',
+        'ru': 'Название клана',
+        'zh': '氏族名字'
     },
-    "National Identification": {
-        "de": "Ausweisnummer",
-        "eo": "[Ñåţîöñåļ Îðéñţîƒîçåţîöñ----------- П國カ내]",
-        "es": "Identificación nacional",
-        "fr": "Numéro national d’identification",
-        "it": "Documento di identità",
-        "ja": "国民登録番号",
-        "ko": "주민등록번호",
-        "pt": "Carteira de Identidade Nacional",
-        "ru": "Удостоверение личности",
-        "zh": "國民身分證"
+    'National Identification': {
+        'de': 'Ausweisnummer',
+        'eo': '[Ñåţîöñåļ Îðéñţîƒîçåţîöñ----------- П國カ내]',
+        'es': 'Identificación nacional',
+        'fr': 'Numéro national d’identification',
+        'it': 'Documento di identità',
+        'ja': '国民登録番号',
+        'ko': '주민등록번호',
+        'pt': 'Carteira de Identidade Nacional',
+        'ru': 'Удостоверение личности',
+        'zh': '國民身分證'
     },
-    "Race": {
-        "de": "Ethnische Zugehörigkeit",
-        "eo": "[Ŕåçé- П國カ내]",
-        "es": "Raza",
-        "fr": "Race",
-        "it": "Razza",
-        "ja": "人種",
-        "ko": "인종",
-        "pt": "Raça",
-        "ru": "Раса",
-        "zh": "種族"
+    'Race': {
+        'de': 'Ethnische Zugehörigkeit',
+        'eo': '[Ŕåçé- П國カ내]',
+        'es': 'Raza',
+        'fr': 'Race',
+        'it': 'Razza',
+        'ja': '人種',
+        'ko': '인종',
+        'pt': 'Raça',
+        'ru': 'Раса',
+        'zh': '種族'
     },
-    "Tribe Name": {
-        "de": "Bezeichnung des Stammes",
-        "eo": "[Ţŕîƀé Ñåɱé------------- П國カ내]",
-        "es": "Nombre de la tribu",
-        "fr": "Nom de tribu",
-        "it": "Nome tribù",
-        "ja": "部族名",
-        "ko": "부족명",
-        "pt": "Nome da Tribo",
-        "ru": "Название племени",
-        "zh": "部落名字"
+    'Tribe Name': {
+        'de': 'Bezeichnung des Stammes',
+        'eo': '[Ţŕîƀé Ñåɱé------------- П國カ내]',
+        'es': 'Nombre de la tribu',
+        'fr': 'Nom de tribu',
+        'it': 'Nome tribù',
+        'ja': '部族名',
+        'ko': '부족명',
+        'pt': 'Nome da Tribo',
+        'ru': 'Название племени',
+        'zh': '部落名字'
     },
 }
index 062fb1be630e4c7899484218a39309a6a4025c18..bf155ec07571fd013766e04f414bc70c115a8191 100755 (executable)
@@ -27,6 +27,7 @@ import argparse
 import getpass
 import time
 import asyncio
+import re
 from fsearch_translation import translations
 
 try:
@@ -69,6 +70,10 @@ FACT_EVEN = {
 }
 
 
+def cont(level, string):
+    return re.sub(r'[\r\n]+', '\n' + str(level) + ' CONT ', string)
+
+
 # FamilySearch session class
 class Session:
     def __init__(self, username, password, verbose=False, logfile=sys.stderr, timeout=60):
@@ -279,7 +284,7 @@ class Note:
         self.text = text.strip()
 
     def print(self, file=sys.stdout):
-        file.write('0 @N' + str(self.num) + '@ NOTE ' + self.text.replace('\n', '\n1 CONT ') + '\n')
+        file.write('0 @N' + str(self.num) + '@ NOTE ' + cont(1, self.text) + '\n')
 
     def link(self, file=sys.stdout, level=1):
         file.write(str(level) + ' NOTE @N' + str(self.num) + '@\n')
@@ -317,11 +322,11 @@ class Source:
     def print(self, file=sys.stdout):
         file.write('0 @S' + str(self.num) + '@ SOUR \n')
         if self.title:
-            file.write('1 TITL ' + self.title.replace('\n', '\n2 CONT ') + '\n')
+            file.write('1 TITL ' + cont(2, self.title) + '\n')
         if self.citation:
-            file.write('1 AUTH ' + self.citation.replace('\n', '\n2 CONT ') + '\n')
+            file.write('1 AUTH ' + cont(2, self.citation) + '\n')
         if self.url:
-            file.write('1 PUBL ' + self.url.replace('\n', '\n2 CONT ') + '\n')
+            file.write('1 PUBL ' + cont(2, self.url) + '\n')
         for n in self.notes:
             n.link(file, 1)
         file.write('1 REFN ' + self.fid + '\n')
@@ -362,7 +367,7 @@ class Fact:
         elif self.type:
             file.write('1 EVEN\n2 TYPE ' + self.type)
             if self.value:
-                file.write('\n2 NOTE Description: ' + self.value)
+                file.write('\n2 NOTE Description: ' + cont(3, self.value))
         else:
             return
         file.write('\n')
@@ -388,7 +393,7 @@ class Memorie:
     def print(self, file=sys.stdout):
         file.write('1 OBJE\n2 FORM URL\n')
         if self.description:
-            file.write('2 TITL ' + self.description.replace('\n', '\n2 CONT ') + '\n')
+            file.write('2 TITL ' + cont(2, self.description) + '\n')
         if self.url:
             file.write('2 FILE ' + self.url + '\n')
 
@@ -666,7 +671,7 @@ class Indi:
         for o in self.sources:
             o[0].link(file, 1)
             if len(o) > 1:
-                file.write('2 PAGE ' + o[1].replace('\n', '\n2 CONT ') + '\n')
+                file.write('2 PAGE ' + cont(2, o[1]) + '\n')
 
 
 # GEDCOM family class
@@ -762,7 +767,7 @@ class Fam:
         for o in self.sources:
             o[0].link(file, 1)
             if len(o) > 1:
-                file.write('2 PAGE ' + o[1].replace('\n', '\n2 CONT ') + '\n')
+                file.write('2 PAGE ' + cont(2, o[1]) + '\n')
 
 
 # family tree class
index dff90c44b6bed993a0405e738698894b318fb36a..8b658bd49fc9d4ea8016dc72898446a7d6cc7031 100755 (executable)
@@ -225,11 +225,6 @@ class Gedcom:
 
     def __get_fact(self):
         fact = Fact()
-        # if self.tag == 'EVEN':
-        #     self.__get_line()
-        #     fact.type = self.data
-        #     self.__get_line()
-        #     fact.value = self.data[12:]
         if self.tag != 'EVEN':
             fact.type = FACT_TYPES[self.tag]
             fact.value = self.data
@@ -248,6 +243,8 @@ class Gedcom:
                 if num not in self.note:
                     self.note[num] = Note(tree=self.tree, num=num)
                 fact.note = self.note[num]
+            elif self.tag == 'CONT':
+                fact.value += '\n' + self.data
         self.flag = True
         return fact