class Class
Public Class Methods
===(object)
click to toggle source
Calls superclass method
# File lib/gherkin/native/java.rb, line 57 def ===(object) super || object.java_kind_of?(java_class) end
java_class()
click to toggle source
# File lib/gherkin/native/java.rb, line 61 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
javaify(arg)
click to toggle source
# File lib/gherkin/native/java.rb, line 40 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, StringIO IOWriter.new(arg) else arg end end end
new(*args)
click to toggle source
# File lib/gherkin/native/java.rb, line 28 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
Public Instance Methods
native_impl(lib)
click to toggle source
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 24 def native_impl(lib) require "#{lib}.jar" class << self 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 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, StringIO IOWriter.new(arg) else arg end 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