method-args 0.0.4 → 0.0.5

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,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- method-args (0.0.3)
4
+ method-args (0.0.4)
5
5
  ruby2ruby (~> 1.2.4)
6
6
  ruby_parser (~> 2.0)
7
7
  sexp_processor (~> 3.0.4)
@@ -19,7 +19,12 @@ Pretend you have a file `your_ruby_file.rb`:
19
19
  end
20
20
  end
21
21
 
22
- To look at the arguments to something, do the following.
22
+ To look at the arguments to something and you're in Ruby 1.9 (please see https://twitter.com/igrigorik/status/19461463110320128), just require it normally:
23
+
24
+ require 'your_ruby_file'
25
+ MyClass.instance_method(:something).args
26
+
27
+ Otherwise, do the following:
23
28
 
24
29
  MethodArgs.load('your_ruby_file') # <-- this also requires the file
25
30
  MyClass.instance_method(:something).args
@@ -3,7 +3,13 @@ require 'ruby_parser'
3
3
  require 'sexp_processor'
4
4
 
5
5
  module MethodMixin
6
- attr_reader :args
6
+ def args(trying_load = false)
7
+ if !trying_load && respond_to?(:source_location) && !owner.const_defined?(:ArgList, false)
8
+ file, line = source_location
9
+ MethodArgs.load(file, false)
10
+ end
11
+ self.args = owner.const_get(:ArgList)[name.to_sym]
12
+ end
7
13
 
8
14
  def args=(a)
9
15
  @args = a.clone
@@ -75,9 +81,9 @@ module MethodArgs
75
81
  end
76
82
  end
77
83
 
78
- def self.load(file)
84
+ def self.load(file, require_file = true)
79
85
  file = File.expand_path(file)
80
- require file
86
+ require file if require_file
81
87
  parser = RubyParser.new
82
88
  sexp = parser.process(File.read(File.exist?(file) ? file : "#{file}.rb"))
83
89
  method_args = Processor.new
@@ -166,25 +172,14 @@ module MethodArgs
166
172
  end
167
173
 
168
174
  def add_methods
169
- unless current_class.method(:const_defined?).arity == 2 ? current_class.const_defined?(:ArgList, false) : current_class.const_defined?(:ArgList)
175
+ unless current_class.method(:const_defined?).arity == -1 ? current_class.const_defined?(:ArgList, false) : current_class.const_defined?(:ArgList)
170
176
  current_class.send(:const_set, :ArgList, @method_maps[current_classname])
171
177
  current_class.module_eval(<<-HERE_DOC, __FILE__, __LINE__)
172
178
  alias_method :__method__, :method
173
179
 
174
- def method(name)
175
- m = __method__(name)
176
- m.args = self.class.instance_arg_list(name)
177
- m
178
- end
179
-
180
180
  class << self
181
181
  alias_method :__instance_method__, :instance_method unless method_defined?(:__instance_method__)
182
182
  end
183
- def self.instance_method(name)
184
- m = __instance_method__(name)
185
- m.args = instance_arg_list(name)
186
- m
187
- end
188
183
 
189
184
  def self.instance_arg_list(method_name)
190
185
  method = __instance_method__(method_name)
@@ -192,10 +187,6 @@ module MethodArgs
192
187
  ArgList[method_name] or raise('i don\\'t know this method ' + method_name.inspect)
193
188
  elsif method.owner.respond_to?(:instance_arg_list)
194
189
  method.owner.instance_arg_list(method_name)
195
- # elsif method.respond_to?(:source_location)
196
- # source, line = method.source_location
197
- # MethodArgs.load(source)
198
- # method.owner.instance_arg_list(method_name)
199
190
  else
200
191
  raise \"\#{method.owner} has not been loaded with method_args\"
201
192
  end
@@ -1,3 +1,3 @@
1
1
  module MethodArgs
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -0,0 +1,4 @@
1
+ class Autoloaded
2
+ def some_method
3
+ end
4
+ end
@@ -0,0 +1,11 @@
1
+ if Method.instance_method(:source_location)
2
+ class TestAutoload < MiniTest::Unit::TestCase
3
+ def setup
4
+ require ~'fixtures/4'
5
+ end
6
+
7
+ def test_arg_counts
8
+ assert_equal 0, Autoloaded.instance_method(:some_method).args.count
9
+ end
10
+ end
11
+ end rescue nil
@@ -12,4 +12,11 @@ class TestBoundMethod < MiniTest::Unit::TestCase
12
12
  assert_equal 'more happy times', two.method(:default_args_with_dependant_value).args.last.default_value
13
13
  end
14
14
 
15
+ def test_binding_method
16
+ method = One.instance_method(:default_args_with_dependant_value)
17
+ one = One.new
18
+ one.two_method = 'happy times'
19
+ assert_equal 'happy times', method.bind(one).args.last.default_value
20
+ end
21
+
15
22
  end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: method-args
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 0
9
- - 4
10
- version: 0.0.4
8
+ - 5
9
+ version: 0.0.5
11
10
  platform: ruby
12
11
  authors:
13
12
  - Joshua Hull
@@ -15,7 +14,7 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2011-01-04 00:00:00 -08:00
17
+ date: 2011-01-05 00:00:00 -08:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
@@ -26,7 +25,6 @@ dependencies:
26
25
  requirements:
27
26
  - - ~>
28
27
  - !ruby/object:Gem::Version
29
- hash: 3
30
28
  segments:
31
29
  - 2
32
30
  - 0
@@ -41,7 +39,6 @@ dependencies:
41
39
  requirements:
42
40
  - - ~>
43
41
  - !ruby/object:Gem::Version
44
- hash: 23
45
42
  segments:
46
43
  - 1
47
44
  - 2
@@ -57,7 +54,6 @@ dependencies:
57
54
  requirements:
58
55
  - - ~>
59
56
  - !ruby/object:Gem::Version
60
- hash: 15
61
57
  segments:
62
58
  - 3
63
59
  - 0
@@ -73,7 +69,6 @@ dependencies:
73
69
  requirements:
74
70
  - - ~>
75
71
  - !ruby/object:Gem::Version
76
- hash: 23
77
72
  segments:
78
73
  - 0
79
74
  - 0
@@ -89,7 +84,6 @@ dependencies:
89
84
  requirements:
90
85
  - - ~>
91
86
  - !ruby/object:Gem::Version
92
- hash: 23
93
87
  segments:
94
88
  - 1
95
89
  - 0
@@ -105,7 +99,6 @@ dependencies:
105
99
  requirements:
106
100
  - - ">="
107
101
  - !ruby/object:Gem::Version
108
- hash: 3
109
102
  segments:
110
103
  - 0
111
104
  version: "0"
@@ -119,7 +112,6 @@ dependencies:
119
112
  requirements:
120
113
  - - ">="
121
114
  - !ruby/object:Gem::Version
122
- hash: 3
123
115
  segments:
124
116
  - 0
125
117
  version: "0"
@@ -133,7 +125,6 @@ dependencies:
133
125
  requirements:
134
126
  - - ">="
135
127
  - !ruby/object:Gem::Version
136
- hash: 3
137
128
  segments:
138
129
  - 0
139
130
  version: "0"
@@ -160,7 +151,9 @@ files:
160
151
  - test/fixtures/1.rb
161
152
  - test/fixtures/2.rb
162
153
  - test/fixtures/3.rb
154
+ - test/fixtures/4.rb
163
155
  - test/helper.rb
156
+ - test/test_autoload.rb
164
157
  - test/test_block.rb
165
158
  - test/test_bound_method.rb
166
159
  - test/test_simple.rb
@@ -179,7 +172,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
172
  requirements:
180
173
  - - ">="
181
174
  - !ruby/object:Gem::Version
182
- hash: 3
183
175
  segments:
184
176
  - 0
185
177
  version: "0"
@@ -188,7 +180,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
180
  requirements:
189
181
  - - ">="
190
182
  - !ruby/object:Gem::Version
191
- hash: 3
192
183
  segments:
193
184
  - 0
194
185
  version: "0"
@@ -203,7 +194,9 @@ test_files:
203
194
  - test/fixtures/1.rb
204
195
  - test/fixtures/2.rb
205
196
  - test/fixtures/3.rb
197
+ - test/fixtures/4.rb
206
198
  - test/helper.rb
199
+ - test/test_autoload.rb
207
200
  - test/test_block.rb
208
201
  - test/test_bound_method.rb
209
202
  - test/test_simple.rb