usabl 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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