deprecator 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -49,6 +49,10 @@ class SomeClass
49
49
 
50
50
  deprecated_method :method4, "%{method} is no longer here, use some other method!"
51
51
  deprecated_method [:method5, :method6], "%{method} is no longer here, use some other method!"
52
+
53
+ def method7
54
+ raise_deprecated # raises regardless of strategy
55
+ end
52
56
  end
53
57
 
54
58
  obj = SomeClass.new # outputs to stderr: [DEPRECATED] deprecated class SomeClass instantiated at /Users/vasfed/work/deprecator/examples/example.rb:26:in `new'
@@ -57,6 +61,12 @@ obj.method2 # [DEPRECATED] this is deprecated when true is true
57
61
  obj.method3 # [DEPRECATED] method method3 is deprecated. Called from /Users/vasfed/work/deprecator/examples/example.rb:28:in `<top (required)>'
58
62
  obj.method4 # [DEPRECATED] method4 is no longer here, use some other method!
59
63
  obj.method6 # [DEPRECATED] method6 is no longer here, use some other method!
64
+ begin
65
+ obj.method7
66
+ rescue Deprecator::Deprecated
67
+ puts "error raised" # guess what? :)
68
+ end
69
+
60
70
 
61
71
  ```
62
72
 
@@ -96,6 +106,14 @@ SomeClass.new
96
106
 
97
107
  ```
98
108
 
109
+ Note that for BasicObject helpers are not loaded by default, you should do smth like
110
+
111
+ ```ruby
112
+ class BasicObject
113
+ include ::Deprecator::ClassClassMethods
114
+ end
115
+ ```
116
+
99
117
  ## Contributing
100
118
 
101
119
  1. Fork it
@@ -21,6 +21,10 @@ class SomeClass
21
21
 
22
22
  deprecated_method :method4, "%{method} is no longer here, use some other method!"
23
23
  deprecated_method [:method5, :method6], "%{method} is no longer here, use some other method!"
24
+
25
+ def method7
26
+ raise_deprecated # raises regardless of strategy
27
+ end
24
28
  end
25
29
 
26
30
  obj = SomeClass.new # outputs to stderr: [DEPRECATED] deprecated class SomeClass instantiated at /Users/vasfed/work/deprecator/examples/example.rb:26:in `new'
@@ -28,4 +32,9 @@ obj.method1 # [DEPRECATED] method1 is deprecated!
28
32
  obj.method2 # [DEPRECATED] this is deprecated when true is true
29
33
  obj.method3 # [DEPRECATED] method method3 is deprecated. Called from /Users/vasfed/work/deprecator/examples/example.rb:28:in `<top (required)>'
30
34
  obj.method4 # [DEPRECATED] method4 is no longer here, use some other method!
31
- obj.method6 # [DEPRECATED] method6 is no longer here, use some other method!
35
+ obj.method6 # [DEPRECATED] method6 is no longer here, use some other method!
36
+ begin
37
+ obj.method7
38
+ rescue Deprecator::Deprecated
39
+ puts "error raised" # guess what? :)
40
+ end
@@ -109,19 +109,27 @@ module Deprecator
109
109
  end
110
110
 
111
111
  def self.strategy= s
112
- case s
113
- when Class then return(@@strategy = s.new)
112
+ @@strategy = case s
113
+ when nil then DefaultStrategy.new
114
+ when Class then s.new
114
115
  when Symbol then
115
116
  capitalized = s.capitalize
116
117
  if Strategy.const_defined?(capitalized)
117
- self.strategy = Strategy.const_get(capitalized)
118
+ Strategy.const_get(capitalized).new
118
119
  else
119
120
  raise UnknownStrategy, s
120
121
  end
121
122
  else
122
- @@strategy = s
123
+ s
123
124
  end
124
125
  end
126
+
127
+ def self.with_strategy new_strategy
128
+ old_strategy = strategy
129
+ self.strategy = new_strategy
130
+ yield
131
+ self.strategy = old_strategy
132
+ end
125
133
  end
126
134
 
127
135
 
@@ -10,7 +10,10 @@ end
10
10
 
11
11
  module Kernel
12
12
  def deprecated reason=nil, *args
13
- Deprecator.strategy.deprecated(reason, caller_line, args)
13
+ ::Deprecator.strategy.plain_deprecated(reason, caller_line, args)
14
+ end
15
+ def raise_deprecated reason=nil, *args
16
+ raise ::Deprecator::Deprecated, reason, *args
14
17
  end
15
18
  alias DEPRECATED deprecated
16
19
 
@@ -4,7 +4,6 @@ module Deprecator
4
4
  class Base
5
5
  #on class/module definition/extenting with deprecater or deprecate statement
6
6
  def class_found cls, where=nil, reason=nil, args=nil
7
- this = self
8
7
  cls.send(:define_method, :initialize){|*args|
9
8
  ::Deprecator.strategy.object_found(cls, self, reason, caller_line, where)
10
9
  }
@@ -34,21 +33,20 @@ module Deprecator
34
33
  end
35
34
  # on method definition
36
35
  def method_found cls,name, reason, where=nil
37
- this = self
38
36
  unless cls.method_defined?(name) # also we may place stubs there for existing methods in other strategies
39
37
  cls.send :define_method, name, ->(*args){
40
- this.method_called cls,name,reason,caller_line,where
38
+ ::Deprecator.strategy.method_called cls,name,reason,caller_line,where
41
39
  }
42
40
  else
43
41
  method = cls.instance_method(name)
44
42
  cls.send :define_method, name, ->(*args){
45
- this.method_called cls,name,reason,caller_line,where
43
+ ::Deprecator.strategy.method_called cls,name,reason,caller_line,where
46
44
  method.bind(self).call(*args)
47
45
  }
48
46
  end
49
47
  end
50
48
  def method_called cls,name,reason=nil,where,defined_at; end
51
- def deprecated reason=nil, where=caller_line, args=nil; end
49
+ def plain_deprecated reason=nil, where=caller_line, args=nil; end
52
50
  def fixme! msg, where, args; end
53
51
  def todo! msg, where, args; end
54
52
  def not_implemented msg, where, args
@@ -72,7 +70,7 @@ module Deprecator
72
70
  msg reason.gsub('%{method}', name.to_s), where
73
71
  end
74
72
 
75
- def deprecated reason=nil, where=caller_line, args=nil
73
+ def plain_deprecated reason=nil, where=caller_line, args=nil
76
74
  where =~ /in `(.+)'$/
77
75
  method_name = $1 || '<unknown>'
78
76
  reason ||= "%{method} is deprecated!"
@@ -93,7 +91,7 @@ module Deprecator
93
91
  raise DeprecatedMethodCalled, (reason || "deprecated").gsub('%{method}', name.to_s)
94
92
  end
95
93
 
96
- def deprecated reason=nil, where=caller_line, args=nil
94
+ def plain_deprecated reason=nil, where=caller_line, args=nil
97
95
  where =~ /in `(.+)'$/
98
96
  method_name = $1 || '<unknown>'
99
97
  reason ||= "%{method} is deprecated!"
@@ -1,3 +1,3 @@
1
1
  module Deprecator
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -49,10 +49,14 @@ describe Deprecator do
49
49
  subject.strategy = :base
50
50
  }
51
51
  it "simple" do
52
- subject.strategy.should_receive(:deprecated).with("reason", duck_type(:to_s), [])
52
+ subject.strategy.should_receive(:plain_deprecated).with("reason", duck_type(:to_s), [])
53
53
  deprecated "reason"
54
54
  end
55
55
 
56
+ it "raise_deprecated" do
57
+ expect{ raise_deprecated }.to raise_error(Deprecator::Deprecated)
58
+ end
59
+
56
60
  it "marking in class" do
57
61
  cls = Class.new{
58
62
  deprecated_method "reason"
@@ -120,5 +124,13 @@ describe Deprecator do
120
124
  expect{ subject.strategy = :no_such_strategy }.to raise_error(Deprecator::UnknownStrategy)
121
125
  end
122
126
  end
127
+
128
+ it "with" do
129
+ expect{
130
+ subject.with_strategy(Object) do
131
+ deprecated
132
+ end
133
+ }.to raise_error(NoMethodError, /plain_deprecated/)
134
+ end
123
135
  end
124
136
  end
@@ -7,7 +7,7 @@ describe Deprecator::Strategy::Warning do
7
7
  }
8
8
  it "calls warn" do
9
9
  subject.should_receive(:warn).with("[DEPRECATED] block (2 levels) in <top (required)> is deprecated!")
10
- subject.deprecated
10
+ deprecated
11
11
  end
12
12
 
13
13
  it "raises on not implemented" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deprecator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-12 00:00:00.000000000 Z
12
+ date: 2013-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: is_a
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  version: '0'
119
119
  segments:
120
120
  - 0
121
- hash: 2302177472746095841
121
+ hash: -1744994072693929959
122
122
  requirements: []
123
123
  rubyforge_project:
124
124
  rubygems_version: 1.8.24