Как получить путь к выбранному в данный момент файлу в Finder с помощью rb-appscript в OSX Lion - PullRequest
0 голосов
/ 08 августа 2011

В OSX 10.6 я использовал следующий код, чтобы что-то сделать с каждым выбранным в данный момент файлом в Finder:

app('Finder').selection.get.each do |item|
  url =CGI::unescape(item.URL.get)
  puts url
  do_pdf(url[16..-1])
end

(запускается Keyboard Maestro).Это прекрасно работало, однако в OSX Lion поведение, похоже, изменилось.

selection.get по-прежнему возвращает правильное справочное приложение ('Finder'). Selection.get [0] => app "/ System/Library/CoreServices/Finder.app"disks["Home"]folders["stian"]folders["Downloads"]document_files["Comprehensive Examination (1) .doc "]

однако, когда я пытаюсьчтобы извлечь его с помощью URL.get, я получаю странное число: app('Finder').selection.get[0].URL.get => "file:///.file/id=6637683.2924283"

Как взять приведенную выше ссылку и получить путь POSIX в виде текстовой строки (/ Home / stian / Downloads / Комплексное обследование (1) .doc)?

Я могу получить текстовую версию всей ссылки следующим образом: app('Finder').selection.get[0].get.to_s => "app("/System/Library/CoreServices/Finder.app").disks["Home"].folders["stian"].folders["Downloads"].document_files["Comprehensive Examination (1).doc"]"

, поэтому я думаю, что я мог бы разобрать это вручную и построить путь POSIX, но этокажется очень громоздким и ломким.

Спасибо за любую помощь!

1 Ответ

2 голосов
/ 08 августа 2011

В Python это

app('Finder').selection.get(resulttype=k.alias)[0].path

Я думаю, в Ruby это будет

app('Finder').selection.get(:result_type=>:alias)[0].path
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...