import re
# массив строк
g_lines = []
def get_prefixed_lines02( in_body ):
global g_lines
#
# массив вложенностей
global mass_indent, mass_tail
mass_indent = []
mass_tail = []
#
# pack lines in massiv with striping \n
g_lines = [line.rstrip('\n') for line in in_body]
len_m = len(g_lines) # колич строк
# расширение массивов
for ii in range( len_m ):
mass_indent.append("")
mass_tail.append("")
#
#
# шнуруем массив
ind_m = 0 # текущ индекс массива
for lin in g_lines:
#
# разбивка на индент и остав. строку
result = re.match ( '(\s*)(.*)', lin )
vindent = result.group(1)
stroka = result.group(2)
mass_indent[ind_m] = vindent # колич нач пробелов
#
# если не пустая строка, проверка на наличие тегов
if ( stroka != '' ) :
# если #
if ( stroka[0] == '#' ) :
temp = re.sub( '#', '
'
mass_tail[ind_m] = '
'
#
# если %extends
elif ( stroka[0:8] == '%extends' ) :
stroka = "{"+stroka+'%}'
#
# если %load
elif ( stroka[0:5] == '%load' ) :
stroka = "{"+stroka+'%}'
# если %block
elif ( stroka[0:6] == '%block' ) :
stroka = "{"+stroka+'%}'
mass_tail[ind_m] = '{%endblock%}'
# если %include
elif ( stroka[0:8] == '%include' ) :
stroka = "{"+stroka+'%}'
# если h1.title.clear
elif ( stroka[0:14] == 'h1.title.clear' ) :
stroka = ''
# если .left-title > .left-center ||
elif ( stroka == '.left-title > .left-center ||' ) :
stroka = '
'
# если .right-title > .right-center ||
elif ( stroka == '.right-title > .right-center ||' ) :
stroka = ' '
# если em |=
elif ( stroka[0:6] == 'em |= ' ) :
stroka = ' {{ "'+stroka[6:]+'}} '
# if ( stroka != '' )
# end of проверка на наличие тегов
#
# ищем куда вставить закрыв тег
#
# если не первая строка
if (ind_m > 0) :
# если индент текущий < предыдущ
if ( len(mass_indent[ind_m]) < len(mass_indent[ind_m-1] ) ):
#print ( 'len mas ind= ', len ( mass_indent[ind_m] ) )
#
# временный индекс текущ строки
v_ind = ind_m
my_tail = ""
# идем назад
while ( ( v_ind >= 0 ) and ( mass_tail[v_ind]=="" ) ):
v_ind = v_ind-1
# убираем необходимость вывода закрыв тега
my_tail = mass_tail[v_ind]
if ( my_tail != "" ) :
mass_tail[v_ind] = ""
# Выводим заключ тег
print ( mass_indent[v_ind] + my_tail )
#
# Вывод текущей строки
#print ( vindent+stroka, len(vindent), ind_m )
print ( vindent+stroka )
#
ind_m = ind_m + 1 # текущий индекс массива
#
# end for
#
return ""
# main prog
#
if __name__ == "__main__":
# if file name is given convert file, else convert stdin
import sys
shpaml_text = open("D:/Temp/test_shpaml.txt")
#print (shpaml_text)
get_prefixed_lines02( shpaml_text )
# end