Tengo un AppleScript .scpt archivo, provocado por una combinación de teclas en FastScripts.la aplicación, que funciona como un diccionario de sinónimos. El script busca la palabra seleccionada en una pre-lista formateada, y, si la palabra se encuentra en esta lista, se muestra el sinónimos de esta palabra para el usuario1.
Esta lista está contenida en un texto sin formato (.txt) archivo. La lista ya está formateado en el AppleScript list
formato. Me gustaría que mi .scpt archivo para ser capaz de aceptar este texto como una verdadera lista2.
Es importante tener en cuenta que el .txt archivo contiene 2,5 millones de palabras3.
Esta es la razón por la que yo no soy simplemente copiar el contenido de la .archivo txt en el .scpt archivo en sí, a pesar del hecho de que el archivo de texto es estática del 100% y nunca va a ser alterado. Insertar el texto directamente en mi script traerá consigo un considerable retraso y lentitud como puedo editar y compilar mi .scpt archivo en el Editor de secuencias de Comandos.app.
Editor De Secuencias De Comandos.la aplicación se congeló cada vez que traté de leer la .archivo txt. El problema es que el Editor de secuencias de Comandos lee en la memoria de un determinado archivo de texto en su totalidad, en lugar de la transmisión de los contenidos de una manera más eficiente. Así que, se me rompió este archivo de texto en 10 pequeños archivos de texto4, cada uno de los nuevos .archivo txt que contiene alrededor de 250.000 palabras.
En 250.000 palabras, por supuesto, los archivos de texto son todavía muy grandes (por cualquier estándar).
Aquí es un (severamente condensada) ejemplo de lo que el contenido de cada archivo de texto se ve como:
{{"exaltation","accolade","adulation","advance","advancement"},{"exalted","winnowing","winsome"},{"exam","audition","libro azul","examen","examen","final","examen","prueba","prueba","tripos","viva","escrito","examen escrito"},{"examen","La prueba de papanicolaou","método Socrático","emisión","análisis","diagnóstico anatómico","evaluación","trabajo","escrito","escrito examination"},{"examine","air","analyze","appraise","archetype","asleep","assess","canvass","case"},{"examiner","analyst","analyzer","asker"},{"examining","analytic","examinational","exploratory"},{"example","admonishment","admonition","alarm","archetype"},{"exasperate","bedevil","vex","trabajo up","worry"},{"exasperated","aggravated","amplified","angry","annoyed"},{"exasperating","annoying","bothering","bothersome"}}
Como se puede ver, el contenido del archivo de texto es una lista anidada5 que está organizado de la misma manera que AppleScript formatos de una list
. Cada archivo de texto no contiene saltos de línea y párrafos.
Estoy buscando un método para obtener esta lista en mi AppleScript, con la menor latencia posible6. Esta es la razón por la que me pre-formateado. Así, la velocidad es la clave.
Notas a pie de página:
1.Mi diccionario de sinónimos secuencia de comandos es similar a la incorporada en el diccionario de sinónimos característica que existe en Microsoft Word. Una diferencia notable es que mi script funciona todo el sistema.
2.Por cierto la lista, me refiero a que puedo llamar, por ejemplo, item 12
de esta lista más adelante en mi AppleScript.
3.Mi fuente para el diccionario de datos es Grady Ward "Moby" diccionario de Sinónimos. He encontrado esta base de datos a partir de esta respuesta: Buscando Sinónimos de Datos de Stack Overflow
4.Tuve que usar Hex Demonio.aplicación para cortar desde el archivo de texto y pegarlo en un nuevo archivo de texto. No pude editar el archivo en el editor de texto.aplicación, sin TextEdit congelación en mí.
5.El exterior de la lista contiene cada entrada del diccionario de sinónimos. El interior de las listas contienen todos los sinónimos para esa entrada. El primer elemento de cada lista interna es el título de la entrada. Tanto el exterior de la lista y cada lista interna están ordenados por orden alfabético (con la excepción de la primera palabra de cada lista interna, porque, de nuevo, esta palabra es el título de la entrada).
6.Entiendo que incluso el método más rápido todavía tiene varios segundos de latencia, ya que el archivo de texto es tan grande.