我正在寫一些有點像Facebook的共享鏈接預覽。可擴展處理程序/插件架構的Ruby結構
我想使它很容易就在一個新的文件拖放爲每一個新的網站,我想寫一個自定義的解析器新的網站擴展。我有設計模式的基本概念,但沒有足夠的模塊經驗來指定細節。我確信在其他項目中有很多類似的例子。
結果應該是這樣的:
> require 'link'
=> true
> Link.new('http://youtube.com/foo').preview
=> {:title => 'Xxx', :description => 'Yyy', :embed => '<zzz/>' }
> Link.new('http://stackoverflow.com/bar').preview
=> {:title => 'Xyz', :description => 'Zyx' }
和代碼將是這樣的:
#parsers/youtube.rb
module YoutubeParser
url_match /(youtube\.com)|(youtu.be)\//
def preview
get_stuff_using youtube_api
end
end
#parsers/stackoverflow.rb
module SOFParser
url_match /stachoverflow.com\//
def preview
get_stuff
end
end
#link.rb
class Link
def initialize(url)
extend self with the module that has matching regexp
end
end
謝謝,這是一個比搞亂模塊,擴展和包括更簡單的方法,而不是。我還用另一種方法找到了一個教程[link](http://thomasjo.com/2010/12/15/really-simple-and-naive-ruby-plugin-framework/)。 –