WebKitを使ったGoogleサーチブラウザ

公開日: : RubyCocoa

記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

以下のページを参考にしました。

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

関連記事

サンフランシスコのピア39にあるチャウダーズでクラムチャウダーを食す!

lolipop アップルの開発者向けイベント「WWDC2014」

ミスドのカルピスドーナツとカルピスポンデリングを食べてみた!

ミスドで期間限定のカルピスコラボ商品「カルピスドーナツ」と「カルピ

十三カレー計画で牛すじカレーネギのせを食す!(大阪・十三)

「iPhoneアプリ開発キャンプ@大阪」のランチで、十三カレー計画

大阪・難波の加寿屋 法善寺でかすうどんを食す。ランチタイムはおにぎり2個まで無料!

大阪・難波の加寿屋 法善寺 (かすうどん KASUYA)で、かす

ライブドアブログで運営していた「あきお商店」を「卵は世界である」に改名しました

少し前からライブドアブログで「あきお商店」というブログをやって

→もっと見る

PAGE TOP ↑