| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import os
- import sys
- import argparse
- parser = argparse.ArgumentParser(description="Conversor de llaves a tabulaciones")
- requiredNamed = parser.add_argument_group('required arguments')
- requiredNamed.add_argument("-i", "--input", help="Nombre de archivo a procesar. Si contiene espacios, encerrar entre comillas dobles", required=True)
- parser.add_argument("-o", "--output", help="Nombre de archivo destino. Si contiene espacios, encerrar entre comillas dobles. Default: \"output.py\"", default="output.py")
- parser.add_argument("-t", "--tab", help="Caracter de tabulación. Valores aceptados: \"tabs\" para \\t, o \"spaces\" para cuatro espacios. Default: \"tabs\"", choices=["tabs","spaces"], default="tabs")
- parser.add_argument("-x", "--execute", help="Ejecutar el script al terminar. Default: false", choices=["true","false"], default="false")
- args = parser.parse_args()
- numTabs=0
- nextTabs=0
- tabSimbol="\t" if(args.tab=="tabs") else " "
- returnSimbol="\n"
- blockSimbol=""
- f = open(args.input)
- g = open(args.output,"w")
- for linea in f:
- if len(linea)>2 and linea[-2:]=="\r\n":
- returnSimbol="\r\n"
- elif linea[-1]=="\r":
- returnSimbol="\r"
- else:
- returnSimbol="\n"
- while len(linea)>=len(returnSimbol) and linea[-len(returnSimbol)]==returnSimbol:
- linea=linea[:-len(returnSimbol)]
- linea=linea.strip()
- if len(linea)>0:
- inicio=linea[0]
- else:
- g.write(returnSimbol)
- inicio=""
- if inicio=="{" or inicio=="}":
- while inicio=="{" or inicio=="}":
- if inicio == "{":
- numTabs=numTabs+1
- linea=linea[1:].strip()
- elif inicio=="}":
- numTabs=numTabs-1
- linea=linea[1:].strip()
- if len(linea)>0:
- inicio=linea[0]
- else:
- inicio=""
- if len(linea)>0:
- fin=linea[-1]
- else:
- fin=""
- if fin=="{" or fin=="}":
- while fin=="{" or fin=="}":
- if fin=="{":
- linea=linea[:-1].strip()
- nextTabs=nextTabs+1
- blockSimbol=":"
- elif fin=="}":
- linea=linea[:-1].strip()
- nextTab=nextTab-1
- if len(linea)>0:
- fin=linea[-1]
- else:
- fin=""
- if len(linea)>0:
- linea=linea.replace("\{", "{")
- linea=linea.replace("}\\", "}")
- g.write(tabSimbol*numTabs+linea+blockSimbol+returnSimbol)
- numTabs=numTabs+nextTabs
- nextTabs=0
- blockSimbol=""
- g.close()
- f.close()
- if args.execute=="true":
- os.system (args.output)
|