negative-method 1.1.0 → 1.2.1

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.
@@ -18,6 +18,3 @@ DEPENDENCIES
18
18
  jeweler (~> 1.5.1)
19
19
  rcov
20
20
  rspec (= 1.3.1)
21
-
22
- METADATA
23
- version: 1.0.6
@@ -1,6 +1,14 @@
1
1
  = negative-method
2
2
 
3
- Description goes here.
3
+ Negative methods automatically add negative method check for your module.
4
+ If you have object.is_valid? then the following methods will be available.
5
+
6
+ object.not_is_valid?
7
+ object.is_not_valid?
8
+ object.is_valid_not?
9
+
10
+ if one of the methods has been manually defined. that method will take precedent.
11
+
4
12
 
5
13
  == Contributing to negative-method
6
14
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.2.1
@@ -1,19 +1,19 @@
1
1
  module NegativeMethod
2
+ alias :_method_missing :method_missing
2
3
  def method_missing(negative_method_name, *args)
3
- method = get_original_method negative_method_name.to_s
4
- if (method)
5
- if self.respond_to?(method)
6
- return !self.send(method, *args)
7
- else
8
- raise "Cannot call negative method #{negative_method_name}, original method undefined"
9
- end
10
- else
11
- super;
4
+
5
+ positive_method = get_positive_method_from negative_method_name.to_s
6
+ if ( positive_method && self.respond_to?(positive_method) )
7
+ return !self.send(positive_method, *args)
12
8
  end
9
+
10
+ _method_missing negative_method_name, *args
13
11
  end
14
12
 
15
- def get_original_method method_name
16
- if method_name.match(/^not_/) || method_name.match(/_not_/)
13
+ def get_positive_method_from method_name
14
+ if method_name.match(/^no_/)
15
+ return method_name.sub(/no_/,'')
16
+ elsif method_name.match(/^not_/) || method_name.match(/_not_/)
17
17
  return method_name.sub(/not_/,'')
18
18
  elsif method_name.match(/_not$/) || method_name.match(/_not?/)
19
19
  return method_name.sub(/_not/,'')
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{negative-method}
8
- s.version = "1.1.0"
8
+ s.version = "1.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Vinh Tran"]
12
- s.date = %q{2010-12-17}
12
+ s.date = %q{2011-08-27}
13
13
  s.description = %q{generate negative methods base on existing positive method, if you have object.good? you will automatically have object.not_good}
14
14
  s.email = %q{vinhtiensinh@yahoo.com}
15
15
  s.extra_rdoc_files = [
@@ -37,14 +37,13 @@ Gem::Specification.new do |s|
37
37
  s.homepage = %q{http://github.com/vinhtiensinh/negative-method}
38
38
  s.licenses = ["MIT"]
39
39
  s.require_paths = ["lib"]
40
- s.rubygems_version = %q{1.3.7}
40
+ s.rubygems_version = %q{1.5.2}
41
41
  s.summary = %q{generate negative methods base on existing positive method, if you have object.good? you will automatically have object.not_good?}
42
42
  s.test_files = [
43
43
  "spec/negative-method_spec.rb"
44
44
  ]
45
45
 
46
46
  if s.respond_to? :specification_version then
47
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
47
  s.specification_version = 3
49
48
 
50
49
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -10,7 +10,7 @@ describe NegativeMethod do
10
10
  lambda { test.hasNotBeenDefined }.should raise_error
11
11
  end
12
12
 
13
- it "should raise error if the original method is undefined" do
13
+ it "should raise error if the positive method is undefined" do
14
14
  test = TestClass.new
15
15
  lambda { test.not_defined }.should raise_error
16
16
  end
@@ -38,4 +38,10 @@ describe NegativeMethod do
38
38
  test.should_receive(:has?).with('element').and_return(true)
39
39
  test.has_not?('element').should == false
40
40
  end
41
+
42
+ it "should negate method with 'no_' at the start" do
43
+ test = TestClass.new
44
+ test.should_receive(:good?).with('element').and_return(true)
45
+ test.no_good?('element').should == false
46
+ end
41
47
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: negative-method
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
4
+ hash: 29
5
+ prerelease:
6
6
  segments:
7
7
  - 1
8
+ - 2
8
9
  - 1
9
- - 0
10
- version: 1.1.0
10
+ version: 1.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Vinh Tran
@@ -15,11 +15,10 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-17 00:00:00 +11:00
18
+ date: 2011-08-27 00:00:00 +10:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- prerelease: false
23
22
  version_requirements: &id001 !ruby/object:Gem::Requirement
24
23
  none: false
25
24
  requirements:
@@ -31,11 +30,11 @@ dependencies:
31
30
  - 3
32
31
  - 1
33
32
  version: 1.3.1
33
+ prerelease: false
34
34
  name: rspec
35
- requirement: *id001
36
35
  type: :development
36
+ requirement: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- prerelease: false
39
38
  version_requirements: &id002 !ruby/object:Gem::Requirement
40
39
  none: false
41
40
  requirements:
@@ -47,11 +46,11 @@ dependencies:
47
46
  - 0
48
47
  - 0
49
48
  version: 1.0.0
49
+ prerelease: false
50
50
  name: bundler
51
- requirement: *id002
52
51
  type: :development
52
+ requirement: *id002
53
53
  - !ruby/object:Gem::Dependency
54
- prerelease: false
55
54
  version_requirements: &id003 !ruby/object:Gem::Requirement
56
55
  none: false
57
56
  requirements:
@@ -63,11 +62,11 @@ dependencies:
63
62
  - 5
64
63
  - 1
65
64
  version: 1.5.1
65
+ prerelease: false
66
66
  name: jeweler
67
- requirement: *id003
68
67
  type: :development
68
+ requirement: *id003
69
69
  - !ruby/object:Gem::Dependency
70
- prerelease: false
71
70
  version_requirements: &id004 !ruby/object:Gem::Requirement
72
71
  none: false
73
72
  requirements:
@@ -77,9 +76,10 @@ dependencies:
77
76
  segments:
78
77
  - 0
79
78
  version: "0"
79
+ prerelease: false
80
80
  name: rcov
81
- requirement: *id004
82
81
  type: :development
82
+ requirement: *id004
83
83
  description: generate negative methods base on existing positive method, if you have object.good? you will automatically have object.not_good
84
84
  email: vinhtiensinh@yahoo.com
85
85
  executables: []
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  requirements: []
137
137
 
138
138
  rubyforge_project:
139
- rubygems_version: 1.3.7
139
+ rubygems_version: 1.5.2
140
140
  signing_key:
141
141
  specification_version: 3
142
142
  summary: generate negative methods base on existing positive method, if you have object.good? you will automatically have object.not_good?