feat: Implement double-quoted filename features. #13
@ -91,9 +91,12 @@ is checked for `{! ... !}`.
|
|||||||
# OK, we have found (the start of) an inclusion and must process it
|
# OK, we have found (the start of) an inclusion and must process it
|
||||||
preamble = line[:include_match.start()]
|
preamble = line[:include_match.start()]
|
||||||
remainder = line[include_match.end(1):]
|
remainder = line[include_match.end(1):]
|
||||||
|
doublequoted = False
|
||||||
body_pattern = StreamInclusion.include_quoted_file
|
body_pattern = StreamInclusion.include_quoted_file
|
||||||
if include_match[2].isspace():
|
if include_match[2].isspace():
|
||||||
body_pattern = StreamInclusion.include_bare_file
|
body_pattern = StreamInclusion.include_bare_file
|
||||||
|
elif include_match[2] == '"':
|
||||||
|
doublequoted = True
|
||||||
body_match = body_pattern.search(remainder)
|
body_match = body_pattern.search(remainder)
|
||||||
if not body_match:
|
if not body_match:
|
||||||
for extra_line in self.input_stream:
|
for extra_line in self.input_stream:
|
||||||
@ -105,7 +108,12 @@ is checked for `{! ... !}`.
|
|||||||
errmsg = "semiliterate: End of file while scanning for `!}`"
|
errmsg = "semiliterate: End of file while scanning for `!}`"
|
||||||
utils.log.error(errmsg)
|
utils.log.error(errmsg)
|
||||||
raise EOFError(errmsg)
|
raise EOFError(errmsg)
|
||||||
include_path = self.include_root + '/' + body_match['fn']
|
filename = body_match['fn']
|
||||||
|
if doublequoted:
|
||||||
|
filename = (filename.encode('latin-1', 'backslashreplace')
|
||||||
|
.decode('unicode-escape'))
|
||||||
|
include_path = self.include_root + '/' + filename
|
||||||
|
print(f"Including |{include_path}|")
|
||||||
new_root = re.match(r'(.*)/', include_path)[1]
|
new_root = re.match(r'(.*)/', include_path)[1]
|
||||||
try:
|
try:
|
||||||
include_parameters = yaml.safe_load(body_match['yml'])
|
include_parameters = yaml.safe_load(body_match['yml'])
|
||||||
|
Loading…
Reference in New Issue
Block a user