Module: Kernel

Defined in:
lib/arb.rb

Instance Method Summary collapse

Instance Method Details

#arb_import(arb_module_name, forced = false) ⇒ Object Also known as: import



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/arb.rb', line 22

def arb_import(arb_module_name,forced=false)
  arb_module_name=arb_module_name.to_s.capitalize!
  res={:succeed=>[],:failed=>[]}
  tried_arb_use=false
  begin
    arb_module=Module.const_get(:Arb).const_get(arb_module_name)
    Kernel.class_eval do
      arb_module.singleton_methods.each do |m|
        if !forced && Kernel.instance_methods.include?(m)
          warn("Conflict method: #{m}")
          res[:failed] << m
          next
        end
        define_method(m) do |*args,&block|
          arb_module.send(m,*args,&block)
        end
        res[:succeed] << m
      end
    end
    res
  rescue NameError=>e
    unless tried_arb_use
      tried_arb_use=true
      arb_use(arb_module_name.downcase)
      retry
    end
    warn("Arb::#{arb_module_name} not found!")
  end
end

#arb_use(*modules) ⇒ Object Also known as: use



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/arb.rb', line 2

def arb_use(*modules)
  imported=[]
  tmp=nil
  begin 
    loop do 
      tmp=modules.shift
      break unless tmp
      if require("arb/#{tmp}")
        imported<<tmp 
      else
        #warn("Fail to require arb/#{tmp}, maybe it had already been required!")
      end
    end
  rescue LoadError=>e
    warn("Fail to load arb/#{tmp}!")
    retry
  end
  imported
end