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

2

fragmento 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 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)

Encontré que esta subrutina (fragmento 1a) es útil en el fragmento 2a y desea reutilizarla llamando su nombre. Busqué en Google para el howto. Luego guardé el fragmento 1a como /Users/henry/Library/Script\ Libraries/text.scpt y en el fragmento 2a reemplacé

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 obtuve fragmento de código 2b y luego ejecuté el fragmento de código 2b, pero recibí un error al decir «script» doesn’t understand the “removeText” message.

Referencia: "declaración de uso" (consulte la parte encontrada buscando use script "Happy Fun Ball" en enlace )

Así que volví a Google y encontré uno que sugiere que debería guardar el fragmento 1a como "una aplicación de script".

Referencia 2: en la parte inferior de enlace

En el ejemplo de ese uno, es

fragmento 4

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

así que exporté el fragmento 1a como /Users/henry/Library/Script\ Libraries/text.app y escribí el fragmento 2c

fragmento 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

Luego lo ejecuté y obtuve un error {} doesn't match the parameters {searchText, sourceText} for removeText.

Luego, intenté agregar removeText(searchText, sourceText) al fragmento 1a (obteniendo snippet 1c ) y lo exporté para reemplazar /Users/henry/Library/Script\ Libraries/text.app , pero obtuve un error al ejecutar, falló;

en segundo lugar, para reemplazar removeText(searchText, sourceText) con removeText() en el fragmento 1a (obteniendo fragmento 1d ) y lo exportó para reemplazar /Users/henry/Library/Script\ Libraries/text.app pero se produjo un error al ejecutar, falló.

En el fragmento de código 2a, ¿cómo puedo llamar / reutilizar una subrutina (fragmento de código 1a) de otro AppleScript o "aplicación de script" (ver referencia 2)?

    
pregunta lsfalimis 17.06.2014 - 13:48

1 respuesta

2

Guarde esto como text.scpt en Bibliotecas de scripts 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

Llámalo así en otro script:

set theSentence to "I love Windows and I will always love Windows."
tell script "text" to set theSentence to removeText("Windows", theSentence)
    
respondido por el adayzdone 17.06.2014 - 15:59

Lea otras preguntas en las etiquetas