summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@gnome.org>2013-02-09 23:03:47 -0500
committerShaun McCance <shaunm@gnome.org>2013-02-09 23:03:47 -0500
commitab2f5c7430c640cef0dddb7991dc9cfb77284332 (patch)
tree81fe6d4fcd0898ad7fc6b3fcb9686eec1d053891
parent2f77297d840b27a3b294fa098c4a9fb20130a954 (diff)
downloaditstool-ab2f5c7430c640cef0dddb7991dc9cfb77284332.tar.gz
Properly handle loc note inheritance
-rwxr-xr-xitstool.in11
-rwxr-xr-xtests/ITS-2.0-Testsuite/run_tests.sh5
2 files changed, 7 insertions, 9 deletions
diff --git a/itstool.in b/itstool.in
index 82633fb..dcd4177 100755
--- a/itstool.in
+++ b/itstool.in
@@ -1071,7 +1071,7 @@ class Document (object):
cnode = node
while cnode is not None:
hasnote = False
- for locnote in self.get_its_loc_notes(cnode):
+ for locnote in self.get_its_loc_notes(cnode, inherit=(not withinText)):
comment = Comment(locnote)
if withinText:
comment.add_marker('.%s/%s' % (path, cnode.name))
@@ -1198,7 +1198,7 @@ class Document (object):
return node.nsProp('id', NS_XML)
return self._its_id_values.get(node, None)
- def get_its_loc_notes(self, node):
+ def get_its_loc_notes(self, node, inherit=True):
ret = []
if node.hasNsProp('locNote', NS_ITS) or node.hasNsProp('locNoteRef', NS_ITS) or node.hasNsProp('locNoteType', NS_ITS):
notetype = node.nsProp('locNoteType', NS_ITS)
@@ -1206,15 +1206,18 @@ class Document (object):
ret.append(LocNote(locnote=node.nsProp('locNote', NS_ITS), locnotetype=notetype))
elif node.hasNsProp('locNoteRef', NS_ITS):
ret.append(LocNote(locnoteref=node.nsProp('locNoteRef', NS_ITS), locnotetype=notetype))
- if xml_is_ns_name(node, NS_ITS, 'span'):
+ elif xml_is_ns_name(node, NS_ITS, 'span'):
if node.hasNsProp('locNote', None) or node.hasNsProp('locNoteRef', None) or node.hasNsProp('locNoteType', None):
notetype = node.nsProp('locNoteType', None)
if node.hasNsProp('locNote', None):
ret.append(LocNote(locnote=node.nsProp('locNote', None), locnotetype=notetype))
elif node.hasNsProp('locNoteRef', None):
ret.append(LocNote(locnoteref=node.nsProp('locNoteRef', None), locnotetype=notetype))
- for locnote in self._its_loc_notes.get(node, []):
+ for locnote in reversed(self._its_loc_notes.get(node, [])):
ret.append(locnote)
+ if (len(ret) == 0 and inherit and
+ node.type != 'attribute' and node.parent is not None and node.parent.type == 'element'):
+ return self.get_its_loc_notes(node.parent)
return ret
def output_test_data(self, category, out, node=None):
diff --git a/tests/ITS-2.0-Testsuite/run_tests.sh b/tests/ITS-2.0-Testsuite/run_tests.sh
index 1d1224e..b617d71 100755
--- a/tests/ITS-2.0-Testsuite/run_tests.sh
+++ b/tests/ITS-2.0-Testsuite/run_tests.sh
@@ -11,11 +11,6 @@ translate/translate/translate
"
exclude="
-locnote5xml
-locnote6xml
-locnote8xml
-locnote9xml
-
externalresource4xml
externalresource5xml
idvalue4xml