WebKitを使ったGoogleサーチブラウザ
公開日:
:
RubyCocoa
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
以下のページを参考にしました。
が、何故か textEntered が呼ばれずに撃沈・・・。
原因不明。
コードは以下の通り。
require 'osx/cocoa'
require 'cgi'
require 'open-uri'
OSX.require_framework 'WebKit'
class AppController < OSX::NSObject
include OSX
ib_outlet :window, :text, :table, :webview
def initialize
@items = []
end
def textEntered(sender)
p 'textEntered'
s = @text.stringValue.to_s
@items = search_on_google(s)
@table.reloadData
end
# NSTableView dataSource
def numberOfRowsInTableView(sender)
@items.length
end
def tableView_objectValueForTableColumn_row(sender, col, row)
if col == @table.tableColumns.to_a[0]
@items[row][0]
else
@items[row][1]
end
end
# NSTableView delegate
def tableViewSelectionDidChange(note)
sel = @table.selectedRow
return if sel < 0
url = @items[sel][0]
u = NSURL.URLWithString(url)
req = NSURLRequest.requestWithURL(u)
@webview.mainFrame.loadRequest(req)
end
private
def search_on_google(words)
q = CGI.escape(words)
url = "http://www.google.com/search?num=20&ie=UTF-8&oe=UTF-8&q=#{q}"
res = ''
open(url) {|f| res = f.read }
if res
items = res.scan(/<a href="([^\"]+)" class=l>(.+?)<\/a>/)
items.map do |i|
url,title = i
url = CGI.unescapeHTML(url)
title = title.gsub(/<\/?b>/, '') # cut off <b> and </b>
title = CGI.unescapeHTML(title)
[url, title]
end
else
[]
end
end
end
関連記事
- PREV
- iTunesのデータベースをRubyで書き換えてみる
- NEXT
- RubyCocoaでWebページ表示