Skip to content

Commit

Permalink
DocumentationAPI: Ignore triple quote strings
Browse files Browse the repository at this point in the history
Ignore whole triple quoted string literal
DocComment.

Fixes #4631
  • Loading branch information
damngamerz committed Aug 12, 2017
1 parent 893c858 commit cebe4f2
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
Expand Up @@ -246,4 +246,14 @@ def extract_documentation_with_markers(content, docstyle_definition):
marker_dict,
docstyle_definition)
if doc:
yield doc
# Ignore string literals
ignore_regex = re.compile(
'^\s*r?(?P<marker>' +
('|'.join(re.escape(s) for s in doc.marker[0])) +
')')
# Starting line of doc_string where marker is present
start_line = doc.range.start.line - 1
ignore_string_match = ignore_regex.search(content[start_line])

if ignore_string_match:
yield doc
26 changes: 26 additions & 0 deletions tests/bearlib/languages/documentation/DocBaseClassTest.py
Expand Up @@ -246,6 +246,32 @@ def test_DocBaseClass_extraction_PYTHON3_3(self):
docstyle_PYTHON3_doxygen.markers[1],
TextPosition(1, 1))])

def test_DocBaseClass_extraction_PYTHON3_4(self):
data = ['\n', 'triple_quote_string_test = """\n',
'This is not a docstring\n', '"""\n']

docstyle_PYTHON3_default = DocstyleDefinition.load('PYTHON3',
'default')

# Nothing is yielded as triple quote string literals are being
# ignored.
self.assertEqual(
list(DocBaseClass.extract(data, 'PYTHON3', 'default')),
[])

def test_DocBaseClass_extraction_PYTHON3_5(self):
data = ['r"""\n', 'This is a raw docstring\n', '"""\n']

docstyle_PYTHON3_default = DocstyleDefinition.load('PYTHON3',
'default')

self.assertEqual(
list(DocBaseClass.extract(data, 'PYTHON3', 'default')),
[DocumentationComment('\nThis is a raw docstring\n',
docstyle_PYTHON3_default, 'r',
docstyle_PYTHON3_default.markers[0],
TextPosition(1, 2))])

def test_generate_diff(self):
data_old = ['\n', '""" documentation in single line """\n']
for doc_comment in DocBaseClass.extract(
Expand Down
Expand Up @@ -75,3 +75,8 @@ def foobar_triangle(side_A, side_B, side_C):


return side_A + side_B + side_C

# This example of triple quote string literal is ignored.
triple_quote_string_literal_test = """
This is a triple quoted string and is not a valid docstring.
"""

0 comments on commit cebe4f2

Please sign in to comment.