Eliminar filas vacías de un scriptTengo un script que crea un segundo script dentro de una tabla JMP, lo copia y lo pega en una ventana de script JMP para crear un script funcional. Debido a la naturaleza de cómo se logra esto, obtengo muchas filas vacías en el script finalizado y me gustaría eliminarlas. Reformat no funciona y mis intentos de REGEX y GLOBALREPLACE también fallan. ¿Alguien logró hacerlo?
Busqué aquí en busca de pistas pero todavía no estoy allí.
Creación de scripts para el editor de scripts (jmp.com)
Automatización y scriptingRe: Eliminar filas vacías de un scriptHe aquí una idea: se toma un script y básicamente se eliminan todos los saltos de línea y luego se reformatea el script.
El script reformateado realinea el código
Names Default To Here( 1 );
nw = New Window( "This is a script box",
sb = Script Box( "print(\!" Hello\!");
print(\!" Hello\!");
print(\!" Hello\!");
print(\!" Hello\!");
print(\!" Hello\!");", 300, 100 );
);
sb << Save Text( "$TEMP/Test.jsl" );
nw << close window;
intText = Load Text File( "$TEMP/Test.jsl" );
substitute into(intText,hextochar("0D"), " ");
nw = New Window( "This is a new script box",
sb = Script Box()
);
sb << Append Text( intText );
sb << reformat;
Re: Eliminar filas vacías de un scriptSi puedes vivir con el hecho de que también se eliminan todos los comentarios [como en el Editor de fórmulas], puedes usar la magia de Char o Parse :
myScript = Char(
Expr(
For( i = 1, i <= 5, i++,
// Print the value of i.
Print( i );
);
// End expression.
)
);
nw = New Window( "test", <<TYPE></TYPE>
<CODE class=" language-jsl">myScript = Parse( "/* Begin quote. */
For (i = 1, i <= 5, i++,
// Print the value of i.
Print(i);
);
// End expression.");
write(myscript)
by the way: via <CODE class=" language-jsl"><<TYPE><BR /> La nueva ventana es una ventana del Editor de scripts estándar, con la misma apariencia (por ejemplo, un botón de reproducción para ejecutar el script :)</img></TYPE>
Re: Eliminar filas vacías de un scriptRefiné un poco mi código, lo cual no es una solución perfecta, pero puede funcionar.
Dado

Vuelve

Names Default To Here( 1 );
nw = New Window( "This is a script box",
sb = Script Box( "print(\!" Hello\!");
print(\!" Hello\!");
print(\!" Hello\!");
// comment
print(\!" Hello\!");
// comment
print(\!" Hello\!");", 300, 100 );
);
sb << Save Text( "$TEMP/Test.jsl" );
nw << close window;
intText = Load Text File( "$TEMP/Test.jsl" );
substitute into(intText,hextochar("0D0D"), "\!n");
substitute into(intText,hextochar("0A0A"), " ");
substitute into(intText,hextochar("2F2F"), "\!n//");
nw = New Window( "This is a new script box",
sb = Script Box()
);
sb << Append Text( intText );
sb << reformat;Re: Eliminar filas vacías de un scriptGracias Jim y Hogi. Me sorprende lo complicado que es esto en realidad. Había pensado que algo que eliminara las incidencias de retornos de carro dobles hubiera funcionado en este caso. ¿Tal vez las declaraciones Regex funcionen en tablas JMP pero no en scripts?
ww = New Window( (names), << Script );
ed = ww[Script Box(1)];
Regex( ed, "\n\n", "", GLOBALREPLACE )
Re: Eliminar filas vacías de un scriptSí, claro, en JMP siempre hay 12 maneras de hacer lo que quieres hacer...
ww = New Window( "title", << Script );
ed = ww[Script Box(1)];
new window("helper", Button Box ("clean",
mytext = ed << get text;
ed << set text(Regex( mytext, "[\n\r]{2,}", "\n", GLOBALREPLACE ))))Re: Eliminar filas vacías de un scriptLos espacios en blanco que cambian de línea no son todos iguales, lo que puede causar algunos problemas. A veces, Words() puede ser una opción limpia para algo como esto
Names Default To Here(1);
nw = New Window("This is a script box",
H List Box(
Panel Box("Long Script",
sb1 = Script Box(
"print(\!" Hello\!");
print(\!" Hello\!");
print(\!" Hello\!");
// comment
print(\!" Hello\!");
// comment
print(\!" Hello\!");",
600,
500
);
),
sb2 = Script Box(, 600, 500)
)
);
// You can also clear tabs if you wish to \t (regex) or \!t (jmp)
Wait(1);
sb2 << Set Text(Regex(sb1 << get text, "[\r\n]+", "\!N", GLOBALREPLACE));
sb2 << reformat;
Wait(1);
sb2 << Set Text("");
Wait(1);
sb2 << Set Text(Concat Items(Words(sb1 << get text, "\!N"), "\!N"));
sb2 << reformat;
Wait(1);
sb2 << Set Text("");
Wait(1);
lines = sb1 << get lines;
empty = Loc(ls, "");
sb2 << Set Text(Concat Items(Remove(lines, As List(empty)), "\!N"));
sb2 << reformat;
En JMP

Reglas de sintaxis de JSL (jmp.com)
En expresiones regulares (normalmente)

Re: Eliminar filas vacías de un scriptjarmo
¡Excelente! Tuve que experimentar un poco, parece que había una pestaña que no reconocí de inmediato. Al final funcionó.
Wait(1);
sb2 << Set Text(Regex(sb1 << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
sb2 << reformat;
Re: Eliminar filas vacías de un scriptjarmo
Mejor aún, no necesito tener ventanas de script paralelas. Puedo hacer la eliminación en una sola ventana con esto. Nombro la ventana de script actual como eliminada y me pongo a trabajar. Gracias por la ayuda.
ed = ww[Script Box(1)];
Wait(1);
ed << Set Text(Regex(ed << get text, "[\r\t]+", "\!N", GLOBALREPLACE));
ed << reformat;