10.5 Изменения

Эта статья описывает изменения в AppleScript и связанных инструментах в Mac OS X Leopard v10.5 и его обновлениях.

Поддержка Unicode

AppleScript теперь полностью основан на Unicode. Комментарии и текстовые константы в сценариях могут содержать любые символы Unicode, и вся обработка текста сделана в Unicode, таким образом, все символы сохраняются правильно независимо от предпочтений языка пользователя. Например, этот сценарий работает правильно в AppleScript 2.0, где это не имело бы в предыдущих версиях:

set jp to "日本語"
set ru to "Русский"
jp & " and " & ru -- returns "日本語 and Русский"

Больше нет различия между текстом не-Unicode и Unicode. Существует точно один текстовый класс, названный «текстом»: т.е. class of "foo" возвраты text. Это функционально эквивалентно прежнему Unicode text класс, таким образом, это может содержать любой символ Unicode и имеет две новых функции кроме того:

Соответствие text item delimiters теперь отношения considering и ignoring атрибуты, где предыдущие версии проигнорировали их. expansion атрибут больше не поддерживается.

Изменение во все-Unicode требовало изменения в read и write команды и как они имеют дело с текстовыми кодировками. Раньше, записали бы они string объекты с помощью основного кодирования и Unicode text объекты как UTF-16, если не проинструктировано иначе использование as параметр. Теперь, когда существует только один текстовый класс, read и write команды полагаются исключительно на as параметр для определения кодирования: без as параметр, as text, или as string, они используют основное кодирование; с as Unicode text, они используют UTF-16. Для самых надежных результатов при создании сценариев, которые будут работать и 2.0 и пред2.0, всегда указывайте кодирование явно с помощью as text или as Unicode text, как надлежащий. [4421553]

Совместимость

Для совместимости с pre-2.0 AppleScript, string и Unicode text все еще определяются, но считаются синонимами для text. Например, все три из этих операторов имеют тот же эффект:

someObject as text
someObject as string
someObject as Unicode text

Кроме того, text, string, и Unicode text все выдержит сравнение как равный. Например, class of "foo" is string истина, даже при том, что class of "foo" возвраты text. Для приложений все еще возможно различить эти три различных типов, даже при том, что сам AppleScript не делает.

Теперь, когда AppleScript сохраняет все символы правильно во всем мире, это также более строго о тексте, используемом в сценариях. Синтаксис AppleScript использует несколько символов неASCII, таких как «» и «к». Эти символы должны быть введены точно, как Руководство по Языку AppleScript описывает. Для совместимости с азиатскими национальными кодировками «» и «» позволяются как синонимы для “«” и “»”, так как последние не существуют в некоторых азиатских кодировках.

Поскольку весь текст является текстом Unicode, сценарии теперь всегда получают текстовое поведение Unicode. Это может отличаться от прежнего string поведение для некоторых зависимых от локали операций, в частности word элементы. Для получения того же поведения с 2,0 и пред2.0 добавьте явное as Unicode text приведение, например, words of (someText as Unicode text).

Поскольку text item delimiters теперь уважение considering и ignoring атрибуты, они теперь нечувствительны к регистру по умолчанию. Раньше, они были всегда чувствительны к регистру. Для получения того же поведения с 2,0 и пред2.0 добавьте явное considering case оператор.

Поскольку сценарии AppleScript 2.0 хранят весь текст как Unicode, любое текстовое количество констант как использование прежнего Unicode text класс, который будет работать с любой версией AppleScript назад к версии 1.3. Сценарий, содержащий символы только для Unicode, такие как арабский или тайский язык, будет работать, но не будет правильно доступным для редактирования pre-2.0 AppleScript использования: символы только для Unicode будут потеряны.

Использование нового id свойство требует AppleScript 2.0.

Объекты приложения

application объекты в AppleScript имеют некоторые новые функции, разработанные для сокращения потребности в неловких или неясных обходных решениях. Другими словами, возможности не являются новыми, но они теперь непосредственно поддерживаются и проще использовать.

Кроме того, существует несколько изменений в поведении приложения сделать их проще иметь дело с:

Совместимость

Использование встроенных свойств приложения отступит к отправке события к приложению в более старых версиях AppleScript, но приложение может не обработать их то же или обработать их вообще. (Большинство приложений обработает name, version, и frontmost; id и running являются редкими.) Другие новые функции выше требуют AppleScript 2.0.

Scriptability и VoiceOver

Утилита AppleScript и Установка Действий Папки являются теперь scriptability scriptable, и Редактора сценариев, был улучшен благодаря улучшениям Сценариев Какао. Все три приложения теперь Осведомлены о голосе за кадром.

Предпочтения сети Scriptable

Сетевые предпочтения теперь доступны через сценарии использования нового комплекта в Системных событиях, где они были ранее только scriptable через доступность. Сценарий может проверить различные сетевые настройки и может сказать службе соединяться или разъединяться. Например, следующий сценарий определяет местоположение службы PPPoE в текущем расположении и говорит ему соединяться, если оно существует.

tell application "System Events"
    tell network preferences
        tell current location
            set aPPPoEService to a reference to (first service whose kind is 10)
            if exists aPPPoEService then
                connect aPPPoEService
            end if
        end tell
    end tell
end tell

Поддержка командной строки

AppleScript теперь позволяет # как комментарий к концу маркера строки, в дополнение к --. Это означает, что можно сделать простой текст сценарием AppleScript в исполнимую программу Unix путем начала его со строки #!/usr/bin/osascript и предоставление его выполняет разрешение. Для получения дополнительной информации osascript использование, включая то, как получить доступ к параметрам командной строки из сценария, видит osascript(1) страница справочника. [2468788]

Существует инструмент командной строки для отображения скомпилированных сценариев как текста, /usr/bin/osadecompile. [4501123]

osascript(1) и osacompile(1) теперь правильно обработайте текстовые сценарии, закодированные как UTF-8, в дополнение к UTF-16 и основному кодированию. Если сценарий не является ни UTF-8, ни UTF-16, это, как предполагают, кодируется с помощью основного кодирования.

Совместимость

Скомпилированные сценарии то использование # будет обычно работать в пред2.0 системах, и, если отредактировано выведет на экран использование --. Исполнимое текстовое использование сценариев #!/usr/bin/osascript как выше не будет работать на пред2.0 системах, начиная с # будет считаться синтаксической ошибкой.

Другие улучшения

Редактор сценариев

  • Средство просмотра словаря позволяет определениям классов показывать все свойства и элементы, которые они наследовали от других классов. Для включения и выключения этого используйте установку «Show inherited items in dictionary viewer» в Общих предпочтениях. [4950321]

  • Редактор сценариев может показать вкладки, возвраты каретки и переводы строки в текстовых константах как escape-последовательность, а не литеральная вкладка, возврат каретки или перевод строки. Для включения и выключения этого используйте установку «Escape tabs and line breaks in strings» в предпочтениях Редактирования. [4911918]

  • Когда выполнено из документа сценария в Редакторе сценариев, path to me возвратит расположение файла документа. Если документ не был сохранен, path to me возвратит расположение Редактора сценариев. [3148582, 5363659]

Системные события

  • disk класс имеет server и zone свойства для использования с объемами AppleShare. [3554247]

  • file класс имеет a default application свойство, соответствуя info for default application свойство и Средство поиска open with начинание Получает Информацию [4796981]

  • Системные события имеют a downloads folder свойство. [5255406]

  • Системные события имеют новый Комплект Безопасности, управляющий различными настройками от области Параметра безопасности. [4358335]

  • process класс имеет a bundle identifier свойство. [4782866]

  • process класс имеет architecture свойство, указывающее архитектуру процессора того процесса. [5237251]

  • Комплект Списка свойств позволяет создавать новые файлы списка свойств и элементы списка свойств. [4728058, 5392953]

  • Если a XML element объект имеет атрибут «имени» или «ID», он будет отражен в элементе name или id свойство, соответственно. XML element named ... и XML element id ... будет также работать. [4437103, 4441834]

События изображения

  • События изображения поддерживают изображения RAW. [4250666]

  • pad команда имеет дополнительное with pad color параметр. [5234464]

  • save команда имеет дополнительное with compression level параметр для указания уровня сжатия JPEG. [3614780]

Исправления ошибок

AppleScript

  • delay команда использует меньше CPU. [3178086]

  • Невозможные объектные спецификаторы в математических выражениях, такой как 1 + character 2 of "9", произведите ошибку вместо случайного результата. [4029175]

  • Числовые пределы для repeat циклы принимают вещественные числа; они будут округлены к целым числам. [4215670]

  • Объектные спецификаторы кроме application и date спецификаторы, в частности alias "..." и POSIX file "...", не оценены во время компиляции и будет оставлен точно, как первоначально введено. [4444698]

  • AppleScript больше не ограничивает использование памяти сценария 32 МБ. [4511477]

  • Подсчет абзацев пустой строки дает результат нуля. [4588706]

  • Литералы необработанных данных («data ...») больше не ограничиваются 127 байтами. [4986420]

Стандартные дополнения

  • choose from list правильно измеряет диалоговое окно, если дали больше чем 2 000 элементов. [4102349]

  • display dialog правильно измеряет диалоговое окно, если дали больше чем 2 000 строк текста. [4314839]

  • display dialog правильно дисплеи «^0», «^1», «^2», и «^3» в тексте. [4831383]

  • Сценарий может не сказать удаленное приложение do shell script. [4241641]

Редактор сценариев

  • Редактор сценариев точно сообщает о позиции ошибок в сценариях, содержащих азиатские символы. [3457168]

  • Окно Library правильно обрабатывает приложения с азиатскими именами. [5080569]

Системные события

  • disk объекты различают диски с идентичными именами. [4141496]

  • Установка file type и creator type свойства работают правильно над системами Intel. [4788442]

  • Установка focused свойство a UI element работы. [4756520]

  • UI element объекты имеют более информативные имена. [4886664]

  • frontmost свойство process класс всегда будет ложью для приложений элемента UI, таких как Системные события. Это означает это first process whose frontmost is true возвратит то же приложение как path to frontmost application. [4175274, 5100612]

  • process класс сообщит о корректном имени для комплекта приложений AppleScript. [4381260]

  • Попытка использовать команды GUI Scripting, когда Универсальный Доступ будет прочь, произведет более информативное сообщение об ошибке. [4774412]

Другие

  • Производительность Событий базы данных была улучшена. [4124666]

  • Действия папки были повторно спроектированы для улучшения их устойчивости и производительности. [3663310, 3693421, 4614337]

  • Установка Действий папки позволяет присоединять пакет сценария как действие. [4036743]

  • События изображения обрабатывают файлы, имя которых содержит «/» правильно. [4275156]

Разработчик отмечает

Сценарии определений (sdefs)

AppleScript может теперь считать sdef приложения непосредственно. Это означает, что приложение с только sdef больше не должно запускаться для получения его терминологии сценариев. [4569425]

Существует несколько изменений в самом формате sdef; посмотрите sdef (5) страница справочника для подробных данных. В частности sdefs теперь поддерживают использование XInclude. Приложения, обрабатывающие sdefs, должны быть подготовлены обработать их. 10.4 форматов sdef все еще поддерживаются, но необходимо мигрировать, когда у Вас есть возможность.

Изменения API

Несколько Open Scripting Architecture (OSA) APIs имеют новые замены, главным образом предназначенные для улучшенной обработки содержания сценария Unicode. За исключением отмеченного, новый APIs доступен в версии 10.5 Mac OS X и позже, и старый APIs все еще доступен и поддерживается, хотя они не поддерживают новую функциональность. Для дополнительных подробных данных посмотрите Открыть Scripting Architecture Reference.

старый

новый

OSAGetSource, OSADisplay

OSACopySourceString, OSACopyDisplayString

Они возвращают их вывод как a CFAttributedStringRef, что означает, что они могут обработать разработанный текст Unicode, где более старые два не могут. Если компонент языка не поддерживает OSACopySourceString или OSACopyDisplayString непосредственно, к вызовам им пройдут OSAGetSource и OSADisplay, соответственно.

ASGetSourceStyles, ASSetSourceStyles

ASCopySourceAttributes, ASSetSourceAttributes

Они используют CFArray CFDictionaries атрибутов для применения к CFAttributedStringRef возвращенный OSACopySourceString и OSACopyDisplayString.

OSAGetAppTerminology

OSACopyScriptingDefinition

OSACopyScriptingDefinition доступно в Mac OS X 10.4 и позже; OSAGetAppTerminology не доступно в 64-разрядном.

OSALoadFile и OSADoScriptFile теперь правильно обработайте текстовые сценарии, закодированные как UTF-8. [4490939]

Различное OSADebugger APIs, отмеченный как “не реализованный” в течение некоторого времени, был полностью удален. [3918369]

Сценарии дополнений

Сценарии дополнений могут быть записаны с помощью новой архитектуры, которую и проще записать и улучшает производительность. Посмотрите Дополнения Сценариев для Mac OS X для подробных данных. [4236732]

Дополнительный загрузчик сценариев будет искать каталог, указанный переменной окружения DYLD_FRAMEWORK_PATH. XCode устанавливает эту переменную в каталог продукта сборки при выполнении исполнимой программы что означает, что можно выполнить и отладить дополнительный проект сценариев непосредственно от XCode без первой установки дополнения сценариев. [5027805]