Descargo de responsabilidad: esto no es tanto una pregunta sino una respuesta a una pregunta. Pensé en compartir esto en una entrada de blog, pero puede que no sea el tipo de truco del que estar orgulloso. Entonces:
En el fondo, he estado buscando una manera de incrustar flujos de trabajo JMP en un diario para que, cuando haga clic en un botón en una demostración, aparezca un nuevo flujo de trabajo, ya lleno de pasos. Tengo la costumbre de compartir diarios después de las demostraciones, por lo que quería que el flujo de trabajo estuviera integrado en el diario en lugar de tener que lidiar con decirle a la gente que "descomprima todo el contenido en una sola carpeta...".
Aquí hay un script que hace eso. En resumen: el script solicita un nombre de archivo, luego crea JSL para recrear ese archivo en el escritorio del usuario y abrirlo. Luego, el guión se copia en el portapapeles, para poder ponerlo en un botón de un diario. Lo probé con algunos archivos .jmpflow y .jmpdoe y funciona con todos los que lo probé.
Aquí está el guión. Si hay un mejor enfoque o un mejor lugar para compartir esto, hágamelo saber.
//Create a pasteable script to recreate a jmpflow (or jmpdoe) file
//useful for embedding in demo journals
//v0.1
//Jed Campbell
//10/11/23
Names Default To Here (1);
nw = new window ("File Embed Tool",
Button Box( "Embed File into a Script",
//get file name/path
path = Pick File();
fname = Word( -1, path, "/" );
//load into memory
t = Load Text File( path );
//make quotes into escaped quotes
u = Substitute( t, "\!"", "\\!!\!"" );
//chunk together JSL into a string on clipboard
codea = "Save Text File (\!"$DESKTOP/"||fname||"\!", \!"" || u || "\!");";
codeb = "\!nOpen (\!"$DESKTOP/" || fname || "\!");";
script = codea || codeb;
Set Clipboard( script );
//msg user
Caption( "Script copied to clipboard." );
Wait( 1.5 );
Caption( remove );
)
);Ese es un truco inteligente, @Jed_Campbell ! Si quisiera mantener los archivos fuera de la vista, podría usar $TEMP en lugar de $DESKTOP y eso daría la apariencia de iniciarse directamente desde el diario.