Added functionality to read include statements on the go

This commit is contained in:
Vitesh Shah 2018-06-22 08:51:31 +02:00
parent 25fa68ca2e
commit 47a6e6b292
1 changed files with 48 additions and 12 deletions

42
lib/damask/config/material.py Normal file → Executable file
View File

@ -3,6 +3,7 @@
import re
import os
class Section():
def __init__(self,data = {'__order__':[]},part = ''):
classes = {
@ -173,24 +174,59 @@ class Material():
else: # plain key
self.data[part][name_section][items[0]] = items[1:]
c = []
def myRead(c,sub_file):
re_include = re.compile(r'^{(.+)}$') # pattern for include
with open(sub_file,'r') as f:
for entry in f:
if not entry.strip():
continue
match = re_include.match(entry.split()[0])
if match:
if match.group(1).startswith('/'):
sub_file = match.group(1)
else:
sub_file = os.path.normpath(os.path.dirname(sub_file).join(match.group(1)))
with open(sub_file,'r') as f1:
for l in f1.readlines():
if l not in c:
c.append(l)
else:
continue
myRead(c,sub_file)
else:
if entry not in c:
c.append(entry)
else:
continue
return c,sub_file
def read(self,file=None):
fileNames = [None] * 10
fileNames[0] = file
re_include = re.compile(r'^{(.+)}$') # pattern for include
c = []
i = 0
for files in fileNames:
if files is not None:
with open(file,'r') as f:
for entry in f:
if not entry.strip(): continue
if not entry.strip():
continue
match = re_include.match(entry.split()[0])
if match:
if match.group(1).startswith('/'):
sub_file = match.group(1)
else:
sub_file = os.path.normpath(os.path.dirname(file).join(match.group(1)))
with open(sub_file,'r') as f1: #using the target_path to open the file
for l in f1.readlines(): c.append(l)
i = i + 1
fileNames[i] = sub_file
myRead(c,sub_file)
else:
if entry not in c:
c.append(entry)
else:
continue
for l in c:
print(l)