usabl 0.1.0 → 0.2.0

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: e9da4b457e4265faa7218638a49259c78b760717
4
- data.tar.gz: 5a0aa34374c9c138bb6bbc529dee2baada4221ed
3
+ metadata.gz: da43e8c43c93ce4243043a0e2adfe89a4b7788c0
4
+ data.tar.gz: 61e961f4bda42c2b7fb905a2249615f107c3c21b
5
5
  SHA512:
6
- metadata.gz: 3696ed37561e2c7409908fc5b6b862d3e8ed81b32ad9a64427a84c59fc3dc16b3b90be389a4d1f7e175e648f6ba63a761d423a09a60062e1fd2c4d7c25a2ba33
7
- data.tar.gz: e3d58029bd831e6afce7c5b208414230164b6f7e6db78a0dcb43a02f6f56ef4ad0c602eb28b6be7fb4aa5ecc6e615b0b62f697dd9f7f15723cc82bc8b56a504d
6
+ metadata.gz: d2c73827de592c3af2b1bae8e2ec131ed0465b819071a731db7074f270eca0ad1ae3cf291753dc18274c2a364109b0428127bb3e97e1598481ee7e7e62a3cc99
7
+ data.tar.gz: fd197d3a296f6f3c548266f33332369588a7aae0906bb2dd69ec9b080f75243dc886d49008bb2e018447309482349837060339fc3fd2acfc18efd1b5cad97e92
data/lib/usabl.rb CHANGED
@@ -4,4 +4,9 @@ autoload :Testspace, 'testspace'
4
4
 
5
5
  module Usabl
6
6
  Quir.autoload! {}
7
+
8
+ def self.method_autoload!(&block)
9
+ raise "No block given." unless block
10
+ MethodLoader.from_binding(block.binding).autoload!
11
+ end
7
12
  end
@@ -0,0 +1,7 @@
1
+ module Usabl
2
+ class MethodLoader < ::Quir::Loader
3
+ def initialize_module(mod, dir)
4
+ mod.extend ::Usabl::Methodspace
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,36 @@
1
+ module Usabl
2
+ module Methodspace
3
+ def self.extended(mod)
4
+ mod.extend ClassMethods
5
+ mod.singleton_class.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ def [](name)
10
+ refinements[name]
11
+ end
12
+
13
+ def refinements
14
+ @refinements ||= {}
15
+ end
16
+
17
+ def extensions
18
+ @extensions ||= {}
19
+ end
20
+
21
+ def define(target, name, options = {}, &block)
22
+ if options[:class]
23
+ return singleton_class.define(target.singleton_class, name, options.merge(class: false), &block)
24
+ end
25
+ ext = extensions[name] = ::Module.new do
26
+ define_method name, &block
27
+ end
28
+ refinements[name] = ::Module.new do
29
+ refine target do
30
+ include ext
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -10,7 +10,7 @@ module Usabl::Rspec
10
10
  line = __LINE__
11
11
  script = <<EOS
12
12
  module #{space.module}
13
- using #{refinement}
13
+ using ObjectSpace._id2ref(#{refinement.object_id})
14
14
 
15
15
  def self.#{method}(receiver, *args, &block)
16
16
  receiver.#{method} *args, &block
data/lib/usabl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Usabl
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usabl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mosop
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-22 00:00:00.000000000 Z
11
+ date: 2015-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: quir
@@ -96,6 +96,8 @@ files:
96
96
  - bin/console
97
97
  - bin/setup
98
98
  - lib/usabl.rb
99
+ - lib/usabl/method_loader.rb
100
+ - lib/usabl/methodspace.rb
99
101
  - lib/usabl/rspec/helpers.rb
100
102
  - lib/usabl/version.rb
101
103
  - usabl.gemspec