diff options
| author | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2017-06-18 23:38:18 +0000 |
|---|---|---|
| committer | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2017-06-18 23:38:18 +0000 |
| commit | c2a052daeabfc2f0eb3c90b9e7e55a8a01c64e65 (patch) | |
| tree | c92c712774a5d131af60b627e47ffcd4f631dde3 | |
| parent | d2fe4ebbdcc732ebfcfc931dde9eff474660d66b (diff) | |
| download | docutils-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.txt | 4 | ||||
| -rw-r--r-- | docutils/transforms/frontmatter.py | 8 | ||||
| -rwxr-xr-x | test/test_transforms/test_docinfo.py | 97 |
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 |
