usabl 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da43e8c43c93ce4243043a0e2adfe89a4b7788c0
4
- data.tar.gz: 61e961f4bda42c2b7fb905a2249615f107c3c21b
3
+ metadata.gz: 850bf9ce15f4e25d066c56999942d163e5b21b8f
4
+ data.tar.gz: 689451898109f249d2d16b25259514eb94b0fe80
5
5
  SHA512:
6
- metadata.gz: d2c73827de592c3af2b1bae8e2ec131ed0465b819071a731db7074f270eca0ad1ae3cf291753dc18274c2a364109b0428127bb3e97e1598481ee7e7e62a3cc99
7
- data.tar.gz: fd197d3a296f6f3c548266f33332369588a7aae0906bb2dd69ec9b080f75243dc886d49008bb2e018447309482349837060339fc3fd2acfc18efd1b5cad97e92
6
+ metadata.gz: 6d111c991304ffe2d2334bb530a770498b9e50381ecf87dc97dc18fd4f64b89cdcde501efd40b276049a2801d72a2ae29105a8156122df9375d4ca0c13388c32
7
+ data.tar.gz: c11b07354460c1b9c7326c49d5075504145c1bf61a321b340df7485ec56d958cd3a537a164e3d5c259842014f04d02f3c26ad57c4fd05a7bb16a9f3896da4f42
@@ -2,6 +2,8 @@ module Usabl
2
2
  class MethodLoader < ::Quir::Loader
3
3
  def initialize_module(mod, dir)
4
4
  mod.extend ::Usabl::Methodspace
5
+ mod.dir = dir
6
+ mod.singleton_class.dir = dir
5
7
  end
6
8
  end
7
9
  end
@@ -1,21 +1,34 @@
1
1
  module Usabl
2
2
  module Methodspace
3
+ Quir.autoload! {}
4
+
3
5
  def self.extended(mod)
4
6
  mod.extend ClassMethods
5
7
  mod.singleton_class.extend ClassMethods
8
+ mod.singleton_class.class!
6
9
  end
7
10
 
8
11
  module ClassMethods
12
+ attr_accessor :dir
13
+
14
+ def class!
15
+ @class = true
16
+ end
17
+
18
+ def class?
19
+ !!@class
20
+ end
21
+
9
22
  def [](name)
10
23
  refinements[name]
11
24
  end
12
25
 
13
26
  def refinements
14
- @refinements ||= {}
27
+ @refinements ||= Set.new(self)
15
28
  end
16
29
 
17
30
  def extensions
18
- @extensions ||= {}
31
+ @extensions ||= Set.new(self)
19
32
  end
20
33
 
21
34
  def define(target, name, options = {}, &block)
@@ -31,6 +44,10 @@ module Usabl
31
44
  end
32
45
  end
33
46
  end
47
+
48
+ def load(key)
49
+ require "#{dir}/#{class? ? '.' : '#'}#{key}"
50
+ end
34
51
  end
35
52
  end
36
53
  end
@@ -0,0 +1,11 @@
1
+ module Usabl::Methodspace
2
+ class Set < ::Hash
3
+ def initialize(space)
4
+ @space = space
5
+ end
6
+
7
+ def [](key)
8
+ super || @space.load(key) && super
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Usabl
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usabl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - mosop
@@ -98,6 +98,7 @@ files:
98
98
  - lib/usabl.rb
99
99
  - lib/usabl/method_loader.rb
100
100
  - lib/usabl/methodspace.rb
101
+ - lib/usabl/methodspace/set.rb
101
102
  - lib/usabl/rspec/helpers.rb
102
103
  - lib/usabl/version.rb
103
104
  - usabl.gemspec