2012-02-11 4 views
0

게시판에 지정된 PDF를 자동으로 첨부하는 스크립트가 있습니다 (BibDesk). appscript-RB를 사용하여 다음 코드가 완벽하게 작동합니다 :MacTypes :: FileURL을 appscript-ruby에서 MacRuby ScriptingBridge로 다시 작성

BibDesk = Appscript.app('BibDesk') 
selection = BibDesk.document.selection.get[0] 
f = MacTypes::FileURL.path(curfile) 
selection[0].linked_files.add(f,{:to =>Selection[0]}) 
selection[0].auto_file 

이 MacRuby을 위해 그것을 다시 시도, 내가 해낸 다음

framework 'Cocoa' 
framework 'ScriptingBridge' 

file=NSURL.fileURLWithPath("file:///Users/Stian/Downloads/Telearn.pdf") 
dt=SBApplication.applicationWithBundleIdentifier("edu.ucsd.cs.mmccrack.bibdesk") 
d= dt.documents[0].selection[0] 
d.linkedFiles.add(file,[:to=>dt.documents[0].selection[0]]) 

그러나, 이것이 내가이 가정입니다 MacRuby을 (충돌 또한 잘못 되었기 때문에). 난 그냥 얻을 :

84829 abort  macruby attach_bibdesk.rb 

어떻게 적절한 MacRuby ScriptingBridge 형식으로 appscript 루비를 다시 작성할 수 있습니까?

framework 'Cocoa' 
framework 'ScriptingBridge' 

file_path = NSURL.fileURLWithPath("/Users/Stian/Downloads/Telearn.pdf") 
bib_desk = SBApplication.applicationWithBundleIdentifier("edu.ucsd.cs.mmccrack.bibdesk") 
selected_doc = bib_desk.documents.first.selection.first 
bib_desk.add(file_path, to:selected_doc) 

파일 경로 선언이 문제의 이유가 될 수 있지만, 잘 모르겠어요 :

답변

1

이 작동합니다!

+0

완벽한, _so_ 많이 감사합니다! 그게 뭔지 : selected_doc, 나는 루비 구조를 본 적이 없어. 해시 => 또는? –

+1

'bib_desk.add (file_path, to : selected_doc)'는 키워드 인자 **를 가진 ** 메소드이고, 이것은 Objective-C에서 오는 것입니다; 해시가 아니에요! Ruby 2.0에는 키워드 인자도 있습니다. _PS : 어떤 메소드가 Macruby의 Object에 적용 가능한지 알아 내기 위해'object.methods (true, true) - Object.new.methods'를 사용할 수 있습니다. 이것은 당신이 Macruby를 즐기기를 희망하는 모든 objective-C 메소드를 제공합니다! ;-) –