Skip to content

Commit cebe4f2

Browse files
committed
DocumentationAPI: Ignore triple quote strings
Ignore whole triple quoted string literal DocComment. Fixes #4631
1 parent 893c858 commit cebe4f2

3 files changed

Lines changed: 42 additions & 1 deletion

File tree

‎coalib/bearlib/languages/documentation/DocumentationExtraction.py‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,4 +246,14 @@ def extract_documentation_with_markers(content, docstyle_definition):
246246
marker_dict,
247247
docstyle_definition)
248248
if doc:
249-
yield doc
249+
# Ignore string literals
250+
ignore_regex = re.compile(
251+
'^\s*r?(?P<marker>' +
252+
('|'.join(re.escape(s) for s in doc.marker[0])) +
253+
')')
254+
# Starting line of doc_string where marker is present
255+
start_line = doc.range.start.line - 1
256+
ignore_string_match = ignore_regex.search(content[start_line])
257+
258+
if ignore_string_match:
259+
yield doc

‎tests/bearlib/languages/documentation/DocBaseClassTest.py‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,32 @@ def test_DocBaseClass_extraction_PYTHON3_3(self):
246246
docstyle_PYTHON3_doxygen.markers[1],
247247
TextPosition(1, 1))])
248248

249+
def test_DocBaseClass_extraction_PYTHON3_4(self):
250+
data = ['\n', 'triple_quote_string_test = """\n',
251+
'This is not a docstring\n', '"""\n']
252+
253+
docstyle_PYTHON3_default = DocstyleDefinition.load('PYTHON3',
254+
'default')
255+
256+
# Nothing is yielded as triple quote string literals are being
257+
# ignored.
258+
self.assertEqual(
259+
list(DocBaseClass.extract(data, 'PYTHON3', 'default')),
260+
[])
261+
262+
def test_DocBaseClass_extraction_PYTHON3_5(self):
263+
data = ['r"""\n', 'This is a raw docstring\n', '"""\n']
264+
265+
docstyle_PYTHON3_default = DocstyleDefinition.load('PYTHON3',
266+
'default')
267+
268+
self.assertEqual(
269+
list(DocBaseClass.extract(data, 'PYTHON3', 'default')),
270+
[DocumentationComment('\nThis is a raw docstring\n',
271+
docstyle_PYTHON3_default, 'r',
272+
docstyle_PYTHON3_default.markers[0],
273+
TextPosition(1, 2))])
274+
249275
def test_generate_diff(self):
250276
data_old = ['\n', '""" documentation in single line """\n']
251277
for doc_comment in DocBaseClass.extract(

‎tests/bearlib/languages/documentation/documentation_extraction_testdata/default.py‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,8 @@ def foobar_triangle(side_A, side_B, side_C):
7575

7676

7777
return side_A + side_B + side_C
78+
79+
# This example of triple quote string literal is ignored.
80+
triple_quote_string_literal_test = """
81+
This is a triple quoted string and is not a valid docstring.
82+
"""

0 commit comments

Comments
 (0)