diff options
author | Shaun McCance <shaunm@gnome.org> | 2013-02-09 23:03:47 -0500 |
---|---|---|
committer | Shaun McCance <shaunm@gnome.org> | 2013-02-09 23:03:47 -0500 |
commit | ab2f5c7430c640cef0dddb7991dc9cfb77284332 (patch) | |
tree | 81fe6d4fcd0898ad7fc6b3fcb9686eec1d053891 | |
parent | 2f77297d840b27a3b294fa098c4a9fb20130a954 (diff) | |
download | itstool-ab2f5c7430c640cef0dddb7991dc9cfb77284332.tar.gz |
Properly handle loc note inheritance
-rwxr-xr-x | itstool.in | 11 | ||||
-rwxr-xr-x | tests/ITS-2.0-Testsuite/run_tests.sh | 5 |
2 files changed, 7 insertions, 9 deletions
@@ -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 |