#!/usr/bin/env python # -*- coding: utf-8 -*- # $Id$ # # :Copyright: © 2011 Günter Milde. # :Maintainer: docutils-develop@lists.sourceforge.net # :License: Released under the terms of the `2-Clause BSD license`_, in short: # # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. # This file is offered as-is, without any warranty. # # .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause """ Test module for universal.SmartQuotes transform. """ from __init__ import DocutilsTestSupport # must be imported before docutils from docutils.transforms.universal import SmartQuotes from docutils.parsers.rst import Parser def suite(): parser = Parser() settings = {'smart_quotes': True} s = DocutilsTestSupport.TransformTestSuite( parser, suite_settings=settings) s.generateTests(totest) settings['language_code'] = 'de' s.generateTests(totest_de) settings['smart_quotes'] = 'alternative' s.generateTests(totest_de_alt) return s totest = {} totest_de = {} totest_de_alt = {} totest['transitions'] = ((SmartQuotes,), [ ["""\ Test "smart quotes", 'single smart quotes', "'nested' smart" quotes -- and ---also long--- dashes. """, u"""\ Test “smart quotes”, ‘single smart quotes’, “‘nested’ smart” quotes – and —also long— dashes. """], ["""\ Do not "educate" quotes ``inside "literal" text`` and :: "literal" blocks. Keep quotes straight in code and math: :code:`print "hello"` :math:`1' 12"`. .. code:: print "hello" .. math:: f'(x) = df(x)/dx """, u"""\ Do not “educate” quotes inside "literal" text and "literal" blocks. Keep quotes straight in code and math: print "hello" 1' 12" . print "hello" f'(x) = df(x)/dx """], ["""\ Quotes and inline-elements: * Around "_`targets`", "*emphasized*" or "``literal``" text and links to "targets_". * Inside *"emphasized"* or other `inline "roles"` Do not drop characters from intra-word inline markup like *re*\ ``Structured``\ *Text*. """, u"""\ Quotes and inline-elements: Around “ targets ”, “ emphasized ” or “ literal ” text and links to “ targets ”. Inside \n\ “emphasized” or other \n\ inline “roles” Do not drop characters from intra-word inline markup like re Structured Text .\ """], ["""\ .. class:: language-de German "smart quotes" and 'single smart quotes'. .. class:: language-foo "Quoting style" for unknown languages is 'ASCII'. .. class:: language-de-x-altquot Alternative German "smart quotes" and 'single smart quotes'. """, u"""\ German „smart quotes“ and ‚single smart quotes‘. "Quoting style" for unknown languages is 'ASCII'. Alternative German »smart quotes« and ›single smart quotes‹. No smart quotes defined for language "foo". """], ]) totest_de['transitions'] = ((SmartQuotes,), [ ["""\ German "smart quotes" and 'single smart quotes'. .. class:: language-en-UK English "smart quotes" and 'single smart quotes'. """, u"""\ German „smart quotes“ and ‚single smart quotes‘. English “smart quotes” and ‘single smart quotes’. """], ]) totest_de_alt['transitions'] = ((SmartQuotes,), [ ["""\ Alternative German "smart quotes" and 'single smart quotes'. .. class:: language-en-UK English "smart quotes" and 'single smart quotes' have no alternative. .. class:: language-ro Alternative Romanian "smart quotes" and 'single' smart quotes. """, u"""\ Alternative German »smart quotes« and ›single smart quotes‹. English “smart quotes” and ‘single smart quotes’ have no alternative. Alternative Romanian «smart quotes» and „single” smart quotes. """], ]) if __name__ == '__main__': import unittest unittest.main(defaultTest='suite')