summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2017-06-18 23:38:18 +0000
committermilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2017-06-18 23:38:18 +0000
commitc2a052daeabfc2f0eb3c90b9e7e55a8a01c64e65 (patch)
treec92c712774a5d131af60b627e47ffcd4f631dde3
parentd2fe4ebbdcc732ebfcfc931dde9eff474660d66b (diff)
downloaddocutils-c2a052daeabfc2f0eb3c90b9e7e55a8a01c64e65.tar.gz
Fix [ 320 ] Russian docinfo fields not recognized.
git-svn-id: https://svn.code.sf.net/p/docutils/code/trunk/docutils@8117 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-rw-r--r--HISTORY.txt4
-rw-r--r--docutils/transforms/frontmatter.py8
-rwxr-xr-xtest/test_transforms/test_docinfo.py97
3 files changed, 105 insertions, 4 deletions
diff --git a/HISTORY.txt b/HISTORY.txt
index 944fd3eea..d9cbf5ec2 100644
--- a/HISTORY.txt
+++ b/HISTORY.txt
@@ -49,6 +49,10 @@ Prerelease 0.14rc2
- Rework patch [ 120 ] (revert change to ``Table.get_column_widths()``
that led to problems in an application with a custom table directive).
+* docutils/transforms/frontmatter.py
+
+ - Fix [ 320 ] Russian docinfo fields not recognized.
+
* docutils/transforms/references.py
- Don't add a second ID to problematic references.
diff --git a/docutils/transforms/frontmatter.py b/docutils/transforms/frontmatter.py
index eb31c2fd5..1b5f552dd 100644
--- a/docutils/transforms/frontmatter.py
+++ b/docutils/transforms/frontmatter.py
@@ -403,7 +403,7 @@ class DocInfo(Transform):
for field in field_list:
try:
name = field[0][0].astext()
- normedname = nodes.make_id(name)
+ normedname = nodes.fully_normalize_name(name)
if not (len(field) == 2 and normedname in bibliofields
and self.check_empty_biblio_field(field, name)):
raise TransformError
@@ -433,8 +433,10 @@ class DocInfo(Transform):
and isinstance(field[-1][0], nodes.paragraph):
utils.clean_rcs_keywords(
field[-1][0], self.rcs_keyword_substitutions)
- if normedname and normedname not in bibliofields:
- field['classes'].append(normedname)
+ if normedname not in bibliofields:
+ classvalue = nodes.make_id(normedname)
+ if classvalue:
+ field['classes'].append(classvalue)
docinfo.append(field)
nodelist = []
if len(docinfo) != 0:
diff --git a/test/test_transforms/test_docinfo.py b/test/test_transforms/test_docinfo.py
index c2cd253d7..bab166d56 100755
--- a/test/test_transforms/test_docinfo.py
+++ b/test/test_transforms/test_docinfo.py
@@ -1,4 +1,5 @@
#! /usr/bin/env python
+# -*- coding: utf-8 -*-
# $Id$
# Author: David Goodger <goodger@python.org>
@@ -15,11 +16,19 @@ from docutils.parsers.rst import Parser
def suite():
parser = Parser()
- s = DocutilsTestSupport.TransformTestSuite(parser)
+ settings = {'language_code': 'en'}
+ s = DocutilsTestSupport.TransformTestSuite(
+ parser, suite_settings=settings)
s.generateTests(totest)
+ settings['language_code'] = 'de'
+ s.generateTests(totest_de)
+ settings['language_code'] = 'ru'
+ s.generateTests(totest_ru)
return s
totest = {}
+totest_de = {}
+totest_ru = {}
totest['bibliographic_field_lists'] = ((DocInfo,), [
["""\
@@ -326,6 +335,92 @@ totest['bibliographic_field_lists'] = ((DocInfo,), [
"""],
])
+totest_de['bibliographic_field_lists'] = ((DocInfo,), [
+[u"""\
+.. Bibliographic element extraction for a German document.
+
+:Zusammenfassung: Abstract 1.
+:Autor: Me
+:Adresse: 123 My Street
+ Example, EX
+:Kontakt: me@my.org
+:Version: 1
+:Datum: 2001-08-11
+:Parameter i: integer
+""",
+u"""\
+<document source="test data">
+ <docinfo>
+ <author>
+ Me
+ <address xml:space="preserve">
+ 123 My Street
+ Example, EX
+ <contact>
+ <reference refuri="mailto:me@my.org">
+ me@my.org
+ <version>
+ 1
+ <date>
+ 2001-08-11
+ <field classes="parameter-i">
+ <field_name>
+ Parameter i
+ <field_body>
+ <paragraph>
+ integer
+ <topic classes="abstract">
+ <title>
+ Zusammenfassung
+ <paragraph>
+ Abstract 1.
+ <comment xml:space="preserve">
+ Bibliographic element extraction for a German document.
+"""],])
+
+totest_ru['bibliographic_field_lists'] = ((DocInfo,), [
+[u"""\
+.. Bibliographic element extraction for a Russian document.
+
+:аннотация: Abstract 1.
+:автор: Me
+:адрес: 123 My Street
+ Example, EX
+:контакт: me@my.org
+:версия: 1
+:дата: 2001-08-11
+:Parameter i: integer
+""",
+u"""\
+<document source="test data">
+ <docinfo>
+ <author>
+ Me
+ <address xml:space="preserve">
+ 123 My Street
+ Example, EX
+ <contact>
+ <reference refuri="mailto:me@my.org">
+ me@my.org
+ <version>
+ 1
+ <date>
+ 2001-08-11
+ <field classes="parameter-i">
+ <field_name>
+ Parameter i
+ <field_body>
+ <paragraph>
+ integer
+ <topic classes="abstract">
+ <title>
+ Аннотация
+ <paragraph>
+ Abstract 1.
+ <comment xml:space="preserve">
+ Bibliographic element extraction for a Russian document.
+"""],])
+
if __name__ == '__main__':
import unittest