arb 1.1.13 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/arb/version.rb +1 -1
  3. data/lib/arb.rb +46 -4
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 329765bc9cf25ce2de0df23a441442a6ee844935
4
- data.tar.gz: e06f226496707cb24df1bc11b70f4782140719f4
3
+ metadata.gz: e9f3c0144060b228f3882c065e068b302170c6fa
4
+ data.tar.gz: e3b43aa910c98a8337c5362fac5aba7708c3e5c3
5
5
  SHA512:
6
- metadata.gz: 534225d7123f9235ed5f141ee635b55cb39423334bc71d3527ea398e95dc917d5c0a86847183dbac5ce984006ed9abdba19880eb4fa6fda01101cc20bee13e77
7
- data.tar.gz: 5a3e040e024c5968e152953069e7af1636ff2e559231923b9c3efdfd2731b4c1a9a711fde51200b9f4dd8bb7941ca3bb11cd25f15769f14bcdb304e66871301f
6
+ metadata.gz: 6fe26bb1acdb0e0017d0d8a509699ba1aaa55a70637300b34b01ea110df90d5da5e18e356d02e324732d8f3d92927176ef0675589f548aaed0c5b9b5e0e6265c
7
+ data.tar.gz: e52cec6c834bb3b0fe1de235686c158914558f4cdf46c8a50fb9bf0005cfc12e00cf27417e3a1bd64ea4bc2e1dfc8f79368891c89c4f09f753412f003d207027
data/lib/arb/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Arb
2
- VERSION = "1.1.13"
2
+ VERSION = "1.2.0"
3
3
  end
data/lib/arb.rb CHANGED
@@ -1,12 +1,54 @@
1
1
  module Kernel
2
2
  def arb_use(*modules)
3
- [].tap do |imported|
4
- modules.each do |mod|
5
- tmp=nil
6
- imported<<tmp if require(tmp="arb/#{mod}")
3
+ imported=[]
4
+ tmp=nil
5
+ begin
6
+ loop do
7
+ tmp=modules.shift
8
+ break unless tmp
9
+ if require("arb/#{tmp}")
10
+ imported<<tmp
11
+ else
12
+ #warn("Fail to require arb/#{tmp}, maybe it had already been required!")
13
+ end
7
14
  end
15
+ rescue LoadError=>e
16
+ warn("Fail to load arb/#{tmp}")
17
+ retry
8
18
  end
19
+ imported
20
+ end
9
21
 
22
+ def arb_import(arb_module_name,forced=false)
23
+ arb_module_name=arb_module_name.to_s.capitalize!
24
+ res={:succeed=>[],:failed=>[]}
25
+ tried_arb_use=false
26
+ begin
27
+ arb_module=Module.const_get(:Arb).const_get(arb_module_name)
28
+ Kernel.class_eval do
29
+ arb_module.singleton_methods.each do |m|
30
+ if !forced && Kernel.instance_methods.include?(m)
31
+ warn("Conflict method: #{m}")
32
+ res[:failed] << m
33
+ next
34
+ end
35
+ define_method(m) do |*args,&block|
36
+ arb_module.send(m,*args,&block)
37
+ end
38
+ res[:succeed] << m
39
+ end
40
+ end
41
+ res
42
+ rescue NameError=>e
43
+ unless tried_arb_use
44
+ tried_arb_use=true
45
+ arb_use(arb_module_name.downcase)
46
+ retry
47
+ end
48
+ warn("Arb::#{arb_module_name} not found!")
49
+ end
10
50
  end
51
+
11
52
  alias_method :use,:arb_use
53
+ alias_method :import,:arb_import
12
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.13
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - arybin