diff --git a/sphinx/util/docfields.py b/sphinx/util/docfields.py index b59d3f317..f7b19c47d 100644 --- a/sphinx/util/docfields.py +++ b/sphinx/util/docfields.py @@ -219,7 +219,9 @@ class DocFieldTransformer(object): if typedesc is None or typedesc.has_arg != bool(fieldarg): # either the field name is unknown, or the argument doesn't # match the spec; capitalize field name and be done with it - new_fieldname = fieldtype.capitalize() + ' ' + fieldarg + new_fieldname = fieldtype[0:1].upper() + fieldtype[1:] + if fieldarg: + new_fieldname = new_fieldname + ' ' + fieldarg fieldname[0] = nodes.Text(new_fieldname) entries.append(field) continue diff --git a/tests/root/objects.txt b/tests/root/objects.txt index 533bdae3e..57e822127 100644 --- a/tests/root/objects.txt +++ b/tests/root/objects.txt @@ -7,6 +7,32 @@ Testing object descriptions .. function:: func_without_body() +.. function:: func_with_unknown_field() + + : : + + : empty field name: + + :field_name: + + :field_name all lower: + + :FIELD_NAME: + + :FIELD_NAME ALL CAPS: + + :Field_Name: + + :Field_Name All Word Caps: + + :Field_name: + + :Field_name First word cap: + + :FIELd_name: + + :FIELd_name PARTial caps: + .. function:: func_noindex :noindex: diff --git a/tests/test_build_html.py b/tests/test_build_html.py index 3813ed04d..aef733057 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -196,6 +196,17 @@ HTML_XPATH = { 'Testing object descriptions'), (".//li[@class='toctree-l1']/a[@href='markup.html']", 'Testing various markup'), + # test unknown field names + (".//th[@class='field-name']", 'Field_name:'), + (".//th[@class='field-name']", 'Field_name all lower:'), + (".//th[@class='field-name']", 'FIELD_NAME:'), + (".//th[@class='field-name']", 'FIELD_NAME ALL CAPS:'), + (".//th[@class='field-name']", 'Field_Name:'), + (".//th[@class='field-name']", 'Field_Name All Word Caps:'), + (".//th[@class='field-name']", 'Field_name:'), + (".//th[@class='field-name']", 'Field_name First word cap:'), + (".//th[@class='field-name']", 'FIELd_name:'), + (".//th[@class='field-name']", 'FIELd_name PARTial caps:'), # custom sidebar (".//h4", 'Custom sidebar'), # docfields