File: binding_ninja.rb

package info (click to toggle)
ruby-binding-ninja 0.2.3-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 132 kB
  • sloc: java: 154; ansic: 118; ruby: 72; makefile: 4; sh: 4
file content (41 lines) | stat: -rw-r--r-- 839 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
require "binding_ninja/version"

if /java/ =~ RUBY_PLATFORM
  require_relative 'binding_ninja/binding_ninja.jar'
  Java::IoGithubJoker1007::BindingNinjaService.new.basicLoad(JRuby.runtime)
else
  require "binding_ninja/binding_ninja"
end

module BindingNinja
  def auto_inject_binding_options
    {}
  end

  METHOD_DEFINER = ->(klass) do
    unless klass.method_defined?(:auto_inject_binding_options)
      options = {}
      klass.class_eval do
        @auto_inject_binding_options = options
      end

      klass.define_singleton_method(:auto_inject_binding_options) do
        super().merge(options)
      end
    end
  end

  def inherited(klass)
    super
    METHOD_DEFINER.call(klass)
  end

  def included(klass)
    super
    METHOD_DEFINER.call(klass)
  end

  def self.extended(klass)
    METHOD_DEFINER.call(klass)
  end
end