2 votos

En un AppleScript, ¿cómo puedo llamar/reutilización de una subrutina de otro AppleScript?

fragmento de 1a

on removeText(searchText, sourceText)
set prevTIDs to text item delimiters of AppleScript
set text item delimiters of AppleScript to searchText
set sourceText to text items of sourceText

set text item delimiters of AppleScript to ""
set sourceText to "" & sourceText
set text item delimiters of AppleScript to prevTIDs

return sourceText
end removeText

fragmento de 2a

on removeText(searchText, sourceText)
set prevTIDs to text item delimiters of AppleScript
set text item delimiters of AppleScript to searchText
set sourceText to text items of sourceText

set text item delimiters of AppleScript to ""
set sourceText to "" & sourceText
set text item delimiters of AppleScript to prevTIDs

return sourceText
end removeText

set theSentence to "I love Windows and I will always love Windows."
set theSentence to removeText("Windows", theSentence)

He encontrado esta subrutina (fragmento 1a) es útil en el fragmento de 2a y desea reutilizar llamando a su nombre. Busqué en google para howto. Entonces me salvó fragmento de 1a como /Users/henry/Library/Script\ Libraries/text.scpt y en el fragmento de 2a he sustituido

fragmento 1b

on removeText(searchText, sourceText)
set prevTIDs to text item delimiters of AppleScript
set text item delimiters of AppleScript to searchText
set sourceText to text items of sourceText

set text item delimiters of AppleScript to ""
set sourceText to "" & sourceText
set text item delimiters of AppleScript to prevTIDs

return sourceText
end removeText

con

fragmento 3

use script "text"

y tengo fragmento de 2b y entonces corrí fragmento 2b, pero tengo un error diciendo «script» doesn't understand the "removeText" message.

Referencia: "declaración de uso" (se refieren a la parte encontrar buscando en use script "Happy Fun Ball" en https://developer.apple.com/library/mac/documentation/applescript/conceptual/applescriptlangguide/reference/ASLR_control_statements.html)

Así que me fui a google y encontré uno, lo que sugiere que debo guardar fragmento de 1a como "una secuencia de comandos de la aplicación".

Referencia 2: en la parte inferior de https://developer.apple.com/library/mac/documentation/applescript/conceptual/applescriptlangguide/conceptual/ASLR_about_handlers.html

En ese ejemplo, es

fragmento 4

tell application "NonStayOpen"
launch
stringTest("Some example text.")
end tell

así que exportan fragmento de 1a como /Users/henry/Library/Script\ Libraries/text.app y escribió fragmento 2c

fragmento de 2c

tell application "text"
launch
set theSentence to "I love Windows and I will always love Windows."
set theSentence to removeText("Windows", theSentence)
end tell

Entonces corrí y consiguió un error {} doesn't match the parameters {searchText, sourceText} for removeText.

Después, he intentado en primer lugar para anexar removeText(searchText, sourceText) a fragmento de 1a (conseguir el fragmento de código 1c) y exportado a reemplazar /Users/henry/Library/Script\ Libraries/text.app pero tengo un error cuando se ejecuta, no;

en segundo lugar, para reemplazar removeText(searchText, sourceText) con removeText() en el fragmento de 1a (conseguir el fragmento de 1d) y exportado a reemplazar /Users/henry/Library/Script\ Libraries/text.app pero tengo un error cuando se ejecuta, fracasado.

En el fragmento de 2a, ¿cómo puedo llamar/reutilización de una subrutina (fragmento 1a) de otro AppleScript o "secuencia de comandos de la aplicación" (ver Referencia 2)?

2voto

adayzdone Puntos 1258

Guardar esto como text.scpt en las Bibliotecas de scripts de la carpeta

on removeText(searchText, sourceText)
    set {TID, text item delimiters} to {text item delimiters, searchText}
    set sourceText to text items of sourceText
    set text item delimiters of AppleScript to ""
    set sourceText to sourceText as text
    set text item delimiters to TID
    return sourceText
end removeText

Llamada así en otra secuencia de comandos:

set theSentence to "I love Windows and I will always love Windows."
tell script "text" to set theSentence to removeText("Windows", theSentence)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by: