mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
merge heads
This commit is contained in:
commit
ba50c00a0e
@ -220,6 +220,14 @@ class Locale(Transform):
|
||||
if not msgstr or msgstr == msg: # as-of-yet untranslated
|
||||
continue
|
||||
|
||||
# Avoid "Literal block expected; none found." warnings.
|
||||
# If msgstr ends with '::' then it cause warning message at
|
||||
# parser.parse() processing.
|
||||
# literal-block-warning is only appear in avobe case.
|
||||
if msgstr.strip().endswith('::'):
|
||||
msgstr += '\n\n dummy literal'
|
||||
# dummy literal node will discard by 'patch = patch[0]'
|
||||
|
||||
patch = new_document(source, settings)
|
||||
parser.parse(msgstr, patch)
|
||||
patch = patch[0]
|
||||
|
@ -17,6 +17,7 @@ from os import path
|
||||
from docutils import nodes
|
||||
|
||||
from sphinx import addnodes
|
||||
from sphinx.locale import _
|
||||
|
||||
|
||||
# refcount annotation
|
||||
@ -78,12 +79,12 @@ class Refcounts(dict):
|
||||
continue
|
||||
elif entry.result_type not in ("PyObject*", "PyVarObject*"):
|
||||
continue
|
||||
rc = 'Return value: '
|
||||
if entry.result_refs is None:
|
||||
rc += "Always NULL."
|
||||
rc = _('Return value: Always NULL.')
|
||||
elif entry.result_refs:
|
||||
rc = _('Return value: New reference.')
|
||||
else:
|
||||
rc += (entry.result_refs and "New" or "Borrowed") + \
|
||||
" reference."
|
||||
rc = _('Return value: Borrowed reference.')
|
||||
node.insert(0, refcount(rc, rc))
|
||||
|
||||
|
||||
|
@ -137,7 +137,7 @@
|
||||
|
||||
% Some custom font markup commands.
|
||||
%
|
||||
\newcommand{\strong}[1]{{\bf #1}}
|
||||
\newcommand{\strong}[1]{{\textbf{#1}}}
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
\newcommand{\bfcode}[1]{\code{\bfseries#1}}
|
||||
\newcommand{\email}[1]{\textsf{#1}}
|
||||
@ -333,7 +333,7 @@
|
||||
\@ifundefined{ChTitleVar}{}{
|
||||
\ChNameVar{\raggedleft\normalsize\py@HeaderFamily}
|
||||
\ChNumVar{\raggedleft \bfseries\Large\py@HeaderFamily}
|
||||
\ChTitleVar{\raggedleft \rm\Huge\py@HeaderFamily}
|
||||
\ChTitleVar{\raggedleft \textrm{\Huge\py@HeaderFamily}}
|
||||
% This creates chapter heads without the leading \vspace*{}:
|
||||
\def\@makechapterhead#1{%
|
||||
{\parindent \z@ \raggedright \normalfont
|
||||
|
@ -102,7 +102,7 @@ class BaseSearch(object):
|
||||
res = self.context_re.search(text)
|
||||
if res is None:
|
||||
return ''
|
||||
context_start = max(res.start() - length/2, 0)
|
||||
context_start = max(res.start() - int(length/2), 0)
|
||||
context_end = context_start + length
|
||||
context = ''.join([context_start > 0 and '...' or '',
|
||||
text[context_start:context_end],
|
||||
|
@ -5,4 +5,5 @@
|
||||
footnote
|
||||
external_links
|
||||
refs_inconsistency
|
||||
literalblock
|
||||
seealso
|
||||
|
30
tests/root/i18n/literalblock.po
Normal file
30
tests/root/i18n/literalblock.po
Normal file
@ -0,0 +1,30 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2012, foof
|
||||
# This file is distributed under the same license as the foo package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx 1.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-22 08:28\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
msgid "i18n with literal block"
|
||||
msgstr "I18N WITH LITERAL BLOCK"
|
||||
|
||||
msgid "Correct literal block::"
|
||||
msgstr "CORRECT LITERAL BLOCK::"
|
||||
|
||||
msgid "Missing literal block::"
|
||||
msgstr "MISSING LITERAL BLOCK::"
|
||||
|
||||
msgid "That's all."
|
||||
msgstr "THAT'S ALL."
|
||||
|
13
tests/root/i18n/literalblock.txt
Normal file
13
tests/root/i18n/literalblock.txt
Normal file
@ -0,0 +1,13 @@
|
||||
:tocdepth: 2
|
||||
|
||||
i18n with literal block
|
||||
=========================
|
||||
|
||||
Correct literal block::
|
||||
|
||||
this is
|
||||
literal block
|
||||
|
||||
Missing literal block::
|
||||
|
||||
That's all.
|
@ -35,6 +35,7 @@ ENV_WARNINGS = """\
|
||||
%(root)s/autodoc_fodder.py:docstring of autodoc_fodder\\.MarkupError:2: \
|
||||
WARNING: Explicit markup ends without a blank line; unexpected \
|
||||
unindent\\.\\n?
|
||||
%(root)s/i18n/literalblock.txt:13: WARNING: Literal block expected; none found.
|
||||
%(root)s/images.txt:9: WARNING: image file not readable: foo.png
|
||||
%(root)s/images.txt:23: WARNING: nonlocal image URI found: \
|
||||
http://www.python.org/logo.png
|
||||
|
@ -186,6 +186,28 @@ def test_i18n_keep_external_links(app):
|
||||
assert expect_line == matched_line
|
||||
|
||||
|
||||
@with_app(buildername='text', warning=warnfile, cleanenv=True,
|
||||
confoverrides={'language': 'xx', 'locale_dirs': ['.'],
|
||||
'gettext_compact': False})
|
||||
def test_i18n_literalblock_warning(app):
|
||||
app.builddir.rmtree(True) #for warnings acceleration
|
||||
app.builder.build(['i18n/literalblock'])
|
||||
result = (app.outdir / 'i18n' / 'literalblock.txt').text(encoding='utf-8')
|
||||
expect = (u"\nI18N WITH LITERAL BLOCK"
|
||||
u"\n***********************\n"
|
||||
u"\nCORRECT LITERAL BLOCK:\n"
|
||||
u"\n this is"
|
||||
u"\n literal block\n"
|
||||
u"\nMISSING LITERAL BLOCK:\n"
|
||||
u"\n<SYSTEM MESSAGE: ")
|
||||
assert result.startswith(expect)
|
||||
|
||||
warnings = warnfile.getvalue().replace(os.sep, '/')
|
||||
expected_warning_expr = u'.*/i18n/literalblock.txt:\\d+: ' \
|
||||
u'WARNING: Literal block expected; none found.'
|
||||
assert re.search(expected_warning_expr, warnings)
|
||||
|
||||
|
||||
@with_app(buildername='text', cleanenv=True,
|
||||
confoverrides={'language': 'xx', 'locale_dirs': ['.'],
|
||||
'gettext_compact': False})
|
||||
|
19
tox.ini
19
tox.ini
@ -4,6 +4,8 @@ envlist=py25,py26,py27,py31,py32,py33,pypy,du09,du08,du07
|
||||
[testenv]
|
||||
deps=
|
||||
nose
|
||||
sqlalchemy
|
||||
whoosh
|
||||
setenv =
|
||||
BUILD_TEST_PATH = {envdir}/tests
|
||||
commands=
|
||||
@ -12,31 +14,36 @@ commands=
|
||||
|
||||
[testenv:py25]
|
||||
deps=
|
||||
nose
|
||||
simplejson==2.5.0
|
||||
{[testenv]deps}
|
||||
|
||||
[testenv:py33]
|
||||
deps=
|
||||
nose
|
||||
#svn+http://docutils.svn.sourceforge.net/svnroot/docutils/trunk/docutils
|
||||
docutils>=0.10.0
|
||||
{[testenv]deps}
|
||||
|
||||
[testenv:pypy]
|
||||
deps=
|
||||
nose
|
||||
simplejson
|
||||
{[testenv]deps}
|
||||
|
||||
[testenv:du07]
|
||||
deps=
|
||||
nose
|
||||
docutils==0.7
|
||||
{[testenv]deps}
|
||||
|
||||
[testenv:du08]
|
||||
deps=
|
||||
nose
|
||||
docutils==0.8.1
|
||||
{[testenv]deps}
|
||||
|
||||
[testenv:du09]
|
||||
deps=
|
||||
nose
|
||||
docutils==0.9.1
|
||||
{[testenv]deps}
|
||||
|
||||
[testenv:du10]
|
||||
deps=
|
||||
docutils==0.10.0
|
||||
{[testenv]deps}
|
||||
|
Loading…
Reference in New Issue
Block a user