Bladeren bron

version inicial

Ernesto Blanco 6 jaren geleden
bovenliggende
commit
89ad929071
3 gewijzigde bestanden met toevoegingen van 136 en 0 verwijderingen
  1. 74 0
      cb2t.py
  2. 16 0
      ejemplo.py
  3. 46 0
      readme.md

+ 74 - 0
cb2t.py

@@ -0,0 +1,74 @@
+#!/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: \"tab\" para \\t, o \"spaces\" para cuatro espacios. Default: \"tab\"", 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:
+        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)

+ 16 - 0
ejemplo.py

@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+def saludo(nombre="mundo", numero=1){
+if nombre!="mundo"{
+if numero!=1{
+for num in range(numero){
+print("Hola "+nombre)
+}
+}else{
+print("Hola "+nombre)
+}
+}else{
+print("Hola mundo")
+}
+}
+saludo()

+ 46 - 0
readme.md

@@ -0,0 +1,46 @@
+# Script Python para convertir llaves en tabulaciones
+
+## Descripción
+
+Este script está pensado para personas que tienen algún problema escribiendo código indentado, y prefieren el uso de llaves típico en otros lenguajes de programación como Java o C#.
+
+El script convierte las llaves tanto al principio como al final de cada línea, en tabulaciones o espacios, según se especifique en los parámetros
+
+Los retornos de carro utilizados en el archivo origen son respetados en el archivo destino, tanto para Windows, Mac o Linux.
+
+## Funcionamiento
+
+$ py cb2t.py --help
+
+usage: cb2t.py [-h] -i INPUT [-o OUTPUT] [-t {tabs,spaces}] [-x {true,false}]
+
+Conversor de llaves a tabulaciones
+
+optional arguments:
+
+-h, --help            show this help message and exit
+
+-o OUTPUT, --output OUTPUT
+Nombre de archivo destino. Si contiene espacios, encerrar entre comillas dobles. Default: "output.py"
+
+-t {tabs,spaces}, --tab {tabs,spaces}
+Caracter de tabulación. Valores aceptados: "tabs" para \t, o "spaces" para cuatro espacios. Default: "tab"
+
+-x {true,false}, --execute {true,false}
+Ejecutar el script al terminar. Default: false
+
+required arguments:
+
+-i INPUT, --input INPUT
+Nombre de archivo a procesar. Si contiene espacios, encerrar entre comillas dobles
+
+
+## Ejemplo
+
+$ py cb2t.py -i ejemplo.py -o ejemplo2.py -t tabs -x true
+
+## Anotaciones y Errores detectados
+
+* Solo son interpretadas las llaves que están o al principio o al final de cada línea, no se procesan llaves intermedias.
+* Si una línea comienza con "{", el signo de ":" no se aplica a la línea anterior, por lo que se recomienda poner las llaves de abrir al final de la línea donde comenzará el bloque, ejemplo def funcion(parametro){
+* Aún no implementada la omisión en las llaves usadas en los diccionarios