Sha256: 0ec49fe7b4b7e46d28dd9456e77e234548b4ea4824103bdc40a083076ad34ca5

Contents?: true

Size: 1.42 KB

Versions: 380

Compression:

Stored size: 1.42 KB

Contents

class Class

  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.
  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
end

Version data entries

380 entries across 377 versions & 7 rubygems

Version Path
gherkin-2.11.0 lib/gherkin/native/ikvm.rb
gherkin-2.11.0-x86-mswin32 lib/gherkin/native/ikvm.rb
gherkin-2.11.0-x86-mingw32 lib/gherkin/native/ikvm.rb
gherkin-2.11.0-java lib/gherkin/native/ikvm.rb
resque-pool-0.3.0 vendor/bundle/ruby/1.8/gems/gherkin-2.3.3/lib/gherkin/native/ikvm.rb
resque-pool-0.3.0 vendor/bundle/ruby/1.8/gems/gherkin-2.9.3/lib/gherkin/native/ikvm.rb
resque-pool-0.3.0 vendor/bundle/ruby/1.8/gems/gherkin-2.9.0/lib/gherkin/native/ikvm.rb
ftl-0.2.0 vendor/bundle/gems/gherkin-2.10.0/lib/gherkin/native/ikvm.rb
gherkin-2.10.0 lib/gherkin/native/ikvm.rb
gherkin-2.10.0-x86-mswin32 lib/gherkin/native/ikvm.rb
gherkin-2.10.0-x86-mingw32 lib/gherkin/native/ikvm.rb
gherkin-2.10.0-java lib/gherkin/native/ikvm.rb
frameworks-capybara-0.2.0.rc6 vendor/bundle/ruby/1.8/gems/gherkin-2.9.3/lib/gherkin/native/ikvm.rb
frameworks-capybara-0.2.0.rc5 vendor/bundle/ruby/1.8/gems/gherkin-2.9.3/lib/gherkin/native/ikvm.rb
frameworks-capybara-0.2.0.rc4 vendor/bundle/ruby/1.8/gems/gherkin-2.9.3/lib/gherkin/native/ikvm.rb
frameworks-capybara-0.2.0.rc3 vendor/bundle/ruby/1.8/gems/gherkin-2.9.3/lib/gherkin/native/ikvm.rb
frameworks-capybara-0.2.0.rc2 vendor/bundle/ruby/1.8/gems/gherkin-2.9.3/lib/gherkin/native/ikvm.rb
resque-pool-0.3.0.beta.2 vendor/bundle/ruby/1.8/gems/gherkin-2.3.3/lib/gherkin/native/ikvm.rb
resque-pool-0.3.0.beta.2 vendor/bundle/ruby/1.8/gems/gherkin-2.9.0/lib/gherkin/native/ikvm.rb
gherkin-2.9.3 lib/gherkin/native/ikvm.rb