verning 0.0.2 → 0.0.3

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: 92808fc502189d69f6e19fbd1aa55d3d7b591c47
4
- data.tar.gz: a103f175629a9a7a07e5bb833851c6a081aef0c0
3
+ metadata.gz: 4b2344c1e86b035196cf8e5c9ad6c157e52ad989
4
+ data.tar.gz: 70f9d690637f5b606e0d516045fbc1e78b504152
5
5
  SHA512:
6
- metadata.gz: f6cc9da0edf49fe79dcbb7c1a4e54d72b230fc01f84c6459e2d3c8a6c63ef4a318a5c17fccecb7727d22091b5a65f37804e48ac64d0a6ea2897fdcd061cc3377
7
- data.tar.gz: c44a3128031486c8268c5031edcd49ecef9e7c19019ddcdd1edac0a617c4e58ac4dea5460e909488dfa792499d0a670649d2d83eee0946c9f0ae9d937b1caae8
6
+ metadata.gz: 8c6ce07a19201245cb4fa21988d260c09969768f1c8eb906390d954f5e71db208cab09a2c7d647d67cc35b736a3164e846a4706379c9701757952ecc3b397f90
7
+ data.tar.gz: 53aa9cbdc0eb878893e161d316bd3220ac28b0eeee950fb45e82b763529324c131895736d116c96646ea666235cfc69980f381803c94a8bd05337581c75fba02
@@ -1,18 +1,28 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- verning (0.0.2)
4
+ verning (0.0.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  coderay (1.1.0)
10
+ columnize (0.3.6)
11
+ debugger (1.6.6)
12
+ columnize (>= 0.3.1)
13
+ debugger-linecache (~> 1.2.0)
14
+ debugger-ruby_core_source (~> 1.3.2)
15
+ debugger-linecache (1.2.0)
16
+ debugger-ruby_core_source (1.3.2)
10
17
  diff-lcs (1.2.5)
11
18
  method_source (0.8.2)
12
19
  pry (0.9.12.6)
13
20
  coderay (~> 1.0)
14
21
  method_source (~> 0.8)
15
22
  slop (~> 3.4)
23
+ pry-debugger (0.2.2)
24
+ debugger (~> 1.3)
25
+ pry (~> 0.9.10)
16
26
  rake (0.9.6)
17
27
  rspec (2.14.1)
18
28
  rspec-core (~> 2.14.0)
@@ -30,6 +40,7 @@ PLATFORMS
30
40
  DEPENDENCIES
31
41
  bundler (~> 1.3)
32
42
  pry (~> 0.9)
43
+ pry-debugger (~> 0.2)
33
44
  rake (~> 0.9)
34
45
  rspec (~> 2.14)
35
46
  verning!
data/README.md CHANGED
@@ -2,11 +2,11 @@ Verning
2
2
  =========
3
3
  Versioning for methods, modules or classes
4
4
 
5
- [![Build Status](https://travis-ci.org/eccyan/versioned.svg?branch=master)](https://travis-ci.org/eccyan/versioned)
5
+ [![Build Status](https://travis-ci.org/eccyan/verning.svg?branch=master)](https://travis-ci.org/eccyan/verning)
6
6
 
7
7
  ## Install
8
8
  ```sh
9
- gem install vernign
9
+ gem install verning
10
10
  ```
11
11
 
12
12
  ## Reference
@@ -32,6 +32,21 @@ class Klass
32
32
  end
33
33
  ```
34
34
 
35
+ ### versioned_module/versioned_class
36
+ Select a module/class that matches the conditions given with block.
37
+ ```ruby
38
+ require "verning"
39
+
40
+ RELEASE_DATE = Date.parse("2014-3-26")
41
+
42
+ class Foo; end
43
+ class FooFeature; end
44
+
45
+ versioned_method Foo, FooFeature do
46
+ Date.today >= RELEASE_DATE
47
+ end
48
+ ```
49
+
35
50
  # License
36
51
  Verning is released under the MIT license:
37
52
 
@@ -0,0 +1 @@
1
+ require "verning/core_ext/object/versioned_module"
@@ -0,0 +1,25 @@
1
+
2
+ class Object
3
+ # Select a module that matches the conditions given with block.
4
+ #
5
+ # versioned_module :downed, :upped do
6
+ # Time.now > "2013-04-01"
7
+ # end
8
+ #
9
+ def versioned_module(downed, upped, key = nil)
10
+ return if block_given? && yield.!
11
+
12
+ Object.send :remove_const, downed.to_s
13
+ const_set downed.to_s, Object.const_get(upped.to_s)
14
+ end
15
+
16
+ # Select a class that matches the conditions given with block.
17
+ #
18
+ # versioned_module :downed, :upped do
19
+ # Time.now > "2013-04-01"
20
+ # end
21
+ #
22
+ def versioned_class(downed, upped, key = nil, &block)
23
+ versioned_module(downed, upped, key, &block)
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module Verning
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe Object do
4
+ let(:condition) { nil }
5
+ let(:method_name) { nil }
6
+
7
+ before do
8
+ Object.send :remove_const, "Upped" if Object.const_defined? "Upped"
9
+ Object.const_set("Upped", Class.new(Object))
10
+ Object.send :remove_const, "Downed" if Object.const_defined? "Downed"
11
+ Object.const_set("Downed", Class.new(Object))
12
+
13
+ Object.send(method_name, Downed, Upped) do condition end
14
+ end
15
+
16
+ describe "versioned_module" do
17
+ let(:method_name) { :versioned_module }
18
+
19
+ describe "when not matches the conditions"do
20
+ let(:condition) { false }
21
+
22
+ it "not aliased target method" do
23
+ expect(Downed.new).to be_kind_of(Downed)
24
+ end
25
+ end
26
+
27
+ describe "when matches the conditions"do
28
+ let(:condition) { true }
29
+
30
+ it "aliased target method" do
31
+ expect(Downed.new).to be_kind_of(Upped)
32
+ end
33
+ end
34
+ end
35
+ describe "versioned_class" do
36
+ let(:method_name) { :versioned_class }
37
+
38
+ describe "when not matches the conditions"do
39
+ let(:condition) { false }
40
+
41
+ it "not aliased target method" do
42
+ expect(Downed.new).to be_kind_of(Downed)
43
+ end
44
+ end
45
+
46
+ describe "when matches the conditions"do
47
+ let(:condition) { true }
48
+
49
+ it "aliased target method" do
50
+ expect(Downed.new).to be_kind_of(Upped)
51
+ end
52
+ end
53
+ end
54
+ end
@@ -21,5 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake", "~> 0.9"
23
23
  spec.add_development_dependency "pry", "~> 0.9"
24
+ spec.add_development_dependency "pry-debugger", "~> 0.2"
24
25
  spec.add_development_dependency "rspec", "~> 2.14"
25
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: verning
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - eccyan
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-debugger
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '0.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '0.2'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -85,8 +99,11 @@ files:
85
99
  - lib/verning/core_ext.rb
86
100
  - lib/verning/core_ext/module.rb
87
101
  - lib/verning/core_ext/module/versioned_method.rb
102
+ - lib/verning/core_ext/object.rb
103
+ - lib/verning/core_ext/object/versioned_module.rb
88
104
  - lib/verning/version.rb
89
105
  - spec/core_ext/module/versioned_method_spec.rb
106
+ - spec/core_ext/object/versioned_module_spec.rb
90
107
  - spec/spec_helper.rb
91
108
  - verning.gemspec
92
109
  homepage: https://github.com/eccyan/verning
@@ -115,4 +132,5 @@ specification_version: 4
115
132
  summary: versioning helper
116
133
  test_files:
117
134
  - spec/core_ext/module/versioned_method_spec.rb
135
+ - spec/core_ext/object/versioned_module_spec.rb
118
136
  - spec/spec_helper.rb