Я не использую Йоджимбо . Однако whose
фильтры AppleScript необходимо применять к множественному объекту. Хотя selection
это само по себе является перечень объектов, то selection-object
есть единое целое, поэтому не может быть принят на по whose
. items of selection
теоретически будет более подходящей коллекцией для фильтрации, но items
просто создаст разыменование, list
которое на самом деле также не может быть отфильтровано.
В других приложениях, которые используют selection-objects
, selection
свойство раздражает частичную разыменовку и поэтому не может фильтроваться whose
.
Если бы это было возможно length of its name
(то есть синтаксис, который будет использоваться в таком фильтре), недопустимое свойство для фильтрации.
К сожалению, исходя из того, как selection
работают другие приложения с похожим объектом, вам нужно будет выполнить итерацию по списку вручную.
Однако, если речь идет об эффективности, вот довольно эффективный способ сделать это, как показано на примере selection
объекта в Finder, который представляет собой список файлов и папок:
property Finder : application "Finder" to filterItems from (L as list) thru filter as handler into |L*| as list : null local L, |L*|, filter if |L*| = null then set |L*| to {} script filteredItems property array : L property fn : filter property list : |L*| end script tell the filteredItems to repeat with x in its array if fn(x) = true ¬ then set ¬ end of its list ¬ to x's contents end repeat return the list of filteredItems end filterItems on characterCount(x) set |name| to the name of x |name|'s length > 12 end characterCount filterItems from (Finder's selection) thru characterCount