# File lib/gherkin/native/java.rb, line 61 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/java.rb, line 49 def new(*args) begin java_class.new(*javaify(args)) rescue ArgumentError => e e.message << "\n#{java_class.name}" raise e rescue NameError => e e.message << "\n args: #{args.inspect}" raise e end end
# File lib/gherkin/native/java.rb, line 20 def implements(java_class_name) # no-op end
Causes a Java class to be instantiated instead of the Ruby class when running on JRuby. This is used to test both pure Java and pure Ruby classes from the same Ruby based test suite. The Java Class must have a package name that corresponds with the Ruby class.
# File lib/gherkin/native/java.rb, line 28 def native_impl(lib) require "#{lib}.jar" class << self 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 def new(*args) begin java_class.new(*javaify(args)) rescue ArgumentError => e e.message << "\n#{java_class.name}" raise e rescue NameError => e e.message << "\n args: #{args.inspect}" raise e end end def ===(object) super || object.java_kind_of?(java_class) end 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 end end