keyword_arguments 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +25 -0
- data/README.markdown +10 -6
- data/Rakefile +46 -11
- data/lib/keyword_arguments.rb +4 -4
- metadata +31 -52
- data.tar.gz.sig +0 -3
- data/CHANGELOG +0 -5
- data/Manifest +0 -7
- data/keyword_arguments.gemspec +0 -35
- data/test/test_module.rb +0 -97
- metadata.gz.sig +0 -0
data/ChangeLog
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
2009-10-31 Dominik Honnef <dominikho@gmx.net>
|
2
|
+
|
3
|
+
* test/*: replaced test/unit with baretest
|
4
|
+
|
5
|
+
* README.markdown: updated README to reflect recent changes
|
6
|
+
|
7
|
+
* lib/keyword_arguments.rb (Module#define_our_temporary_method_added): default arguments are now evaluated blocks
|
8
|
+
(Module#default_arguments): same
|
9
|
+
|
10
|
+
* Rakefile: fixed gem description
|
11
|
+
replaced Echoe with own gemspec
|
12
|
+
bumped version to 0.1.0
|
13
|
+
|
14
|
+
* CHANGELOG: replaced by ChangeLog
|
15
|
+
|
16
|
+
2009-07-27 Dominik Honnef <dominikho@gmx.net>
|
17
|
+
|
18
|
+
* lib/keyword_arguments: hiding keyword_arguments from the backtrace
|
19
|
+
avoid warnings
|
20
|
+
|
21
|
+
* CHANGELOG: bumped version to 0.0.2
|
22
|
+
|
23
|
+
2009-07-24 Dominik Honnef <dominikho@gmx.net>
|
24
|
+
|
25
|
+
* *: initial release of version 0.0.1
|
data/README.markdown
CHANGED
@@ -7,7 +7,6 @@ Module, which make working with argument hashes in Ruby a bit easier.
|
|
7
7
|
|
8
8
|
- This only works with Ruby 1.9. This, however, is as far as I know no
|
9
9
|
big problem because there is also a gem for Ruby 1.8...
|
10
|
-
- The tests require mocha to run
|
11
10
|
|
12
11
|
## Installation
|
13
12
|
|
@@ -19,7 +18,7 @@ Module, which make working with argument hashes in Ruby a bit easier.
|
|
19
18
|
require 'keyword_arguments'
|
20
19
|
|
21
20
|
class Test
|
22
|
-
default_arguments a: 1, b: 2, c: 3
|
21
|
+
default_arguments {{a: 1, b: 2, c: 3}}
|
23
22
|
def laissez_faire(args = {})
|
24
23
|
args
|
25
24
|
end
|
@@ -54,7 +53,12 @@ modules and included modules.
|
|
54
53
|
|
55
54
|
## Special notes
|
56
55
|
|
57
|
-
You shouldn't redefine any of the
|
58
|
-
(as in
|
59
|
-
|
60
|
-
|
56
|
+
* You shouldn't redefine any of the \*\_arguments methods
|
57
|
+
(as in
|
58
|
+
|
59
|
+
class Test; def self.default_arguments; nil; end; end
|
60
|
+
|
61
|
+
because then you won't be able to use the ones from our package
|
62
|
+
unless you use `::Module.default_arguments`
|
63
|
+
|
64
|
+
* default arguments are to be passed as blocks returning hashes.
|
data/Rakefile
CHANGED
@@ -1,17 +1,52 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
p.author = "Dominik Honnef"
|
4
|
-
p.email = "dominikho@gmx.net"
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake/gempackagetask'
|
5
3
|
|
6
|
-
|
7
|
-
p.summary = %q{named_arguments comes with a bunch of convenient methods for making "named arguments" (hashes as method arguments) in Ruby less painfull}
|
4
|
+
VERSION = "0.1.0"
|
8
5
|
|
9
|
-
|
10
|
-
|
6
|
+
spec = Gem::Specification.new do |s|
|
7
|
+
s.name = "keyword_arguments"
|
8
|
+
s.summary = 'keyword_arguments comes with a bunch of convenient methods for making "named arguments" (hashes as method arguments) in Ruby less painfull'
|
9
|
+
s.description = s.summary
|
10
|
+
s.version = VERSION
|
11
|
+
s.author = "Dominik Honnef"
|
12
|
+
s.email = "dominikho@gmx.net"
|
13
|
+
s.date = Time.now.strftime "%Y-%m-%d"
|
14
|
+
s.require_path = "lib"
|
15
|
+
s.homepage = "http://keywordargs.rubyforge.org/"
|
16
|
+
s.rubyforge_project = "keywordargs"
|
11
17
|
|
12
|
-
|
18
|
+
s.has_rdoc = 'yard'
|
13
19
|
|
14
|
-
|
20
|
+
s.required_ruby_version = '>= 1.9.1'
|
15
21
|
|
16
|
-
|
22
|
+
s.add_development_dependency "baretest"
|
23
|
+
|
24
|
+
s.files = FileList["bin/*", "lib/**/*.rb", "[A-Z]*", "examples/**/*"].to_a
|
25
|
+
s.executables = [""]
|
26
|
+
end
|
27
|
+
|
28
|
+
Rake::GemPackageTask.new(spec)do |pkg|
|
29
|
+
end
|
30
|
+
|
31
|
+
begin
|
32
|
+
require 'yard'
|
33
|
+
YARD::Rake::YardocTask.new do |t|
|
34
|
+
end
|
35
|
+
rescue LoadError
|
36
|
+
end
|
37
|
+
|
38
|
+
task :test do
|
39
|
+
begin
|
40
|
+
require "baretest"
|
41
|
+
rescue LoadError => e
|
42
|
+
puts "Could not run tests: #{e}"
|
43
|
+
end
|
44
|
+
|
45
|
+
BareTest.load_standard_test_files(
|
46
|
+
:verbose => false,
|
47
|
+
:setup_file => 'test/setup.rb',
|
48
|
+
:chdir => File.absolute_path("#{__FILE__}/../")
|
49
|
+
)
|
50
|
+
|
51
|
+
BareTest.run(:format => "cli", :interactive => false)
|
17
52
|
end
|
data/lib/keyword_arguments.rb
CHANGED
@@ -8,8 +8,8 @@ class Module
|
|
8
8
|
end
|
9
9
|
|
10
10
|
# Sets default arguments for the next method defined
|
11
|
-
def default_arguments(
|
12
|
-
@current_default_arguments =
|
11
|
+
def default_arguments(&block)
|
12
|
+
@current_default_arguments = block
|
13
13
|
define_our_temporary_method_added
|
14
14
|
end
|
15
15
|
|
@@ -40,7 +40,7 @@ class Module
|
|
40
40
|
|
41
41
|
# store the instance variables in local ones so we can use them in the following blocks
|
42
42
|
current_required_arguments = @current_required_arguments || []
|
43
|
-
current_default_arguments = @current_default_arguments ||
|
43
|
+
current_default_arguments = @current_default_arguments || lambda {{}}
|
44
44
|
current_allowed_arguments = @current_allowed_arguments || []
|
45
45
|
|
46
46
|
# methods and singleton methods have other means of being get/defined
|
@@ -65,7 +65,7 @@ class Module
|
|
65
65
|
end
|
66
66
|
|
67
67
|
# check for missing keys
|
68
|
-
args = current_default_arguments.merge args
|
68
|
+
args = current_default_arguments.call.merge args
|
69
69
|
missing = current_required_arguments - args.keys
|
70
70
|
unless missing.empty?
|
71
71
|
raise ArgumentError, "Missing arguments: #{missing.join(', ')}", caller
|
metadata
CHANGED
@@ -1,89 +1,68 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: keyword_arguments
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dominik Honnef
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
- |
|
12
|
-
-----BEGIN CERTIFICATE-----
|
13
|
-
MIIDMDCCAhigAwIBAgIBADANBgkqhkiG9w0BAQUFADA+MRIwEAYDVQQDDAlkb21p
|
14
|
-
bmlraG8xEzARBgoJkiaJk/IsZAEZFgNnbXgxEzARBgoJkiaJk/IsZAEZFgNuZXQw
|
15
|
-
HhcNMDkwNzI0MjE1NDQ3WhcNMTAwNzI0MjE1NDQ3WjA+MRIwEAYDVQQDDAlkb21p
|
16
|
-
bmlraG8xEzARBgoJkiaJk/IsZAEZFgNnbXgxEzARBgoJkiaJk/IsZAEZFgNuZXQw
|
17
|
-
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgfogFNoAcdrR5mK0t5NiN
|
18
|
-
MbWCH2QVLqOvpuaHN6uiaE30R9fT+1CcF97PSboMHMKaQFgiyAcBj8c2uGw5Sk7+
|
19
|
-
Kv9TE2TIIG8l8oslnf9PVqrHSz823IjzbXo4WET4khI2v02pE2wx/souJ4PRgnEr
|
20
|
-
gxQaOF7fqJRT2eYiZAMQye1y9tNSShRoKP3JIlp51KBXUMzGdzq4Mopp32zhEcio
|
21
|
-
yEzcp1PYqu6D1Pr00fS/Alurnp/My5o3oIk0vBfJ6Q8j/6OSk+ck5xev2Z2Y9AUK
|
22
|
-
iwipCxKrAsfOjpPc/Y66okMeTmKxx5N/8h/xNp/HiUApHQwjbYgFOAwmht5UzoPp
|
23
|
-
AgMBAAGjOTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFLlluBMEZ3rFvxFcB+ULjUNd
|
24
|
-
V+7WMAsGA1UdDwQEAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEAoDJGicQwBqMnhMkC
|
25
|
-
JY7bgsrIwxoTMQT6B1keUtt9VQ3deywQu0ogawNmee5wy5oFqnMZFcSCXcJE/zIE
|
26
|
-
iuSYU5t87iF09BIsSHWg2OlHAB4+GTUL0PkVsCVBDFukqEiXpNcqMUjTr8U+fe7V
|
27
|
-
oD/qvzyMG1ooAFuTDfPknIQxTcavdnmUmO9Sfw10yXkomX8jjwaGduF/JHDIufub
|
28
|
-
/f4b22rpLBhrOD6dqHCl7WuAfAhpobLqc7sa6Ro8caSUnpq9blOrT/PRtiTXwN6h
|
29
|
-
p3eI3JV0LC6/tMHoeLAbHqauVbWUqDB+AfFw24sgZBqFA+MtMkDpqZ+BKiwiHl+S
|
30
|
-
YEfDWg==
|
31
|
-
-----END CERTIFICATE-----
|
10
|
+
cert_chain: []
|
32
11
|
|
33
|
-
date: 2009-
|
12
|
+
date: 2009-11-01 00:00:00 +01:00
|
34
13
|
default_executable:
|
35
|
-
dependencies:
|
36
|
-
|
37
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: baretest
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
description: keyword_arguments comes with a bunch of convenient methods for making "named arguments" (hashes as method arguments) in Ruby less painfull
|
38
26
|
email: dominikho@gmx.net
|
39
27
|
executables: []
|
40
28
|
|
41
29
|
extensions: []
|
42
30
|
|
43
|
-
extra_rdoc_files:
|
44
|
-
|
45
|
-
- CHANGELOG
|
46
|
-
- LICENSE
|
47
|
-
- lib/keyword_arguments.rb
|
31
|
+
extra_rdoc_files: []
|
32
|
+
|
48
33
|
files:
|
34
|
+
- lib/keyword_arguments.rb
|
49
35
|
- Rakefile
|
36
|
+
- ChangeLog
|
50
37
|
- README.markdown
|
51
|
-
- CHANGELOG
|
52
38
|
- LICENSE
|
53
|
-
|
54
|
-
- Manifest
|
55
|
-
- lib/keyword_arguments.rb
|
56
|
-
- keyword_arguments.gemspec
|
57
|
-
has_rdoc: true
|
39
|
+
has_rdoc: yard
|
58
40
|
homepage: http://keywordargs.rubyforge.org/
|
41
|
+
licenses: []
|
42
|
+
|
59
43
|
post_install_message:
|
60
|
-
rdoc_options:
|
61
|
-
|
62
|
-
- --inline-source
|
63
|
-
- --title
|
64
|
-
- Keyword_arguments
|
65
|
-
- --main
|
66
|
-
- README.markdown
|
44
|
+
rdoc_options: []
|
45
|
+
|
67
46
|
require_paths:
|
68
47
|
- lib
|
69
48
|
required_ruby_version: !ruby/object:Gem::Requirement
|
70
49
|
requirements:
|
71
50
|
- - ">="
|
72
51
|
- !ruby/object:Gem::Version
|
73
|
-
version: 1.9.
|
52
|
+
version: 1.9.1
|
74
53
|
version:
|
75
54
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
55
|
requirements:
|
77
56
|
- - ">="
|
78
57
|
- !ruby/object:Gem::Version
|
79
|
-
version: "
|
58
|
+
version: "0"
|
80
59
|
version:
|
81
60
|
requirements: []
|
82
61
|
|
83
62
|
rubyforge_project: keywordargs
|
84
|
-
rubygems_version: 1.3.
|
63
|
+
rubygems_version: 1.3.5
|
85
64
|
signing_key:
|
86
|
-
specification_version:
|
87
|
-
summary:
|
88
|
-
test_files:
|
89
|
-
|
65
|
+
specification_version: 3
|
66
|
+
summary: keyword_arguments comes with a bunch of convenient methods for making "named arguments" (hashes as method arguments) in Ruby less painfull
|
67
|
+
test_files: []
|
68
|
+
|
data.tar.gz.sig
DELETED
data/CHANGELOG
DELETED
data/Manifest
DELETED
data/keyword_arguments.gemspec
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
Gem::Specification.new do |s|
|
4
|
-
s.name = %q{keyword_arguments}
|
5
|
-
s.version = "0.0.2"
|
6
|
-
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = ["Dominik Honnef"]
|
9
|
-
s.cert_chain = ["/home/dominikh/.rubyforge/gem-public_cert.pem"]
|
10
|
-
s.date = %q{2009-07-28}
|
11
|
-
s.description = %q{named_arguments comes with a bunch of convenient methods for making "named arguments" (hashes as method arguments) in Ruby less painfull}
|
12
|
-
s.email = %q{dominikho@gmx.net}
|
13
|
-
s.extra_rdoc_files = ["README.markdown", "CHANGELOG", "LICENSE", "lib/keyword_arguments.rb"]
|
14
|
-
s.files = ["Rakefile", "README.markdown", "CHANGELOG", "LICENSE", "test/test_module.rb", "Manifest", "lib/keyword_arguments.rb", "keyword_arguments.gemspec"]
|
15
|
-
s.has_rdoc = true
|
16
|
-
s.homepage = %q{http://keywordargs.rubyforge.org/}
|
17
|
-
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Keyword_arguments", "--main", "README.markdown"]
|
18
|
-
s.require_paths = ["lib"]
|
19
|
-
s.required_ruby_version = Gem::Requirement.new(">= 1.9.0")
|
20
|
-
s.rubyforge_project = %q{keywordargs}
|
21
|
-
s.rubygems_version = %q{1.3.1}
|
22
|
-
s.signing_key = %q{/home/dominikh/.rubyforge/gem-private_key.pem}
|
23
|
-
s.summary = %q{named_arguments comes with a bunch of convenient methods for making "named arguments" (hashes as method arguments) in Ruby less painfull}
|
24
|
-
s.test_files = ["test/test_module.rb"]
|
25
|
-
|
26
|
-
if s.respond_to? :specification_version then
|
27
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
28
|
-
s.specification_version = 2
|
29
|
-
|
30
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
31
|
-
else
|
32
|
-
end
|
33
|
-
else
|
34
|
-
end
|
35
|
-
end
|
data/test/test_module.rb
DELETED
@@ -1,97 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'test/unit/testcase'
|
4
|
-
require 'test/unit' if $0 == __FILE__
|
5
|
-
require 'mocha'
|
6
|
-
|
7
|
-
require 'keyword_arguments.rb'
|
8
|
-
|
9
|
-
class MixedMethodsTest
|
10
|
-
required_arguments :test, :test2
|
11
|
-
default_arguments test: 1
|
12
|
-
def foo(args = { })
|
13
|
-
args
|
14
|
-
end
|
15
|
-
|
16
|
-
def bar(var)
|
17
|
-
var
|
18
|
-
end
|
19
|
-
|
20
|
-
def fisk(args = { })
|
21
|
-
args
|
22
|
-
end
|
23
|
-
|
24
|
-
default_arguments key: 'value'
|
25
|
-
def meow(args = { })
|
26
|
-
args
|
27
|
-
end
|
28
|
-
|
29
|
-
default_arguments whatever: 'hi'
|
30
|
-
def self.blubb(args = { })
|
31
|
-
args
|
32
|
-
end
|
33
|
-
|
34
|
-
allowed_arguments :key1, :key2
|
35
|
-
def limited(args = { })
|
36
|
-
args
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
class TestModule < Test::Unit::TestCase
|
41
|
-
def setup
|
42
|
-
@m = MixedMethodsTest.new
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_default_arguments
|
46
|
-
h = Hash.new
|
47
|
-
h[:test] = 1
|
48
|
-
h[:test2] = 2
|
49
|
-
assert_equal h, @m.foo(:test2 => 2)
|
50
|
-
|
51
|
-
h = Hash.new
|
52
|
-
h[:test] = 3
|
53
|
-
h[:test2] = 2
|
54
|
-
assert_equal h, @m.foo(:test => 3, :test2 => 2)
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_required_arguments
|
58
|
-
assert_raises(ArgumentError) { @m.foo }
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_normal_methods
|
62
|
-
h = Hash.new
|
63
|
-
h[:nothing] = nil
|
64
|
-
assert_equal 1, @m.bar(1)
|
65
|
-
assert_equal h, @m.fisk(:nothing => nil)
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_chained_default_arguments
|
69
|
-
h = Hash.new
|
70
|
-
h[:test] = 1
|
71
|
-
h[:test2] = 2
|
72
|
-
assert_equal h, @m.foo(:test2 => 2)
|
73
|
-
|
74
|
-
h = Hash.new
|
75
|
-
h[:key] = 'value'
|
76
|
-
assert_equal h, @m.meow
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_singleton_method
|
80
|
-
h = Hash.new
|
81
|
-
h[:whatever] = 'hi'
|
82
|
-
assert_equal h, MixedMethodsTest.blubb
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_allowed_arguments
|
86
|
-
h = Hash.new
|
87
|
-
h[:key1] = 1
|
88
|
-
assert_equal h, @m.limited(:key1 => 1)
|
89
|
-
|
90
|
-
h = Hash.new
|
91
|
-
h[:key1] = 1
|
92
|
-
h[:key2] = 2
|
93
|
-
assert_equal h, @m.limited(:key1 => 1, :key2 => 2)
|
94
|
-
|
95
|
-
assert_raises(ArgumentError) { @m.limited(:key1 => 1, :key2 => 2, :key3 => 3) }
|
96
|
-
end
|
97
|
-
end
|
metadata.gz.sig
DELETED
Binary file
|