get_args 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/get_args.gemspec +62 -0
- data/lib/argument_list.rb +28 -0
- data/lib/get_args.rb +7 -0
- data/test/test_argument_list.rb +39 -0
- data/test/test_get_args.rb +2 -2
- metadata +5 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.0
|
data/get_args.gemspec
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{get_args}
|
8
|
+
s.version = "1.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["maiha", "Yehuda Katz"]
|
12
|
+
s.date = %q{2009-12-11}
|
13
|
+
s.description = %q{Extracted from Merb, get_args allows you to query a method for its argument names and defaults.
|
14
|
+
|
15
|
+
This gem exists so you can get this functionality without having to include all of Merb.}
|
16
|
+
s.email = %q{crnixon@gmail.com}
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"LICENSE",
|
19
|
+
"README.rdoc"
|
20
|
+
]
|
21
|
+
s.files = [
|
22
|
+
".document",
|
23
|
+
".gitignore",
|
24
|
+
"LICENSE",
|
25
|
+
"README.rdoc",
|
26
|
+
"Rakefile",
|
27
|
+
"VERSION",
|
28
|
+
"get_args.gemspec",
|
29
|
+
"lib/argument_list.rb",
|
30
|
+
"lib/get_args.rb",
|
31
|
+
"lib/jruby_args.rb",
|
32
|
+
"lib/mri_args.rb",
|
33
|
+
"lib/vm_args.rb",
|
34
|
+
"test/helper.rb",
|
35
|
+
"test/test_argument_list.rb",
|
36
|
+
"test/test_get_args.rb"
|
37
|
+
]
|
38
|
+
s.homepage = %q{http://github.com/crnixon/get_args}
|
39
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
40
|
+
s.require_paths = ["lib"]
|
41
|
+
s.rubygems_version = %q{1.3.5}
|
42
|
+
s.summary = %q{Allows one to introspect on the argument names and defaults for a method.}
|
43
|
+
s.test_files = [
|
44
|
+
"test/helper.rb",
|
45
|
+
"test/test_argument_list.rb",
|
46
|
+
"test/test_get_args.rb"
|
47
|
+
]
|
48
|
+
|
49
|
+
if s.respond_to? :specification_version then
|
50
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
51
|
+
s.specification_version = 3
|
52
|
+
|
53
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
54
|
+
s.add_runtime_dependency(%q<extlib>, [">= 0.9.13"])
|
55
|
+
else
|
56
|
+
s.add_dependency(%q<extlib>, [">= 0.9.13"])
|
57
|
+
end
|
58
|
+
else
|
59
|
+
s.add_dependency(%q<extlib>, [">= 0.9.13"])
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module GetArgs
|
2
|
+
class ArgumentList
|
3
|
+
def initialize(args_array)
|
4
|
+
@arguments = args_array.map { |arg| Argument.new(arg) }
|
5
|
+
end
|
6
|
+
|
7
|
+
def method_missing(*args)
|
8
|
+
@arguments.send(*args)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class Argument
|
13
|
+
attr_reader :name, :default
|
14
|
+
|
15
|
+
def initialize(arg_array)
|
16
|
+
@optional = arg_array.length > 1
|
17
|
+
@name, @default = *arg_array
|
18
|
+
end
|
19
|
+
|
20
|
+
def optional?
|
21
|
+
@optional
|
22
|
+
end
|
23
|
+
|
24
|
+
def multiple?
|
25
|
+
name.to_s.slice(0,1) == '*'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/get_args.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class Dummy
|
4
|
+
def one_arg(foo); end
|
5
|
+
def multiple_args(foo, bar, baz); end
|
6
|
+
def optional_args(foo, bar = 1, baz = nil); end
|
7
|
+
def star_args(*foo); end
|
8
|
+
end
|
9
|
+
|
10
|
+
class TestArgumentList < Test::Unit::TestCase
|
11
|
+
def test_one_arg
|
12
|
+
list = Dummy.instance_method(:one_arg).get_argument_list
|
13
|
+
assert_equal 1, list.length
|
14
|
+
assert_equal :foo, list.first.name
|
15
|
+
assert !list.first.optional?
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_multiple_args
|
19
|
+
list = Dummy.instance_method(:multiple_args).get_argument_list
|
20
|
+
assert_equal 3, list.length
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_optional_args
|
24
|
+
list = Dummy.instance_method(:optional_args).get_argument_list
|
25
|
+
|
26
|
+
assert !list[0].optional?
|
27
|
+
assert list[1].optional?
|
28
|
+
assert_equal 1, list[1].default
|
29
|
+
assert list[2].optional?
|
30
|
+
assert_equal nil, list[2].default
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_star_args
|
34
|
+
list = Dummy.instance_method(:star_args).get_argument_list
|
35
|
+
|
36
|
+
assert list.first.multiple?
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
data/test/test_get_args.rb
CHANGED
@@ -3,7 +3,7 @@ require 'helper'
|
|
3
3
|
class Dummy
|
4
4
|
def one_arg(foo); end
|
5
5
|
def multiple_args(foo, bar, baz); end
|
6
|
-
def optional_args(foo, bar = 1); end
|
6
|
+
def optional_args(foo, bar = 1, baz = nil); end
|
7
7
|
def star_args(*foo); end
|
8
8
|
end
|
9
9
|
|
@@ -11,7 +11,7 @@ class TestGetArgs < Test::Unit::TestCase
|
|
11
11
|
def test_get_args
|
12
12
|
assert_equal [[[:foo]], []], Dummy.instance_method(:one_arg).get_args
|
13
13
|
assert_equal [[[:foo], [:bar], [:baz]], []], Dummy.instance_method(:multiple_args).get_args
|
14
|
-
assert_equal [[[:foo], [:bar, 1]], [:bar]], Dummy.instance_method(:optional_args).get_args
|
14
|
+
assert_equal [[[:foo], [:bar, 1], [:baz, nil]], [:bar, :baz]], Dummy.instance_method(:optional_args).get_args
|
15
15
|
assert_equal [[[%s[*foo]]], []], Dummy.instance_method(:star_args).get_args
|
16
16
|
end
|
17
17
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: get_args
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- maiha
|
@@ -42,11 +42,14 @@ files:
|
|
42
42
|
- README.rdoc
|
43
43
|
- Rakefile
|
44
44
|
- VERSION
|
45
|
+
- get_args.gemspec
|
46
|
+
- lib/argument_list.rb
|
45
47
|
- lib/get_args.rb
|
46
48
|
- lib/jruby_args.rb
|
47
49
|
- lib/mri_args.rb
|
48
50
|
- lib/vm_args.rb
|
49
51
|
- test/helper.rb
|
52
|
+
- test/test_argument_list.rb
|
50
53
|
- test/test_get_args.rb
|
51
54
|
has_rdoc: true
|
52
55
|
homepage: http://github.com/crnixon/get_args
|
@@ -78,4 +81,5 @@ specification_version: 3
|
|
78
81
|
summary: Allows one to introspect on the argument names and defaults for a method.
|
79
82
|
test_files:
|
80
83
|
- test/helper.rb
|
84
|
+
- test/test_argument_list.rb
|
81
85
|
- test/test_get_args.rb
|