diff --git a/mnh_expand/parser_fortran_python.py b/mnh_expand/parser_fortran_python.py new file mode 100644 index 0000000000000000000000000000000000000000..c4bf4d66b9621308edf7d970b633c14fc2faa26d --- /dev/null +++ b/mnh_expand/parser_fortran_python.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed Mar 30 22:32:56 2022 + +@author: Quentin +""" + +def count_blank(text): + count=0 + for t in text: + if t == " ": + count=count+1 + else: + break + return count + +def check_indent(n,indent_score,worktext): + nblank=count_blank(worktext) + rawtext=worktext[nblank:] + correcttext=' '*((indent_score)*1) + rawtext + return correcttext + +filein = open('mode_tke_eps_sources.f90','r') +fileout = open('new.F90','w') +contentbyline = filein.readlines() + +ncurrline=0 +indent_score=0 +for i in contentbyline: + #Si la ligne est un commentaire (commence par !) : next (ne pas indenter) + # + # ligne de calcul sans ajout d'indentation (DO, ENDDDO, IF, ENDIF) + if indent_score > 0 and ("DO J" not in i and "ENDDO" not in i): + textwrite=check_indent(ncurrline,indent_score,i) + elif "DO J" in i: + textwrite=check_indent(ncurrline,indent_score,i) + indent_score = indent_score+1 + elif "ENDDO" in i: + indent_score = indent_score-1 + textwrite=check_indent(ncurrline,indent_score,i) + #Ajouter le case IF et ENDIF qui ajoute de lindentation + else: + textwrite=i + ncurrline=ncurrline+1 + fileout.writelines(textwrite) + +fileout.close() +filein.close() + \ No newline at end of file