verning 0.0.2 → 0.0.3

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