diff --git a/kanji/08332.svg b/kanji/08332.svg
index 2fa9e16d5..d5cb5aaac 100644
--- a/kanji/08332.svg
+++ b/kanji/08332.svg
@@ -54,7 +54,7 @@ kvg:type CDATA #IMPLIED >
-
+
diff --git a/kanjivg.py b/kanjivg.py
index b131a0d4c..f87fb6496 100644
--- a/kanjivg.py
+++ b/kanjivg.py
@@ -256,6 +256,7 @@ class KanjisHandler(BasicHandler):
self.kanjis = {}
self.group = None
self.groups = []
+ # This stores the components for checking
self.compCpt = {}
self.metComponents = set()
@@ -271,7 +272,7 @@ class KanjisHandler(BasicHandler):
raise Exception("Each kanji should have id formatted as kvg:kanji_XXXXX.")
idVariant = idVariantStr.split('-')
self.kanji = Kanji(*idVariant)
-
+ self.compCpt = {}
def handle_end_kanji(self):
if self.group is not None:
@@ -301,7 +302,6 @@ class KanjisHandler(BasicHandler):
if "kvg:radical" in attrs: group.radical = unicode(attrs["kvg:radical"])
if "kvg:phon" in attrs: group.phon = unicode(attrs["kvg:phon"])
-# print("ID is %s" % (attrs["id"]))
group.ID = str(attrs["id"])
self.group = group
@@ -309,18 +309,21 @@ class KanjisHandler(BasicHandler):
if group.original: self.metComponents.add(group.original)
if group.number:
- if not group.part: print("%s: Number specified, but part missing" % (self.kanji.kId()))
+ if not group.part:
+ print("%s: group %s has number %d, but no part" % (self.kanji.kId(), group.ID, group.number))
+ ged = group.element + "n" + str(group.number)
# The group must exist already
if group.part > 1:
- if (group.element + str(group.number)) not in self.compCpt:
- print("%s: Missing numbered group" % (self.kanji.kId()))
- elif self.compCpt[group.element + str(group.number)] != group.part - 1:
+ if (ged) not in self.compCpt:
+ print("%s: Numbered group %s with no first part" % (self.kanji.kId(), group.ID))
+ elif self.compCpt[ged] != group.part - 1:
print("%s: Incorrectly numbered group" % (self.kanji.kId()))
# The group must not exist
else:
- if (group.element + str(group.number)) in self.compCpt:
- print("%s: Duplicate numbered group %s for %s - %d" % (self.kanji.kId(), group.ID, group.element, group.number))
- self.compCpt[group.element + str(group.number)] = group.part
+ if (ged) in self.compCpt:
+ if self.compCpt[ged] == group.part:
+ print("%s: Duplicate group %s %s for %s part %d - %d" % (self.kanji.kId(), group.ID, ged,group.element, group.part, group.number))
+ self.compCpt[ged] = group.part
# No number, just a part - groups restart with part 1, otherwise must
# increase correctly
elif group.part:
@@ -346,6 +349,8 @@ class KanjisHandler(BasicHandler):
if "d" in attrs: stroke.svg = unicode(attrs["d"])
self.group.childs.append(stroke)
+
+
class SVGHandler(BasicHandler):
"""SVG handler for parsing final kanji files. It can handle single-kanji files or aggregation files. After parsing, the kanji are accessible through the kanjis member, indexed by their svg file name."""
def __init__(self):
@@ -396,7 +401,7 @@ class SVGHandler(BasicHandler):
if not group.part: print("%s: Number specified, but part missing" % (self.currentKanji.kId()))
# The group must exist already
if group.part > 1:
- if not self.compCpt.has_key(group.element + str(group.number)):
+ if not self.compCpt.has_key(group.element + "n" + str(group.number)):
print("%s: Missing numbered group" % (self.currentKanji.kId()))
elif self.compCpt[group.element + str(group.number)] != group.part - 1:
print("%s: Incorrectly numbered group" % (self.currentKanji.kId()))