Sha256: 1b65b68c3bbe50f29ba8b49f74e672a25a0d69f0f51942b462744a608bb56e08
Contents?: true
Size: 1.41 KB
Versions: 2
Compression:
Stored size: 1.41 KB
Contents
# -*- encoding: utf-8 -*- # # Java::Override JRuby Module # Copyright (c) 2012 Szymon Wrozynski # Licensed under the MIT License conditions. # # Support for Java class inheritance in JRuby. # Enable overriding plain Java methods with Ruby naming conventions. require 'java' require 'set' require 'java/override/version' module Java module Override private def method_added(m) return if @_java_override_internal_call @_java_override_internal_call = true unless private_instance_methods(true).include?(m) super_methods = Set.new(superclass.instance_methods.map(&:to_s)) included_modules.each do |i| if i.respond_to?(:java_class) super_methods.merge(i.java_class.java_instance_methods.map(&:name).uniq) end end if m.to_s.end_with?('?') prefix = 'is' elsif m.to_s.end_with?('=') prefix = 'set' else prefix = 'get' end base = m.to_s.gsub(/[^a-z0-9]/i, '') find_java_m = ->(n) { super_methods.find { |m| m.to_s.casecmp(n).zero? } } java_m = find_java_m.call("#{prefix}#{base}") || find_java_m.call(base) alias_method(java_m, m) if java_m && java_m != m.to_s end remove_instance_variable(:@_java_override_internal_call) end def self.included(klass) klass.extend(self) klass.send(:undef_method, :method_added) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
java_override-0.1.4-java | lib/java/override.rb |
java_override-0.1.3-java | lib/java/override.rb |