named_parameter 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.
@@ -1,10 +1,15 @@
1
1
  module NamedParameter
2
2
  def named(def_return)
3
- method = self.instance_method(@last_method_added)
3
+ method = @last_method_added
4
4
  NamedParameter::NamedMethodTransmuter.transmute method
5
5
  end
6
6
 
7
7
  def method_added(method_name)
8
- @last_method_added = method_name
8
+ @last_method_added = self.instance_method(method_name)
9
+ end
10
+
11
+
12
+ def singleton_method_added(method_name)
13
+ @last_method_added = self.method(method_name)
9
14
  end
10
15
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{named_parameter}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Hugo Roque (a.k.a HugoLnx)"]
12
- s.date = %q{2011-05-13}
12
+ s.date = %q{2012-08-02}
13
13
  s.description = %q{Allows named parameter in ruby}
14
14
  s.email = %q{hugolnx@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -19,7 +19,6 @@ Gem::Specification.new do |s|
19
19
  "Gemfile",
20
20
  "README.md",
21
21
  "Rakefile",
22
- "lib/.named_parameter.rb.swo",
23
22
  "lib/named_parameter.rb",
24
23
  "lib/named_parameter/error.rb",
25
24
  "lib/named_parameter/errors.rb",
@@ -33,6 +32,7 @@ Gem::Specification.new do |s|
33
32
  "named_parameter.gemspec",
34
33
  "spec/features/collective_named_methods_feature_spec.rb",
35
34
  "spec/features/individual_named_method_feature_spec.rb",
35
+ "spec/features/singleton_named_method_feature_spec.rb",
36
36
  "spec/spec_helper.rb",
37
37
  "spec/unit/error_spec.rb",
38
38
  "spec/unit/errors/not_hash_spec.rb",
@@ -0,0 +1,173 @@
1
+ require 'spec_helper'
2
+
3
+ describe "singleton named method feature" do
4
+ describe "becomes possible:" do
5
+ describe 'Named Parameter' do
6
+ specify %q{
7
+ class People
8
+ extend NamedParameter
9
+
10
+ named def self.say(phrase)
11
+ phrase
12
+ end
13
+ end
14
+
15
+ People.say phrase: "Hi!"
16
+ # => "Hi!"
17
+ } do
18
+ class People
19
+ extend NamedParameter
20
+
21
+ named def self.say(phrase)
22
+ phrase
23
+ end
24
+ end
25
+
26
+ phrase = People.say phrase: "Hi!"
27
+ phrase.should be == "Hi!"
28
+ end
29
+ end
30
+
31
+ describe 'Optional Named Parameter' do
32
+ specify %q{
33
+ class People
34
+ extend NamedParameter
35
+
36
+ named def self.say(phrase="I'm mute")
37
+ phrase
38
+ end
39
+ end
40
+
41
+ People.say
42
+ # => "I'm mute"
43
+ } do
44
+ class People
45
+ extend NamedParameter
46
+
47
+ named def self.say(phrase="I'm mute")
48
+ phrase
49
+ end
50
+ end
51
+
52
+ phrase = People.say
53
+ phrase.should be == "I'm mute"
54
+ end
55
+ end
56
+
57
+ describe 'Multiple Named Parameter (in any order)' do
58
+ specify %q{
59
+ class Point
60
+ extend NamedParameter
61
+
62
+ named def self.move_to(x,y)
63
+ [x,y]
64
+ end
65
+ end
66
+
67
+ Point.move_to x: 1,y: 2
68
+ # => [1,2]
69
+
70
+ Point.move_to y: 2, x: 1
71
+ # => [1,2]
72
+ } do
73
+ class Point
74
+ extend NamedParameter
75
+
76
+ named def self.move_to(x,y)
77
+ [x,y]
78
+ end
79
+ end
80
+
81
+ position = Point.move_to x: 1,y: 2
82
+ position.should be == [1,2]
83
+
84
+ position = Point.move_to y: 2, x: 1
85
+ position.should be == [1,2]
86
+ end
87
+ end
88
+
89
+ describe 'ArgumentError when given undefined args' do
90
+ specify %q{
91
+ class People
92
+ extend NamedParameter
93
+
94
+ named def self.say(phrase)
95
+ end
96
+ end
97
+
98
+ People.say phrase: "hi!",undefined: "test"
99
+ #=> ArgumentError
100
+ } do
101
+ class People
102
+ extend NamedParameter
103
+
104
+ named def self.say(phrase)
105
+ end
106
+ end
107
+
108
+ lambda{People.say(phrase: "hi!",undefined: "hugo")}.should raise_error ArgumentError, /'undefined'[\w\s]*'say'/
109
+ end
110
+ end
111
+
112
+ describe 'ArgumentError when not given required args' do
113
+ specify %q{
114
+ class People
115
+ extend NamedParameter
116
+
117
+ named def self.say(phrase)
118
+ end
119
+ end
120
+
121
+ People.say
122
+ #=> ArgumentError
123
+ } do
124
+ class People
125
+ extend NamedParameter
126
+
127
+ named def self.say(phrase)
128
+ end
129
+ end
130
+
131
+ lambda {People.say}.should raise_error ArgumentError, /'phrase'[\w\s]*'say'/
132
+ end
133
+ end
134
+
135
+ describe 'ArgumentError when given a non Hash argument' do
136
+ specify %q{
137
+ class People
138
+ extend NamedParameter
139
+
140
+ named def self.say(phrase)
141
+ end
142
+ end
143
+
144
+ People.say
145
+ #=> ArgumentError
146
+ } do
147
+ class People
148
+ extend NamedParameter
149
+
150
+ named def self.say(phrase)
151
+ end
152
+ end
153
+
154
+ lambda {People.say("non Hash argument")}.should raise_error ArgumentError, /"non Hash argument"[\w\s]*'say'/
155
+ end
156
+ end
157
+ end
158
+
159
+ describe "no named method" do
160
+ it "can be called with normal parameters" do
161
+ class People
162
+ class << self
163
+ def no_named_say(phrase)
164
+ phrase
165
+ end
166
+ end
167
+ end
168
+
169
+ phrase = People.no_named_say "Hi!"
170
+ phrase.should be == "Hi!"
171
+ end
172
+ end
173
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1 @@
1
1
  require 'named_parameter'
2
- require 'support/interface_helper'
@@ -66,22 +66,6 @@ module NamedParameter::Errors
66
66
  end
67
67
  end
68
68
  end
69
-
70
-
71
-
72
- describe 'integrations' do
73
- after :each do
74
- instance.raise_args
75
- end
76
-
77
- specify '@error.argument_name' do
78
- @error.should_receive :argument_name
79
- end
80
-
81
- specify '@error.named_method' do
82
- @error.should_receive :named_method
83
- end
84
- end
85
69
  end
86
70
 
87
71
  describe '.all_when(named_method,{called_with:arg})' do
@@ -66,22 +66,6 @@ module NamedParameter::Errors
66
66
  end
67
67
  end
68
68
  end
69
-
70
-
71
-
72
- describe 'integrations' do
73
- after :each do
74
- instance.raise_args
75
- end
76
-
77
- specify '@error.argument_name' do
78
- @error.should_receive :argument_name
79
- end
80
-
81
- specify '@error.named_method' do
82
- @error.should_receive :named_method
83
- end
84
- end
85
69
  end
86
70
 
87
71
  describe '.all_when(named_method,{called_with:arg})' do
@@ -116,15 +100,6 @@ module NamedParameter::Errors
116
100
  end
117
101
  end
118
102
  end
119
-
120
- describe 'integrations' do
121
- specify "named_method.required_parameters" do
122
- named_method = stub(:named_method)
123
- named_method.should_receive(:required_parameters)
124
- .and_return([])
125
- RequiredParameters.all_when(named_method,:called_with => [])
126
- end
127
- end
128
103
  end
129
104
  end
130
105
  end
@@ -66,22 +66,6 @@ module NamedParameter::Errors
66
66
  end
67
67
  end
68
68
  end
69
-
70
-
71
-
72
- describe 'integrations' do
73
- after :each do
74
- instance.raise_args
75
- end
76
-
77
- specify '@error.argument_name' do
78
- @error.should_receive :argument_name
79
- end
80
-
81
- specify '@error.named_method' do
82
- @error.should_receive :named_method
83
- end
84
- end
85
69
  end
86
70
 
87
71
  describe '.all_when(named_method,{called_with:args})' do
@@ -115,16 +99,6 @@ module NamedParameter::Errors
115
99
  end
116
100
  end
117
101
  end
118
-
119
- describe 'integrations' do
120
- specify "named_method.have_a_parameter_like?(arg)" do
121
- named_method = stub(:named_method)
122
- args = {:arg_name => :value}
123
- named_method.should_receive(:have_a_parameter_like?)
124
- .with(:arg_name)
125
- UndefinedParameters.all_when(named_method,:called_with => args)
126
- end
127
- end
128
102
  end
129
103
  end
130
104
  end
metadata CHANGED
@@ -1,53 +1,48 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: named_parameter
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
4
5
  prerelease:
5
- version: 0.0.2
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Hugo Roque (a.k.a HugoLnx)
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-05-13 00:00:00 -03:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2012-08-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: bundler
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70006660 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
18
+ requirements:
21
19
  - - ~>
22
- - !ruby/object:Gem::Version
20
+ - !ruby/object:Gem::Version
23
21
  version: 1.0.0
24
22
  type: :development
25
23
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *70006660
25
+ - !ruby/object:Gem::Dependency
28
26
  name: jeweler
29
- requirement: &id002 !ruby/object:Gem::Requirement
27
+ requirement: &70005210 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
29
+ requirements:
32
30
  - - ~>
33
- - !ruby/object:Gem::Version
31
+ - !ruby/object:Gem::Version
34
32
  version: 1.6.0
35
33
  type: :development
36
34
  prerelease: false
37
- version_requirements: *id002
35
+ version_requirements: *70005210
38
36
  description: Allows named parameter in ruby
39
37
  email: hugolnx@gmail.com
40
38
  executables: []
41
-
42
39
  extensions: []
43
-
44
- extra_rdoc_files:
40
+ extra_rdoc_files:
45
41
  - README.md
46
- files:
42
+ files:
47
43
  - Gemfile
48
44
  - README.md
49
45
  - Rakefile
50
- - lib/.named_parameter.rb.swo
51
46
  - lib/named_parameter.rb
52
47
  - lib/named_parameter/error.rb
53
48
  - lib/named_parameter/errors.rb
@@ -61,6 +56,7 @@ files:
61
56
  - named_parameter.gemspec
62
57
  - spec/features/collective_named_methods_feature_spec.rb
63
58
  - spec/features/individual_named_method_feature_spec.rb
59
+ - spec/features/singleton_named_method_feature_spec.rb
64
60
  - spec/spec_helper.rb
65
61
  - spec/unit/error_spec.rb
66
62
  - spec/unit/errors/not_hash_spec.rb
@@ -68,36 +64,29 @@ files:
68
64
  - spec/unit/errors/undefined_parameters_spec.rb
69
65
  - spec/unit/named_method_spec.rb
70
66
  - spec/unit/named_method_transmuter_spec.rb
71
- has_rdoc: true
72
67
  homepage: http://github.com/hugolnx/named_parameter
73
- licenses:
68
+ licenses:
74
69
  - MIT
75
70
  post_install_message:
76
71
  rdoc_options: []
77
-
78
- require_paths:
72
+ require_paths:
79
73
  - lib
80
- required_ruby_version: !ruby/object:Gem::Requirement
74
+ required_ruby_version: !ruby/object:Gem::Requirement
81
75
  none: false
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 215367841
86
- segments:
87
- - 0
88
- version: "0"
89
- required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
81
  none: false
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: "0"
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
95
86
  requirements: []
96
-
97
87
  rubyforge_project:
98
- rubygems_version: 1.6.2
88
+ rubygems_version: 1.8.15
99
89
  signing_key:
100
90
  specification_version: 3
101
91
  summary: Allows named parameter in ruby
102
92
  test_files: []
103
-
Binary file