# File lib/gherkin/native/ikvm.rb, line 40 def ===(object) super || object.java_kind_of?(java_class) end
# File lib/gherkin/native/ikvm.rb, line 44 def ikvm_class names = self.name.split('::') namespace = Object names[0..-2].each do |module_name| namespace = namespace.const_get(module_name.downcase) end namespace.const_get(names[-1]) end
# File lib/gherkin/native/ikvm.rb, line 23 def ikvmify(arg) if Array === arg arg.map{|a| ikvmify(a)} else case(arg) when Regexp Object.const_get('java').const_get('util').const_get('regex').const_get('Pattern').compile(arg.source) else arg end end end
# File lib/gherkin/native/java.rb, line 65 def java_class names = self.name.split('::') package = Java names[0..-2].each do |module_name| package = package.__send__(module_name.downcase) end package.__send__(names[-1]) end
# File lib/gherkin/native/java.rb, line 32 def javaify(arg) if Array === arg arg.map{|a| javaify(a)} else case(arg) when Regexp java.util.regex.Pattern.compile(arg.source) when Symbol arg.to_s when IO IOWriter.new(arg) else arg end end end
# File lib/gherkin/native/ikvm.rb, line 36 def new(*args) ikvm_class.new(*ikvmify(args)) end
# File lib/gherkin/native/ikvm.rb, line 3 def implements(java_class_name) m = java_class_name.split('.').inject(Object) do |mod, name| mod = mod.const_get(name) end include m end
Causes a .NET class to be instantiated instead of the Ruby class when running on IronRuby. This is used to test both pure .NET and pure Ruby classes from the same Ruby based test suite. The .NET Class must have a package name that corresponds with the Ruby class.
# File lib/gherkin/native/ikvm.rb, line 14 def native_impl(lib) begin load_assembly(lib) rescue LoadError => e e.message << "\nTry this: SET MONO_PATH=#{File.expand_path(File.dirname(__FILE__) + '/../..')} (or export MONO_PATH=...)" raise e end class << self def ikvmify(arg) if Array === arg arg.map{|a| ikvmify(a)} else case(arg) when Regexp Object.const_get('java').const_get('util').const_get('regex').const_get('Pattern').compile(arg.source) else arg end end end def new(*args) ikvm_class.new(*ikvmify(args)) end def ===(object) super || object.java_kind_of?(java_class) end def ikvm_class names = self.name.split('::') namespace = Object names[0..-2].each do |module_name| namespace = namespace.const_get(module_name.downcase) end namespace.const_get(names[-1]) end end end