3 autoEdit - A Python tool to automatically edit a set of files
4 according to the specified user rules:
20 patt_modules = re.compile(
r"(\s*use\s*\w*)(_d)\s*")
21 patt_module = re.compile(
r"\s*module\s\w*")
22 patt_module_start = re.compile(
"(\s*module\s)(\w*)(_d)\s*")
23 patt_module_end = re.compile(
"(\s*end module\s)(\w*)(_d)\s*")
24 patt_subroutine = re.compile(
r"\s*subroutine\s\w*")
25 patt_function = re.compile(
r"\s*function\s\w*")
27 patt_subend = re.compile(
r"\s*end\s*subroutine")
28 patt_funcend = re.compile(
r"\s*end\s*function\n")
30 print(
"Directory of input source files :", DIR_ORI)
31 print(
"Directory of output source files :", DIR_MOD)
46 "surfaceintegrations_d",
50 for f
in os.listdir(DIR_ORI):
53 file_object_ori = open(os.path.join(DIR_ORI, f),
"r")
54 print(
"\nParsing input file", file_object_ori.name)
58 all_src = file_object_ori.read()
59 file_object_ori.seek(0)
66 for line
in file_object_ori:
68 if patt_module.match(line):
70 if patt_subroutine.match(line):
72 if patt_function.match(line):
76 if isModule
and not hasSubroutine:
77 file_object_ori.close()
79 elif isModule
and hasSubroutine:
80 f = f.replace(
"_d",
"_d")
83 file_object_mod = open(os.path.join(DIR_MOD, f),
"w")
86 file_object_ori.seek(0)
89 for line
in file_object_ori:
95 line = line.replace(
"_cd",
"")
99 m = patt_modules.match(line)
102 for m
in useful_modules:
106 line = line.replace(
"_d",
"_d", 1)
108 line = line.replace(
"_d",
"")
121 if patt_subroutine.match(line)
and "inviscidupwindflux_d" in line:
125 if inSubroutine
and "use flowutils_d, only : etot" in line:
126 line = line.strip(
"\n") +
", etot_d\n"
128 if patt_subend.match(line):
131 file_object_mod.write(line)
134 file_object_ori.close()
135 file_object_mod.close()
138 print(
" Modified file saved", file_object_mod.name)