usabl 0.1.0 → 0.2.0

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: 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