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*)(_b)\s*")
21 patt_module = re.compile(
r"\s*module\s\w*")
22 patt_module_start = re.compile(
"(\s*module\s)(\w*)(_b)\s*")
23 patt_module_end = re.compile(
"(\s*end module\s)(\w*)(_b)\s*")
24 patt_subroutine = re.compile(
r"\s*subroutine\s\w*")
25 patt_subend = re.compile(
r"\s*end\s*subroutine")
26 patt_comment = re.compile(
r"\s*!.*")
27 patt_inttype = re.compile(
r"\s*integer\*4\s\w*")
29 print(
"Directory of input source files :", DIR_ORI)
30 print(
"Directory of output source files :", DIR_MOD)
45 "surfaceintegrations_b",
48 for f
in os.listdir(DIR_ORI):
51 file_object_ori = open(os.path.join(DIR_ORI, f),
"r")
52 print(
"\nParsing input file", file_object_ori.name)
56 all_src = file_object_ori.read()
57 file_object_ori.seek(0)
64 for line
in file_object_ori:
66 if patt_module.match(line):
68 if patt_subroutine.match(line):
72 if isModule
and not hasSubroutine:
73 file_object_ori.close()
75 elif isModule
and hasSubroutine:
76 f = f.replace(
"_b",
"_b")
79 file_object_mod = open(os.path.join(DIR_MOD, f),
"w")
82 file_object_ori.seek(0)
85 for line
in file_object_ori:
91 line = line.replace(
"_cb",
"")
95 m = patt_modules.match(line)
98 for m
in useful_modules:
102 line = line.replace(
"_b",
"_b", 1)
104 line = line.replace(
"_b",
"")
109 m = patt_inttype.match(line)
111 line = line.replace(
"integer*4",
"integer")
125 if patt_subroutine.match(line)
and "inviscidupwindflux_b" in line:
128 if inSubroutine
and "use flowutils_b, only : etot" in line:
129 line = line.strip(
"\n") +
", etot_b\n"
131 if patt_subend.match(line):
135 file_object_mod.write(line)
138 file_object_ori.close()
139 file_object_mod.close()
142 print(
" Modified file saved", file_object_mod.name)