src/advisor/parsers/comment_parser.py (22 lines of code) (raw):
class CommentParser:
"""Comment parser base."""
def __init__(self, one_line_token, multi_line_begin_token, multi_line_end_token):
self._in_comment = False
self._one_line_token = one_line_token
self._multi_line_begin_token = multi_line_begin_token
self._multi_line_end_token = multi_line_end_token
def parse_line(self, line):
"""Parse comments in a source line
Args:
line (str): The line to parse.
Returns:
bool: Whether this line is a comment
"""
if line.lstrip().startswith(self._one_line_token):
return True
if self._in_comment:
if self._multi_line_end_token in line:
self._in_comment = False
return True
else:
if line.lstrip().startswith(self._multi_line_begin_token):
templine = line[2:]
if not self._multi_line_end_token in templine:
self._in_comment = True
return True
elif templine.rstrip().endswith(self._multi_line_end_token):
return True
return False