2007/09/05

RubyOSA Finder

rubyosa-0.4.0 で Finder アイテムを獲得する奴の書き直し
http://www.midore.net/daybook/2007/04/1176460414.html

require 'rbosa'
OSA.utf8_strings = true
finder = OSA.app('Finder')

def folds(fold)
  print "Folder #{fold.name}\n"
  return nil if fold.get.items.empty?
  # if fold.get.items.size >= 20

  fold.get.files.each{|i| puts "File  #{fold.name}/#{i.name}" }
  fold.get.items.each{|i| folds(i) if i.get.class.name == "OSA::Finder::Folder" }
end

def desktopitems(obj)
  obj.each{|x|
    case x.get.class.name
    when /Disk/ : print "Disk:: #{x.name}\n" # need HDD mount
    when /Folder/ : folds(x)
    when /File/ : print "File  #{x.name}\n"
    end
  }
end

print "==Desktop's Folders and Files==\n"
desktopitems(finder.items)
print "==" 


結果
==Desktop's Folders and Files==
File finderitems.rb
File get_properties.rb
File rbosa_finder.txt
Folder xxx
File xxx/1.txt
Folder zzz
File zzz/hoge.rb
Folder ddd
File ddd/finder.rb
File ddd/untitled.rb
Folder 名称未設定フォルダ
==

++ memo ++
システム環境 セキュリティーFileVault 「切」にしていないと RubyOSA 動かない。

OS X 10.4.10 FInder.app Version

tell application "Finder"
  version
end tell

# => "10.4.7"

--imported_from
http://www.midore.net/daybook/2007/09/1188965456.html

+++ 追記 +++
2010-02-06

関連する記事
"RubyOSA"ラベルがついた全ての記事