背景
ブラウザで選択したテキストをHTMLとして、取り出したく作ってみました。
が、ブラウザでそもそもそういうことが出来たりしてる気も。。。
何はなくともCocoaフレームワークの指定
framework 'Cocoa'
ペーストボードを取得
OSXではペーストボードと呼んでる臭い
p = NSPasteboard.generalPasteboard;
HTML形式で格納されているデータを取り出すには
data = p.dataForType(NSHTMLPboardType);
if( data )
attrString = NSString.alloc.initWithData(data,encoding:NSUTF8StringEncoding);
puts attrString;
end
リッチテキスト形式で格納されているかも
OSXで動くブラウザによってはHTML形式ではなく、リッチテキスト形式で格納されているものもあった。
HTML形式には簡単?に以下の様にNSAttributeStringを介して変換出来た。
data = p.dataForType(NSRTFPboardType);
if( data )
attrString = NSAttributedString.alloc.initWithRTF(data,documentAttributes:nil)
attributeDict = {NSDocumentTypeDocumentAttribute=>NSHTMLTextDocumentType}
htmlData = attrString.dataFromRange(NSMakeRange(0, attrString.length()),documentAttributes:attributeDict,error:nil)
htmlString = NSString.alloc.initWithData(htmlData,encoding:NSUTF8StringEncoding)
puts htmlString
end
プレインテキストで格納されている場合
この場合、HTMLとしては取り出せませんが、、、
data = p.dataForType(NSStringPboardType);
if( data )
puts data
end
どうやら、上記は10.5以前の古い定数を利用していた模様
NSHTMLPboardType,NSRTFPboardTypeは、
10.6以降は NSPasteboardTypeHTML,NSPasteboardTypeRTF
を使う模様。