add support for heredoc folding of lines
this change in the parser allows for us to have heredocs folded into logical lines. Change-Id: I51ebe6cd7b89b5f7194e947896f20b6750e972e3
This commit is contained in:
parent
b83c365cf5
commit
02d7fe13bb
@ -55,10 +55,41 @@ def check_indents(line):
|
|||||||
print_error('E003: Indent not multiple of 4', line)
|
print_error('E003: Indent not multiple of 4', line)
|
||||||
|
|
||||||
|
|
||||||
|
def starts_multiline(line):
|
||||||
|
m = re.search("[^<]<<\s*(?P<token>\w+)", line)
|
||||||
|
if m:
|
||||||
|
return m.group('token')
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def end_of_multiline(line, token):
|
||||||
|
if token:
|
||||||
|
return re.search("^%s\s*$" % token, line) is not None
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def check_files(files):
|
def check_files(files):
|
||||||
|
in_multiline = False
|
||||||
|
logical_line = ""
|
||||||
|
token = False
|
||||||
for line in fileinput.input(files):
|
for line in fileinput.input(files):
|
||||||
check_no_trailing_whitespace(line)
|
# NOTE(sdague): multiline processing of heredocs is interesting
|
||||||
check_indents(line)
|
if not in_multiline:
|
||||||
|
logical_line = line
|
||||||
|
token = starts_multiline(line)
|
||||||
|
if token:
|
||||||
|
in_multiline = True
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
logical_line = logical_line + line
|
||||||
|
if not end_of_multiline(line, token):
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
in_multiline = False
|
||||||
|
|
||||||
|
check_no_trailing_whitespace(logical_line)
|
||||||
|
check_indents(logical_line)
|
||||||
|
|
||||||
|
|
||||||
def get_options():
|
def get_options():
|
||||||
|
Loading…
Reference in New Issue
Block a user