CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 23 Sep 2017 13:54

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 17 mensajes ]  Ir a página 1, 2  Siguiente
Autor Mensaje
NotaPublicado: 11 Jun 2009 18:19 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 May 2004 10:50
Mensajes: 884
Hola !

En mi primera incursión en python he escrito este pequeño script que extrae textos del código fuente de una aventura y los vuelca a un fichero de texto. Este fichero de texto luego puede volver a ser introducido en el código fuente original.

¿ Para qué sirve esto ?

Por ejemplo para pasar los textos por un corrector ortográfico. Primero extraemos los textos, luego cargamos el fichero en nuestro corrector favorito, lo salvamos en texto plano y después insertamos el texto de vuelta en el código fuente.

¿ Qué reglas hay que seguir ?

Lo he orientado a inform, pero sirve para cualquier código fuente. Los textos deben ir entre comillas dobles y contener al menos dos palabras para que sean extraidos.

El código fuente original del que extraemos los textos no debe ser distinto del código fuente en el que los insertaremos. El programa simplemente reemplaza los textos en el orden en que los encuentra.

No hay límites en tamaño en cuanto al nuevo texto corregido, puede ser mayor o menor.

El entrecomillado no debe ser eliminado al corregir los textos.

Saca una copia de seguridad de tu código fuente antes de usar esta herramienta. No obstante se crea un fichero fuente.backup por si las moscas.

Todos los ficheros deben ir en texto plano. Tened cuidado al salvar el fichero corregido y respetad esta regla.

¿ Cómo se ejecuta ?

Es un simple script en python, asi que deberás tener instalado el runtime de Python en tu Sistema Operativo. Funciona desde la línea de comandos, de este modo podría incluirse dentro de una cadena de compilación.

El código es el siguiente:




[spoiler]
Código:

# -*- coding: iso-8859-15 -*-
import sys
import getopt
import shutil

def usage():
        print"Syntaxis: textool -er -i inputfile -o outputfile";
        print"Example:";
        print"To extract all the text strings from a source code: ";
        print"  textool -e -i aventura.inf -o aventura.txt";
        print"To replace all the text strings in a source code: ";
        print"  texttool -r -i aventura.txt -o aventura.inf ";

def fileExists(f):
    try:
         file = open(f)
    except IOError:
         exists = 0
    else:
        exists = 1
    return exists

def main(argv):
   
    extract = False;
    replace = False;
    inputfile = "";
    outputfile= "";

    try:
        opts, args = getopt.getopt(argv,"heri:o:",["help","extract","replace","input","output"]);
    except getopt.GetoptError, err:       
        usage();
        sys.exit(2);   

    for o, a in opts:
        if o == "-e":
            extract = True
        elif o=="-r":
            replace= True;
        elif o in ("-h", "--help"):
            usage();
            sys.exit();
        elif o=="-o":
            outputfile = a
        elif o=="-i":
            inputfile = a;
        else:
            assert False, "unhandled option"

    if (extract==False and replace==False):
        print "Syntax error: Extract or replace mode must be selected.";
        usage();
        sys.exit();

   # Comprueba que existe el fichero de entrada...
    if (fileExists(inputfile)==0):
           print "Input file cannot be found.",inputfile;
           usage();
           sys.exit(2);
    if(outputfile==""):
           print"An output file is missing.";
           usage();
           sys.exit(2);
           
    file1 = inputfile;
    file2 = outputfile;

    inicio=0;
    final =0;
    caracter = "1";
    cadena = "";
    salir = 0;
    numchars=0;
    numstrings=0;
    print "Processing: ",inputfile;
    # line = line[:-1] #chop off the newline
    if (extract==True):
            print "Extracting mode";
            f1 = open(file1,'rb');
            f2 = open(file2,'wb');
            # Vuelca todas las cadenas contenidas entre el caracter "
            while (caracter!=""):
                caracter = f1.read(1);
                if (caracter=='"'):
                        if(inicio==0):
                            inicio=1;
                            numstrings=numstrings+1;
                        else: # Vuelca la cadena...
                            cadena = cadena + "\"\r\n";
                            # Debe contener más de dos palabras para ser tenida en cuenta...
                            if (cadena.lstrip().count(" ")>1):
                                f2.write(cadena);
                            cadena = "";
                            inicio=0;

                if(inicio==1):
                    cadena = cadena + caracter;

                numchars=numchars+1;
                         
            f1.close();
            f2.close();
           
    if (replace==True):
        print "Replace mode";
       
        f1 = open(file1,'rb'); # Input
        f2 = open(file2,'rb'); # Output donde va contenido el código fuente...
        f3 = open("temp.txt","wb"); #temporal
        numstrings=0;
        vector=[];
        caracter=" ";
        inicio=0;
        # Extrae todas las cadenas de texto del fichero de entrada.
        while (caracter!=""):
                caracter = f1.read(1);
                if (caracter=='"'):
                        if(inicio==0):
                            inicio=1;
                            numstrings=numstrings+1;
                        else: # Vuelca la cadena...
                            vector.append(cadena);
                            cadena = "";
                            inicio=0;
                if(inicio==1):
                        cadena = cadena + caracter;
        caracter = " ";
        numstrings=0;
        inicio=0;
        # Reemplaza todas las cadenas
        while (caracter!=""):
                caracter = f2.read(1);
                if (caracter=='"'):
                        if(inicio==0):
                            inicio=1;
                            numstrings=numstrings+1;
                        else: # Vuelca la cadena...
                            cadena = cadena;
                            # Debe contener más de dos palabras para ser tenida en cuenta...
                            if (cadena.lstrip().count(" ")>1):
                                # Es una cadena a sustituir...
                                # Asi que extraemos la misma cadena del fichero de entrada...
                                f3.write(vector[numstrings-1]);
                            else:
                                numstrings=numstrings-1;
                                f3.write(cadena);           
                            cadena = "";
                            inicio=0;
                if(inicio==1):
                        cadena = cadena + caracter;
                else:
                        f3.write(caracter);
                numchars=numchars+1;
        f1.close();
        f2.close();
        f3.close();
       
        shutil.copyfile(file2,"fuente.backup");
        shutil.copyfile("temp.txt",file2);
       
    print "Finished (",numchars," characters processed,",numstrings," strings found)";

if __name__ == "__main__":
    main(sys.argv[1:])

[/spoiler]

_________________
---
# S a i m a z o o m # http://www.aliensuavito.com manoparlante.blogspot.com @lecambre ALIENsoft (KNO&KMBR&DLA)


Última edición por saimazoom el 12 Jun 2009 17:09, editado 2 veces en total

Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 11 Jun 2009 19:39 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 15 Dic 2004 21:28
Mensajes: 2302
Lo he probado y funciona muy bien.


Arriba
 Perfil  
 
NotaPublicado: 11 Jun 2009 20:32 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 23 Abr 2004 08:49
Mensajes: 2885
Ubicación: España (Galicia)
Hola !

Citar:
El código fuente original del que extraemos los textos no debe ser distinto del código fuente en el que los insertaremos. El programa simplemente reemplaza los textos en el orden en que los encuentra.


Buen trabajo.
Esto me recuerda, además, que Uto podría completar su trabajo de extracción de textos para Superglús usando exactamente el mismo algoritmo.

Salud !

Baltasar

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
NotaPublicado: 11 Jun 2009 21:32 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4611
baltasarq escribió:
Hola !

Citar:
El código fuente original del que extraemos los textos no debe ser distinto del código fuente en el que los insertaremos. El programa simplemente reemplaza los textos en el orden en que los encuentra.


Buen trabajo.
Esto me recuerda, además, que Uto podría completar su trabajo de extracción de textos para Superglús usando exactamente el mismo algoritmo.

Salud !

Baltasar


En realidad no, porque hay muchos textos en Superglus que no van entre comillas (localidades, objetos, mensajes y mensajes del sistema, por lo cual no puedo hacer el "reemplazo cada texto en el mismo orden" mas que nada porque no puedo detectarlos. Precisamente por eso es el compilador de Superglus el que genera el fichero con los textos y no otra herramienta externa, porque el compilador sí sabe por donde va :)

No obstante el script este de Saimazoom vale para Superglus por si mismo, pero solo para los "write".

Para Superglus habria que hacer algo "a medida", que sepa por que seccion va, vamos, que no se puede hacer "a ciegas", es mas complicado. Quiza se pudiera hacer que si el compilador encuentra un determinado fichero al compilar "meta los textos", no se me ocurre otro modo que no requiera un analisis sintactico del fuente.

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 11 Jun 2009 22:19 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 24 Ago 2007 00:41
Mensajes: 2020
Ubicación: Chile
saimazoom escribió:
En mi primera incursión en python he escrito este pequeño script que extrae textos del código fuente de una aventura y los vuelca a un fichero de texto. Este fichero de texto luego puede volver a ser introducido en el código fuente original.


saimazoom, me das tu permiso de incluir este programita como un EXE en el Kit del Programador de INFSP6? Puede ser muy útil. :)

_________________
Eliuk Blau
eliukblau (AT) gmail.com
http://www.caad.es/eliukblau/


Arriba
 Perfil  
 
NotaPublicado: 12 Jun 2009 07:19 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 May 2004 10:50
Mensajes: 884
Hola Eliuk

He añadido alguna cosilla más que me ha pedido Sarganar. Después de que alguien más que yo lo pruebe, si no tiene bugs gordos se podría incluir en el kit.

Syntaxis: textool -x atd -r atd -i inputfile -o outputfile -m numwords -l numwords -c commentstyle

-x a Extract all strings from input file and write them in the output file.
t Extract all text strings from input file and write them in the output file. Default value.
d Extract all dictionary strings and write them in the output file.
-r a Replace all strings in the outputfile with strings found in the input file.
t Replace all text strings in the outputfile with strings found in the input file. Default value.
d Replace all dictionary strings in the outputfile with strings found in the input file.
-i Path to the input file.
-o Path to the desired output file.
-m Maximum number of words a string should contain to be written in the output file. Default value is no limit.
-l Minimum number of words a string should contain to be written in the output file. Default value is 2.
-c Comment Style. Default character is !
Examples:
To extract text strings from an INFORM source code:
textool -x t -i aventura.inf -o aventura.txt
To replace text strings in an INFORM source code:
textool -r t -i aventura.txt -o aventura.inf
To extract dictionary strings from an INFORM source code:
textool -x d -i aventura.inf -o aventura.txt -l 1
To replace dictionary strings in an INFORM source code:
textool -r d -i aventura.txt -o aventura.inf -l 1
To extract all text and dictionary strings from an INFORM source code:
textool -x a -i aventura.inf -o aventura.txt -l 1
To replace all text and dictionary strings in a INFORM source code:
textool -r a -i aventura.txt -o aventura.inf -l 1
To extract all write-strings from a SUPERGLUS source code:
textool -x t -i aventura.txp -o aventura.txt -l 1 -c ;
To replace all write-strings in a SUPERGLUS source code:
textool -r t -i aventura.txt -o aventura.txp -l 1 -c ;

[spoiler]
Código:
# -*- coding: iso-8859-15 -*-
import sys
import getopt
import shutil

def usage():
        print"Syntaxis: textool -x atd -r atd -i inputfile -o outputfile -m numwords -l numwords -c commentstyle";
        print " -x a Extract all strings from input file and write them in the output file. ";
        print "    t Extract all text strings from input file and write them in the output file. Default value.";
        print "    d Extract all dictionary strings and write them in the output file.";
        print " -r a Replace all strings in the outputfile with strings found in the input file. ";
        print "    t Replace all text strings in the outputfile with strings found in the input file. Default value.";
        print "    d Replace all dictionary strings in the outputfile with strings found in the input file. ";
        print " -i Path to the input file. ";
        print " -o Path to the desired output file.";
        print " -m Maximum number of words a string should contain to be written in the output file. Default value is no limit.";
        print " -l Minimum number of words a string should contain to be written in the output file. Default value is 2.";
        print " -c Comment Style. Default character is !";
        print"Examples:";
        print"To extract text strings from an INFORM source code: ";
        print"  textool -x t -i aventura.inf -o aventura.txt ";
        print"To replace text strings in an INFORM source code: ";
        print"  textool -r t -i aventura.txt -o aventura.inf ";
        print"To extract dictionary strings from an INFORM source code: ";
        print"  textool -x d -i aventura.inf -o aventura.txt -l 1 ";
        print"To replace dictionary strings in an INFORM source code: ";
        print"  textool -r d -i aventura.txt -o aventura.inf -l 1 ";
        print"To extract all text and dictionary strings from an INFORM source code: ";
        print"  textool -x a -i aventura.inf -o aventura.txt -l 1 ";
        print"To replace all text and dictionary strings in a INFORM source code: ";
        print"  textool -r a -i aventura.txt -o aventura.inf -l 1 ";
        print"To extract all write-strings from a SUPERGLUS source code: ";
        print"  textool -x t -i aventura.txp -o aventura.txt -l 1 -c ;";
        print"To replace all write-strings in a SUPERGLUS source code: ";
        print"  textool -r t -i aventura.txt -o aventura.txp -l 1 -c ;";
       
def fileExists(f):
    try:
         file = open(f)
    except IOError:
         exists = 0
    else:
        exists = 1
    return exists

       
def main(argv):
   
    extract = False;
    replace = False;
    inputfile = "";
    outputfile= "";
    minwords = 3;
    maxwords = 0;
    odelimiter = "\"";
    cdelimiter = "\"";
    commentstyle = "!";
   
    try:
        opts, args = getopt.getopt(argv,"hx:r:i:o:l:m:c:",["help","extract","replace","input","output","min","max"]);
    except getopt.GetoptError, err:       
        usage();
        sys.exit(2);   

    for o, a in opts:   
   
        if o == "-x":
            extract = True;
            if a=="d":
               odelimiter ="'";
               cdelimiter ="'";
               commentstyle = commentstyle+"\""; # De este modo ignoramos apóstrofes en textos
            elif a=="a":
               odelimiter ="'\"";
               cdelimiter ="'\"";
           
        elif o=="-r":
            replace= True;
            if a=="d":
               odelimiter ="'";
               cdelimiter ="'";
               commentstyle = commentstyle+"\""; # De este modo ignoramos apóstrofes en textos
            elif a=="a":
               odelimiter ="'\"";
               cdelimiter ="'\"";
        elif o in ("-h", "--help"):
            usage();
            sys.exit();
        elif o=="-o":
            outputfile = a
        elif o=="-i":
            inputfile = a;
        elif o=="-l":
            minwords= int(a); 
        elif o=="-m":
            maxwords= int(a);
        elif o=="-c":
            print commentstyle;
            commentstyle=commentstyle.replace("!",a);
            print commentstyle;
        else:
            assert False, "unhandled option"

   
    if (extract==False and replace==False):
        print "Syntax error: Extract or replace mode must be selected.";
        usage();
        sys.exit();

   # Comprueba que existe el fichero de entrada...
    if (fileExists(inputfile)==0):
           print "Input file cannot be found.",inputfile;
           usage();
           sys.exit(2);
    if(outputfile==""):
           print"An output file is missing.";
           usage();
           sys.exit(2);
           
    file1 = inputfile;
    file2 = outputfile;

    inicio=0;
    final =0;
    caracter = "1";
    cadena = "";
    salir = 0;
    numchars=0;
    numstrings=0;
    actual_delimiter = "";
    ignore = 0;
   
    print "Processing: ",inputfile;
    # line = line[:-1] #chop off the newline
    if (extract==True):
            print "Extracting mode";
            f1 = open(file1,'rb');
            f2 = open(file2,'wb');
            # Vuelca todas las cadenas contenidas entre el caracter "
            while (caracter!=""):
                caracter = f1.read(1);               
                                     
                if(inicio==0 and ignore==0):
                        if (commentstyle.find(caracter)>-1): # Nos hemos topado con un comentario...
                                ignore=1;                           
                        elif (odelimiter.find(caracter)>-1):
                            inicio=1;
                            numstrings=numstrings+1;
                            cadena = cadena+caracter;
                            actual_delimiter = cdelimiter[odelimiter.find(caracter)];
                elif(inicio==1 and ignore==0): # Vuelca la cadena...
                        if (actual_delimiter.find(caracter)>-1):
                            cadena = cadena + actual_delimiter+"\r\n";
                           
                            if (cadena.lstrip().count(" ")>=(minwords-1)):
                                    if (maxwords==0):
                                            f2.write(cadena);
                                    elif (cadena.lstrip().count(" ")<=(maxwords-1)):
                                            f2.write(cadena);
                                    else:
                                        numstrings=numstrings-1;
                            else:
                                numstrings=numstrings-1;
                            cadena = "";
                            inicio=0;
                        else:
                            cadena = cadena + caracter;

                        numchars=numchars+1;
                elif ((caracter=='\r' or caracter=='\n')): # Los comentarios dejan de ser efectivos al finalizar una línea.
                       ignore=0;   
                       
            f1.close();
            f2.close();
           
    if (replace==True):
        print "Replace mode";       
        f1 = open(file1,'rb'); # Input
        f2 = open(file2,'rb'); # Output donde va contenido el código fuente...
        f3 = open("temp.txt","wb"); #temporal
        numstrings=0;
        vector=[];
        caracter=" ";
        inicio=0;
        ignore=0;
        actual_delimiter = "";
        # Extrae todas las cadenas de texto del fichero de entrada.
        while (caracter!=""):
                caracter = f1.read(1);
               
                if(inicio==0 and ignore==0):
                        if (commentstyle.find(caracter)>-1): # Nos hemos topado con un comentario...
                                ignore=1;                           
                        elif (odelimiter.find(caracter)>-1):
                            inicio=1;
                            numstrings=numstrings+1;
                            cadena = cadena+caracter;
                            actual_delimiter = cdelimiter[odelimiter.find(caracter)];
                elif(inicio==1 and ignore==0): # Vuelca la cadena...
                        if (actual_delimiter.find(caracter)>-1):
                            cadena = cadena + actual_delimiter;
                           
                            if (cadena.lstrip().count(" ")>=(minwords-1)):
                                    if (maxwords==0):
                                            vector.append(cadena);
                                    elif (cadena.lstrip().count(" ")<=(maxwords-1)):
                                            vector.append(cadena);
                                    else:
                                        numstrings=numstrings-1;
                            else:
                                numstrings=numstrings-1;
                            cadena = "";
                            inicio=0;
                        else:
                            cadena = cadena + caracter;

                        numchars=numchars+1;
                elif ((caracter=='\r' or caracter=='\n')): # Los comentarios dejan de ser efectivos al finalizar una línea.
                       ignore=0;
                       
        caracter = " ";
        numstrings=0;
        inicio=0;
        actual_delimiter = "";
        # Reemplaza todas las cadenas
        while (caracter!=""):
                caracter = f2.read(1);
               
                if(inicio==0 and ignore==0):
                        if (commentstyle.find(caracter)>-1): # Nos hemos topado con un comentario...
                                ignore=1; 
                                f3.write(caracter);                               
                        elif (odelimiter.find(caracter)>-1):
                            inicio=1;
                            numstrings=numstrings+1;
                            cadena = cadena+caracter;
                            actual_delimiter = cdelimiter[odelimiter.find(caracter)];
                        else:
                            f3.write(caracter);
                elif(inicio==1 and ignore==0): # Vuelca la cadena...
                        if (actual_delimiter.find(caracter)>-1):
                            cadena = cadena + actual_delimiter;
                           
                            if (cadena.lstrip().count(" ")>=(minwords-1)):
                                    if (maxwords==0):
                                            f3.write(vector[numstrings-1]);
                                    elif (cadena.lstrip().count(" ")<=(maxwords-1)):
                                            f3.write(vector[numstrings-1]);
                                    else:
                                        numstrings=numstrings-1;
                                        f3.write(cadena);
                            else:
                                numstrings=numstrings-1;
                                f3.write(cadena);
                               
                            cadena = "";
                            inicio=0;
                        else:
                            cadena = cadena + caracter;

                        numchars=numchars+1;
                elif ((caracter=='\r' or caracter=='\n')): # Los comentarios dejan de ser efectivos al finalizar una línea.
                       ignore=0;
                       f3.write(caracter);
                else:
                    f3.write(caracter); # Texto dentro de los comentarios...
               
                numchars=numchars+1;
        f1.close();
        f2.close();
        f3.close();
       
        shutil.copyfile(file2,"fuente.backup");
        shutil.copyfile("temp.txt",file2);
       
    print "Finished (",numchars," characters processed,",numstrings," strings found)";

if __name__ == "__main__":
    main(sys.argv[1:])
[/spoiler]



Un saludo.

_________________
---
# S a i m a z o o m # http://www.aliensuavito.com manoparlante.blogspot.com @lecambre ALIENsoft (KNO&KMBR&DLA)


Última edición por saimazoom el 13 Jun 2009 12:15, editado 4 veces en total

Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 12 Jun 2009 08:52 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 18 Mar 2004 19:26
Mensajes: 1458
Ubicación: Barcelona
¿Sería posible además, sacar textos de una aventura en inglés del código fuente, traducirlos aparte al castellano y luego volverlos a colocar en el código fuente?

_________________
http://xaviercarrascosa.com/ficcion-interactiva/


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 12 Jun 2009 10:16 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 May 2004 10:50
Mensajes: 884
Claro. El script no distingue el idioma, es capaz de extraer y reemplazar texto entre comillas dobles (textos) y entre comillas simples (palabras de diccionario) de cualquier fichero. El idioma de lo que haya dentro no es importante. En esta versión he añadido además que si le pedimos que busque palabras de diccionario no las extraiga de dentro de cadenas de texto, por ejemplo:

object test "test_object"
with name 'test' 'prueba' 'objeto', ! An object for 'testing' purposes
with description "That's a test object named 'test_object'.";

Si lo pasamos por la extracción de palabras de diccionario (-x d)
obtendremos:

'test'
'prueba'
'objeto'

Lo que si es importante es que las cadenas de texto que insertemos encajen en el mismo orden que en el fichero de donde se extrajeron. La sustitución se hace desde la primera cadena que encuentra hasta la última. Por eso es recomendable no tocar el código fuente hasta que no se haya terminado de corregir los textos. También hay que tener cuidado que al corregir el texto no modificar los delimitadores (algo que puede ocurrir muy fácilmente en Word si no prestamos atención).

Un saludo.

grendelkhan escribió:
¿Sería posible además, sacar textos de una aventura en inglés del código fuente, traducirlos aparte al castellano y luego volverlos a colocar en el código fuente?

_________________
---
# S a i m a z o o m # http://www.aliensuavito.com manoparlante.blogspot.com @lecambre ALIENsoft (KNO&KMBR&DLA)


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 12 Jun 2009 10:29 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 18 Mar 2004 19:26
Mensajes: 1458
Ubicación: Barcelona
Vaya, es excelente. Esperaré a la versión EXE porque yo de Python no se nada, y lo probaré para corregir los textos de algunas de las aventuras que he hecho, y si veo que va bien igual me animo a traducir algo del inglés. Entiendo que sólo sirve para código fuente de I6, no de I7, ¿verdad?

_________________
http://xaviercarrascosa.com/ficcion-interactiva/


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 13 Jun 2009 08:27 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 10 Mar 2004 11:58
Mensajes: 1817
Ubicación: Madrid
Muchas gracias Saimazoom. Esto es algo que venia haciendo falta desde hace mucho. Me va a venir de perlas.
Saludos

_________________
_/ /\ R e \_


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 13 Jun 2009 10:50 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 Sep 2004 09:33
Mensajes: 1100
Hola a todos,

Creo que ya lo hemos hablado alguna vez, pero JIF tiene esa característica desde hace muuchos años.

De todas formas, ¡buen trabajo!

Saludetes
Mapache


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 13 Jun 2009 12:02 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 May 2004 10:50
Mensajes: 884
Es cierto, pero yo quería algo más configurable y que pudiera llamarse desde linea de comandos. Además JIF duplica las cadenas en el fichero (imagino que para conocer la cadena original) y no se cómo funcionará con un corrector automático como el de Word, tampoco puedes especificar una longitud mínima (por ejemplo para no volcar nombres cortos), ni permite volcar sólo las palabras de diccionario (muy útil en traducciones).

En otro orden de cosas: ¿ Hay algún editor que esté bien para inform ? que tenga autocompletar y se sepa la sintaxis de las funciones, que cuando escribas el nombre de un objeto y presiones '.' te liste las propiedades del objeto, compatible con informate, que soporte diferentes estilos de coloreado de sintaxis (algo como el editor del visual studio). Wide ya lo probé pero la versión que estuve probando no era estable, no me dejaba cambiar ni los colores ni las fuentes y no sabía como configurarlo para la peculiar sintaxis de informate.

Un saludo.

mapache escribió:
Hola a todos,

Creo que ya lo hemos hablado alguna vez, pero JIF tiene esa característica desde hace muuchos años.

De todas formas, ¡buen trabajo!

Saludetes
Mapache

_________________
---
# S a i m a z o o m # http://www.aliensuavito.com manoparlante.blogspot.com @lecambre ALIENsoft (KNO&KMBR&DLA)


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 13 Jun 2009 15:55 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 10 Sep 2004 00:17
Mensajes: 3037
Ubicación: Chile
saimazoom escribió:
En otro orden de cosas: ¿ Hay algún editor que esté bien para inform ? que tenga autocompletar y se sepa la sintaxis de las funciones, que cuando escribas el nombre de un objeto y presiones '.' te liste las propiedades del objeto, compatible con informate, que soporte diferentes estilos de coloreado de sintaxis (algo como el editor del visual studio).


JIF tiene de todo (inluyendo compatibilidad con InformATE) pero NO tiene auto completar.

¿Algún editor tiene auto completar para Inform?

_________________
[Incanus]
El Escritorio - Blog Aventurero y Literario


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 13 Jun 2009 16:05 
Desconectado
Archivero
Archivero

Registrado: 19 Nov 2008 12:32
Mensajes: 268
deberiamos hacer un tabla con las posibilidades de cada uno.

_________________
I7 Spanish / Notas de desarrollo


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 14 Jun 2009 08:33 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 May 2004 10:50
Mensajes: 884
JIF tiene de todo (inluyendo compatibilidad con InformATE) pero NO tiene auto completar.

JIF es el que utilizo, de hecho el menú de insertar nuevo lo traduje yo, pero para aventuras largas se queda corto. El árbol de objetos es una buena idea, pero se hace un lío con la declaración de clases si un objeto pertenece a más de una. Aunque es un editor que me encanta y es una lástima que su sucesor cuente con menos opciones y no funcione tan bien.

Citar:
¿Algún editor tiene auto completar para Inform?

_________________
---
# S a i m a z o o m # http://www.aliensuavito.com manoparlante.blogspot.com @lecambre ALIENsoft (KNO&KMBR&DLA)


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 17 mensajes ]  Ir a página 1, 2  Siguiente

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM