0 votes

AppleScript bug when using Myriad Tables Library: "types" is replaced with "type"

J'ai téléchargé la bibliothèque de scripts AppleScript Myriad Tables Lib v1.0.8 depuis ici.

Exécutez le code suivant, et vous remarquerez que le code s'exécutera sans erreur :

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

Maintenant, décommentez la toute première ligne de ce code :

use script "Myriad Tables Lib" version "1.0.8"

Une fois que vous compilez votre code, la ligne suivante :

set theTypes to anItem's types()

changer automatiquement en :

set theTypes to anItem's type {}

Le problème est que types est changé en type. L'effet est que ce code ne s'exécute plus.

Est-ce que quelqu'un connaît un contournement, ou comment empêcher cela de se produire ?

OS X El Capitan, version 10.11.6.

0voto

rubik's sphere Points 4760

Pour contourner ce conflit de terminologie, utilisez la ligne suivante :

définir lesTypes comme |types()| de unItem

Voici plus d'informations (à partir de cette page web) :

Vous pouvez forcer un nom de variable illégal à être légal en le entourant de barres verticales, également connues sous le nom de "pipes".

L'effet réel des pipes est d'indiquer à AppleScript de suspendre ses règles d'analyse au moment de la compilation et de transformer ce qui se trouve à l'intérieur des pipes en un jeton. La principale raison pour laquelle c'est vraiment utile est d'éviter un conflit entre un nom de jeton et un terme déjà utilisé.

Remarque :

Un nom de variable entouré de pipes est sensible à la casse. AppleScript ne modifiera pas la casse des noms entre pipes après la compilation.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X