Bug di AppleScript quando si utilizza Myriad Tables Library: "types" viene sostituito con "type"

0

Ho scaricato la libreria di script AppleScript di Myriad Tables Lib v1.0.8 da qui .

Esegui il seguente codice e noterai che il codice verrà eseguito senza errori:

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

Ora, annulla la prima riga di questo codice:

use script "Myriad Tables Lib" version "1.0.8"

Una volta compilato il codice, la seguente riga:

set theTypes to anItem's types()

cambierà automaticamente in:

set theTypes to anItem's type {}

Il problema è che tipi è stato modificato in tipo . L'effetto è che questo codice non viene più eseguito.

Qualcuno conosce una soluzione alternativa o come impedire che ciò si verifichi?

OS X El Capitan, versione 10.11.6.

    
posta rubik's sphere 16.05.2017 - 08:20
fonte

1 risposta

0

Per aggirare questo conflitto terminologico, usa la seguente riga:

set theTypes to anItem's |types|()

Ecco ulteriori informazioni (da questa pagina web ):

You can force an illegal variable name to be legal by surrounding it with vertical bars, also known as "pipes."

The real effect of pipes is to tell AppleScript to suspend its compile-time parsing rules and turn what's inside the pipes into a token. The main reason this is genuinely useful is to avoid a conflict between a token name and a term already in use.

Nota:

A variable name surrounded by pipes is case-sensitive. AppleScript will not touch the case of names in pipes after compilation.

    
risposta data 17.05.2017 - 09:55
fonte

Leggi altre domande sui tag