35 lines
874 B
Python
35 lines
874 B
Python
|
from . import preprocessor
|
||
|
|
||
|
|
||
|
def iter_clean_lines(lines):
|
||
|
incomment = False
|
||
|
for line in lines:
|
||
|
# Deal with comments.
|
||
|
if incomment:
|
||
|
_, sep, line = line.partition('*/')
|
||
|
if sep:
|
||
|
incomment = False
|
||
|
continue
|
||
|
line, _, _ = line.partition('//')
|
||
|
line, sep, remainder = line.partition('/*')
|
||
|
if sep:
|
||
|
_, sep, after = remainder.partition('*/')
|
||
|
if not sep:
|
||
|
incomment = True
|
||
|
continue
|
||
|
line += ' ' + after
|
||
|
|
||
|
# Ignore blank lines and leading/trailing whitespace.
|
||
|
line = line.strip()
|
||
|
if not line:
|
||
|
continue
|
||
|
|
||
|
yield line
|
||
|
|
||
|
|
||
|
def iter_lines(filename, *,
|
||
|
preprocess=preprocessor.run,
|
||
|
):
|
||
|
content = preprocess(filename)
|
||
|
return iter(content.splitlines())
|