Ruby 的 Python 接口:puby
jopen
11年前
puby 是 Ruby 解释器的 Python 接口。
示例代码
解析 HTML
# python # # ruby from puby import Object as rb # rb.require("nokogiri") # require "nokogiri" rb.require("open-uri") # require "open-uri" url = "http://www.google.com/search?q=foo" # url = "http://www.google.com/search?q=foo" doc = rb.Nokogiri.HTML.parse(rb.open(url)) # doc = Nokogiri::HTML.parse(open(url)) for link in doc.css("h3.r a"): # doc.css("h3.r a").each do |link| print link.content() # puts link.content # end执行 JavaScript:
from puby import Object as rb # rb.require('v8') # require "v8" ctx = rb.V8.Context.new() # ctx = V8::Context.new print ctx.eval("'Xzibit ' + 7 * 6") # puts ctx.eval "'Xzibit ' + 7 * 6"运行 Web 服务器:
from puby import Object as rb # rb.require("rack") # require "rack" # def application(env): # def application(env) return [200, # [200, {"Content-Type": "text/html"}, # {"Content-Type" => "text/html"}, ["Hello Puby!"]] # ["Hello Puby!"]] # end rb.Rack.Handler.Thin.run(application) # Rack::Handler::Thin.run method(:application)回调示例:
from puby import Object as rb, RbCallback rb.eval(""" class TestObj def save_callback cb @cb = cb end def call_callback x @cb.call(x) end end """) obj = rb.TestObj.new() def callback(x): return x+1 callback_rb = RbCallback(callback) obj.save_callback(callback_rb) print obj.call_callback(5)