Error de AppleScript al usar la biblioteca de tablas Myriad: "tipos" se reemplaza por "tipo"

0

Descargué la biblioteca de scripts AppleScript Myriad Tables Lib v1.0.8 de aquí .

Ejecute el siguiente código y notará que el código se ejecutará sin errores:

-- use script "Myriad Tables Lib" version "1.0.8"
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "AppKit"

on fetchStorableClipboard()
    set aMutableArray to current application's NSMutableArray's array() -- used to store contents
    -- get the pasteboard and then its pasteboard items
    set thePasteboard to current application's NSPasteboard's generalPasteboard()
    -- loop through pasteboard items
    repeat with anItem in thePasteboard's pasteboardItems()
        -- make a new pasteboard item to store existing item's stuff
        set newPBItem to current application's NSPasteboardItem's alloc()'s init()
        -- get the types of data stored on the pasteboard item
        set theTypes to anItem's types()
        -- for each type, get the corresponding data and store it all in the new pasteboard item
        repeat with aType in theTypes
            set theData to (anItem's dataForType:aType)'s mutableCopy()
            if theData is not missing value then
                (newPBItem's setData:theData forType:aType)
            end if
        end repeat
        -- add new pasteboard item to array
        (aMutableArray's addObject:newPBItem)
    end repeat
    return aMutableArray
end fetchStorableClipboard

Ahora, anule el comentario de la primera línea de este código:

use script "Myriad Tables Lib" version "1.0.8"

Una vez que compile su código, la siguiente línea:

set theTypes to anItem's types()

cambiará automáticamente a:

set theTypes to anItem's type {}

El problema es que tipos se cambian a tipo . El efecto es que este código ya no se ejecuta.

¿Alguien sabe una solución alternativa o cómo evitar que esto ocurra?

OS X El Capitan, versión 10.11.6.

    
pregunta rubik's sphere 16.05.2017 - 08:20

1 respuesta

0

Para evitar este conflicto de terminología, use la siguiente línea:

set theTypes to anItem's |types|()

Aquí hay más información (de esta página web ):

  

Puedes forzar que un nombre de variable ilegal sea legal si lo rodeas   Con barras verticales, también conocidas como "tuberías".

     

El efecto real de las tuberías es decirle a AppleScript que suspenda su   reglas de análisis en tiempo de compilación y convertir lo que está dentro de las tuberías en una   simbólico. La razón principal por la que esto es realmente útil es para evitar un conflicto.   entre un nombre de token y un término ya en uso.

Nota:

  

Un nombre de variable rodeado por tuberías distingue entre mayúsculas y minúsculas. AppleScript   no tocará el caso de los nombres en las tuberías después de la compilación.

    
respondido por el rubik's sphere 17.05.2017 - 09:55

Lea otras preguntas en las etiquetas