Skip to content

Commit dc663f5

Browse files
author
Hämäläinen, Mika K
committed
new version, fixes in total object plural
1 parent 6e452be commit dc663f5

File tree

4 files changed

+60
-17
lines changed

4 files changed

+60
-17
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
# Versions should comply with PEP440. For a discussion on single-sourcing
2424
# the version across setup.py and the project code, see
2525
# https://packaging.python.org/en/latest/single_source_version.html
26-
version='2.0.0',
26+
version='2.0.1',
2727
zip_safe=False,
2828
description='The NLG tool for Finnish',
2929
long_description=long_description,

syntaxmaker/phrase.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@
44
import copy
55
import re, sys
66

7+
unicode = str
8+
79
class Phrase:
810
def __init__(self, head, structure, morphology={}):
9-
if (sys.version_info > (3, 0)):
10-
# Python 3
11-
self.new_python = True
12-
else:
13-
# Python 2
14-
self.new_python = False
11+
self.new_python = True
1512
self.parent = None
1613
self.head = Head(head, structure["head"])
1714
self.components = copy.deepcopy(structure["components"])
@@ -33,20 +30,30 @@ def __init__(self, head, structure, morphology={}):
3330
def resolve_agreement(self):
3431
forms = {}
3532
for key in self.agreement:
36-
if key == "parent":
33+
if key == "parent" and self.parent is not None:
3734
morphology = self.parent.morphology
38-
elif key.startswith("parent->"):
35+
elif key.startswith("parent->")and self.parent is not None:
3936
key_p = key[8:]
4037
morphology = self.parent.components[key_p].morphology
41-
else:
38+
elif key in self.components:
4239
morphology = self.components[key].morphology
40+
else:
41+
r = {"CASE": "Nom", "NUM": "SG", "PERS": "3"}
42+
r.update(self.morphology)
43+
return r
4344
for agreement_type in self.agreement[key]:
4445
forms[agreement_type] = morphology[agreement_type]
4546
return forms
4647

4748
def to_string(self, received_governance = {}):
4849
self.morphology.update(received_governance)
4950
string_representation = ""
51+
if "dir_object" in self.components:
52+
if type(self.components["dir_object"]) is not str:
53+
if "NUM" in self.components["dir_object"].morphology and self.components["dir_object"].morphology["NUM"] == "PL":
54+
if "dir_object" in self.governance:
55+
if self.governance["dir_object"]["CASE"] == "Gen":
56+
self.governance["dir_object"]["CASE"] = "Par"
5057
for item in self.order:
5158
if item == "head":
5259
head_word = self.head.get_form(self.morphology, self.resolve_agreement())

testi.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,17 @@
2525
2626
print vp
2727
"""
28-
vp = create_verb_pharse("uneksia")
29-
subject = create_phrase("NP", "rantaleijona", {u"PERS": "3", u"NUM": "PL"})
30-
dobject = create_phrase("NP", "aalto", {u"PERS": "3", u"NUM": "PL"})
31-
dobject.components["attribute"] = create_phrase("AP", "korkea")
28+
29+
vp = create_verb_pharse("antaa")
30+
subject = create_phrase("NP", "hevonen", {"NUM": "PL"})
31+
32+
dobject = create_phrase("NP", "lahja", {"NUM": "PL"})
33+
dobject.components["attribute"] = create_phrase("AP", "mahtava")
3234
dobject.components["attribute"].components["attribute"] = create_phrase("AdvP", "erittäin")
35+
36+
indobject = create_phrase("NP", "lehmä")
3337
vp.components["subject"] = subject
3438
vp.components["dir_object"] = dobject
35-
turn_vp_into_prefect(vp)
36-
turn_vp_into_passive(vp)
37-
set_vp_mood_and_tense(vp, tense="PAST")
39+
vp.components["indir_object"] = indobject
40+
3841
print(vp)

travis_test.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,39 @@ def test_pot(self):
6262
set_vp_mood_and_tense(vp, mood="POTN")
6363
self.assertEqual(str(vp) , "rantaleijonat uneksinevat erittäin korkeista aalloista")
6464

65+
def test_total_plural(self):
66+
vp = create_verb_pharse("antaa")
67+
subject = create_phrase("NP", "hevonen", {"NUM": "PL"})
68+
69+
dobject = create_phrase("NP", "lahja", {"NUM": "PL"})
70+
dobject.components["attribute"] = create_phrase("AP", "hyvä")
71+
dobject.components["attribute"].components["attribute"] = create_phrase("AdvP", "erittäin")
72+
73+
indobject = create_phrase("NP", "lehmä")
74+
vp.components["subject"] = subject
75+
vp.components["dir_object"] = dobject
76+
vp.components["indir_object"] = indobject
77+
self.assertEqual(str(vp) , "hevoset antavat erittäin hyviä lahjoja lehmälle")
78+
79+
def test_total_plural_neg(self):
80+
vp = create_verb_pharse("antaa")
81+
subject = create_phrase("NP", "hevonen", {"NUM": "PL"})
82+
83+
dobject = create_phrase("NP", "lahja", {"NUM": "PL"})
84+
dobject.components["attribute"] = create_phrase("AP", "hyvä")
85+
dobject.components["attribute"].components["attribute"] = create_phrase("AdvP", "erittäin")
86+
87+
indobject = create_phrase("NP", "lehmä")
88+
vp.components["subject"] = subject
89+
vp.components["dir_object"] = dobject
90+
vp.components["indir_object"] = indobject
91+
negate_verb_pharse(vp)
92+
self.assertEqual(str(vp) , "hevoset eivät anna erittäin hyviä lahjoja lehmälle")
93+
94+
def test_adj(self):
95+
ap = create_adjective_phrase("kaunis", degree="Comp")
96+
self.assertEqual(str(ap), "kauniimpi")
97+
6598
def test_cond(self):
6699
vp = copy.deepcopy(self.vp)
67100
set_vp_mood_and_tense(vp, mood="COND")

0 commit comments

Comments
 (0)