diff options
| -rw-r--r-- | sphinx/transforms.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sphinx/transforms.py b/sphinx/transforms.py index 845b17ac..5b96300d 100644 --- a/sphinx/transforms.py +++ b/sphinx/transforms.py @@ -137,6 +137,19 @@ class CustomLocaleReporter(object): def __init__(self, source, line): self.source, self.line = source, line + try: + from docutils import __version__ as du_version + v = tuple([int(x) for x in du_version.split('.')[:2]]) + except ImportError: + v = (99, 99) + self.du_version = v + + def set_reporter(self, document): + if self.du_version < (0, 9): + document.reporter.locator = self.get_source_and_line + else: + document.reporter.get_source_and_line = self.get_source_and_line + def get_source_and_line(self, lineno=None): return self.source, self.line @@ -181,8 +194,7 @@ class Locale(Transform): # dummy literal node will discard by 'patch = patch[0]' patch = new_document(source, settings) - patch.reporter.get_source_and_line = CustomLocaleReporter( - node.source, node.line).get_source_and_line + CustomLocaleReporter(node.source, node.line).set_reporter(patch) parser.parse(msgstr, patch) patch = patch[0] # XXX doctest and other block markup |
