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)

项目主页:http://www.open-open.com/lib/view/home/1372646806456