This is Ruby, where everything is an expression. If you're going to be clever, why not go all the way? --- def is_macruby?; defined?(RUBY_ENGINE) && RUBY_ENGINE == 'macruby'; end if is_macruby? framework 'Foundation' else require 'uri' COMPONENTS = [:scheme, :userinfo, :host, :port, :registry, :path, :opaque, :query, :fragment] end class HackURI < (is_macruby? ? NSURL : URI::HTTP) def initialize(uri) if is_macruby? self.initWithString(uri) else u = URI.parse(uri) super(*COMPONENTS.map { |c| u.send(c) }) end end def what_am_I? puts self.class.ancestors end end h = HackURI.new('http://www.macruby.org') h.what_am_I? --- Although, you may want to rethink your strategy here…there's a REALLY BIG impedance mismatch between the way that the URI module is designed and the way NSURL works. Anyway, hope this helps… Cheers, Josh On Oct 7, 2010, at 8:21 PM, Mark Rada wrote:
A more efficient version of that class:
class HackURI if RUBY_ENGINE == 'macruby' def initialize(uri) @url = NSURL.URLWithString uri end else def initialize(uri) @url = URI.parse uri end end
def method_missing(method, *args) @url.send(method, *args) end end
On 2010-10-07, at 11:11 PM, Mark Rada wrote:
Hi devs,
I am trying to write a gem so that it will run on MRI and MacRuby, but still be able to take advantage of MacRuby things like Cocoa and GCD.
I was playing around with some URI related stuff and I cannot find much documentation on whether NSURL and URI objects have been bridged for MacRuby?
If they aren't bridged, I was thinking I could just hack together an empty class that just chooses if it inherits from NSURL or URI at run time. Something like this:
require 'uri'
class HackURI def initialize(uri) if RUBY_ENGINE == 'macruby' @url = NSURL.URLWithString uri else @url = URI.parse uri end end
def method_missing(method, *args) @url.send(method, *args) end end
-- Mark Rada
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel