summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@cepl.eu>2015-09-30 22:21:03 +0200
committerMatěj Cepl <mcepl@cepl.eu>2017-05-11 22:26:05 +0200
commit1ff048197ac56d8f0d86713dc03155d516898034 (patch)
tree79e98c2285556414a2d4d0e0892aa0716974ed6b
parentc328058b2ad871e75bf1157467e9298c8cfa00a2 (diff)
downloadgenerate_references-1ff048197ac56d8f0d86713dc03155d516898034.tar.gz
More progress on developing RE.
-rwxr-xr-xgenerate_reference.py20
-rwxr-xr-xtest_generate_reference.py73
2 files changed, 70 insertions, 23 deletions
diff --git a/generate_reference.py b/generate_reference.py
index a4006aa..f8595df 100755
--- a/generate_reference.py
+++ b/generate_reference.py
@@ -87,15 +87,15 @@ TranslDict = collections.OrderedDict([
("1J", "1John"),
("2J", "2John"),
("3J", "3John"),
- ("", "Jude"),
+ ("Jud", "Jude"),
("Zj", "Rev")])
CZ_BOOKS = tuple(TranslDict.keys())
EN_BOOKS = tuple(TranslDict.values())
-BIBLE_REF_PARSE_RE = re.compile(r'(%s)\s+([0-9]+),([0-9]+)'
+BIBLE_REF_PARSE_RE = re.compile(r'(%s)?\s*([0-9]+),([0-9—.-]+)'
% '|'.join(CZ_BOOKS))
-
+SPLIT_VERSE_RE = re.compile('[—.-]')
def parse_notes_test(instr):
logging.debug('%s\ninstr = %s' % ('-' * 30, instr))
@@ -105,10 +105,18 @@ def parse_notes_test(instr):
for match in matches:
logging.debug('match = %s', match)
- book = match[0]
+ if match[0]:
+ book = match[0]
chapter = int(match[1])
- verse = int(match[2])
- out_list.append((book, chapter, verse))
+ verse = match[2]
+ if SPLIT_VERSE_RE.search(verse):
+ verse_split = SPLIT_VERSE_RE.split(verse)
+ verse = int(verse_split[0])
+ next_verse = int(verse_split[1])
+ logging.debug('verse, next_verse = %s, %s' % (verse, next_verse))
+ out_list.append((book, chapter, verse, next_verse))
+ else:
+ out_list.append((book, chapter, int(verse)))
return tuple(out_list)
class GenerateReferencesFilter(XMLFilterBase):
diff --git a/test_generate_reference.py b/test_generate_reference.py
index 685b6c3..409e81e 100755
--- a/test_generate_reference.py
+++ b/test_generate_reference.py
@@ -1,26 +1,61 @@
#!/usr/bin/env python3
+import logging
+logging.basicConfig(format='%(levelname)s:%(funcName)s:%(message)s',
+ level=logging.DEBUG)
import unittest
TESTS = (
-('Ž 93,2', (('Ž', 93, 2),)),
-#('Př 8,22—24; Ž 93,2; 102,25—27v; Iz 40,21; Mk 13,19;J 1,1—3; He 1,10—12; 1J 1,1; [Jde o počátek vesmíru a člověka; nikoli Boha,který přebývá ve věčnosti (Iz 66,1n — tj. mimo prostor a čas.]', ()),
+ ('Ž 93,2', (('Ž', 93, 2),)),
+ ('Př 8,22—24; Ž 93,2; 102,25—27v; Iz 40,21; Mk 13,19;J 1,1—3; ' +
+ 'He 1,10—12; 1J 1,1; [Jde o počátek věčnosti (Iz 66,1n — tj. ' +
+ 'mimo čas.]',
+ (('Př', 8, 22, 24),
+ ('Ž', 93, 2),
+ ('Ž', 102, 25, 27),
+ ('Iz', 40, 21),
+ ('Mk', 13, 19),
+ ('J', 1, 1, 3),
+ ('He', 1, 10, 12),
+ ('1J', 1, 1),
+ ('Iz', 66, 1) # TODO we should parse also 1n style verse ref.
+ )
+ ),
#('v. 21.27; Iz 42,5; 45,12.18; Ž 90,2v; Sk 17,24v; Ř 1,20;He 11,3v; Zj 4,11; 10,6; [h. slsobārā’ se používá pouze o Bohua popisuje stvoření něčeho nového a dokonalého. Buď se jedná o stvořeníz ničeho jako při prvotním stvoření (He 11,3v), anebo o obnovu nebo přetvořenípro nový účel či nové uspořádání (srv. Ž 51,10; Iz 65,17)]', ()),
#('[h. výraz’ₑlōhîm jeplurál od ’ₑlôah velmičastý ve spojení se sg. slovesa; v takovém případě označuje jediného pravéhoBoha a plurál pak vyjadřuje Boží majestát a svrchovanost. Naproti tomu vespojení se slovesem v pl. (např. Sd 2,3) a také v případech zřejmýchz kontextu (Dt 4,28; 6,14) se jedná o bohy — pohanská božstva]', ()),
#('14,19; Ex 20,11; Iz 37,16; Jr 32,17; 1Pa 16,26; Neh 9,6;Ž 8,4; 115,15; Sk 4,24', ()),
-#('Jb 38,4; Př 3,19; Jr 10,12', ()),
-('Jr 4,23; Iz 45,18p',
- (('Jr', 4, 23),
- ('Iz', 45, 18))
-),
-#('Iz 9,1; 58,10', ()),
-#('Př 8,24.27n; Iz 51,10; Ez 31,15; Jon 2,6', ()),
-#('Iz 40,13; Ž 33,6; 104,30', ()),
-#('Ž 33,6; 148,5v; 2K 4,6; 2P 3,5', ()),
+ ('Jb 38,4; Př 3,19; Jr 10,12',
+ (('Jb', 38, 4),
+ ('Př', 3, 19),
+ ('Jr', 10, 12))),
+ ('Jr 4,23; Iz 45,18p',
+ (('Jr', 4, 23),
+ ('Iz', 45, 18))),
+ ('Iz 9,1; 58,10',
+ (('Iz', 9, 1),
+ ('Iz', 58, 10))),
+ ('Př 8,24.27n; Iz 51,10; Ez 31,15; Jon 2,6',
+ (('Př', 8, 24, 27),
+ ('Iz', 51, 10),
+ ('Ez', 31, 15),
+ ('Jon', 2, 6)
+ )
+ ),
+ ('Iz 40,13-15; Ž 33,6;',
+ (
+ ('Iz', 40, 13, 15),
+ ('Ž', 33, 6)
+ )),
#('[klíčový výraz kapitoly (srv. v. 6.7.14.18) a vůbec celéhoZákona (Ex 26,33; Lv 10,10; 20,24; Nu 8,14; Dt 4,41; 10,8; srv. 1Kr 8,53;Neh 9,2; Ez 42,20); zde vidíme, že světlo existuje souběžně s tmou, alevzájemně se vylučují (nemísí se); srv. J 1,5]', ()),
-#('srv. Ez 1,22; 10,1', ()),
+ ('srv. Ez 1,22; 10,1',
+ (('Ez', 1, 22), ('Ez', 10, 1))),
#('Ž 74,16; 136,7nn; Jr 31,35; [slova slunce a měsíc nejsouprav. záměrně použita, protože oba výrazy označovaly uctívaná pohanská božstva(srv. Dt 4,19); zde je naopak zdůrazněno (dále ještě třemi slovesy,popisujícími jejich funkci), že to jsou stvořené věci, nikolivbožstva]', ()),
-#('Ž 8,4; Iz 40,26; Am 5,8; [pro jejich množství jsou v Písmuvícekrát použity k vyjádření velkého počtu — např. Gn 15,5; Dt 1,10;Na 3,16]', ()),
-#('v. 1p', ()),
+ ('Ž 8,4; Iz 40,26; Am 5,8; [pro jejich množství jsou použity ' +
+ 'k vyjádření velkého počtu — např. Gn 15,5; Dt 1,10;Na 3,16]',
+ (
+ ('Ž', 8, 4), ('Iz', 40, 26), ('Am', 5, 8), ('Gn', 15, 5),
+ ('Dt', 1, 10), ('Na', 3, 16)
+ )),
+# ('v. 1p', ('', 0, 1)), # TODO what does 'p' suffix means?
#('v. 28; 2,3; 5,2; 12,2; [v h. je slsoḇ–r–ḵ vždyspojeno', ()),
#('přítomnosti;(srv. 3,22!; 11,7; Jb 1,6—12; 2,1—6; Iz 6,8; 1Kr 22,19—23; Jr 23,18;Za 3,1—7)]', ()),
#('9,6; 5,3; 1K 11,7; Ef 4,24; srv. Ko 3,10p; [tzn. aby prostvoření představoval Boha]', ()),
@@ -28,7 +63,6 @@ TESTS = (
#('n.: mužského a ženského pohlaví. 5,2;Dt 4,16; Mt 19,4', ()),
)
-import logging
import generate_reference
class TestNotesParsing(unittest.TestCase): # IGNORE:C0111
@@ -38,7 +72,8 @@ def _generate_test_name():
counter = 0
while True:
counter += 1
- yield "%03d" % counter
+ out = "%03d" % counter
+ yield out
def _create_test(test_string, want):
"""
@@ -63,7 +98,11 @@ def _create_test(test_string, want):
if __name__ == '__main__':
for test_str, parsed_out in TESTS:
- test_name = _generate_test_name()
+ logging.debug('test_str, parsed_out:\n%s, %s' %
+ (test_str, parsed_out))
+# test_name = _generate_test_name()
+ test_name = "test_parsing_%03d" % TESTS.index((test_str, parsed_out))
+ logging.debug('test_name = %s', test_name)
test_method = _create_test(test_str, parsed_out)
test_method.__name__ = str('test_%s' % test_name)
setattr(TestNotesParsing, test_method.__name__, test_method)