applix 0.3.7 → 0.3.8
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.
- data/Gemfile +2 -2
- data/VERSION +1 -1
- data/lib/applix.rb +10 -2
- data/spec/applix_spec.rb +45 -1
- metadata +87 -85
data/Gemfile
CHANGED
|
@@ -4,8 +4,8 @@ source "http://rubygems.org"
|
|
|
4
4
|
# Include everything needed to run rake, tests, features, etc.
|
|
5
5
|
group :development do
|
|
6
6
|
gem "rspec", "~> 2.3.0"
|
|
7
|
-
gem "bundler", "
|
|
8
|
-
gem "jeweler"
|
|
7
|
+
gem "bundler", "> 1.0.0"
|
|
8
|
+
gem "jeweler"
|
|
9
9
|
gem "rcov", ">= 0"
|
|
10
10
|
gem "ZenTest", ">= 4.4.2"
|
|
11
11
|
end
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.3.
|
|
1
|
+
0.3.8
|
data/lib/applix.rb
CHANGED
|
@@ -50,8 +50,12 @@ usage: #{$0} <args...>
|
|
|
50
50
|
# see it as its first argument,
|
|
51
51
|
(args.unshift name.to_s) if(name != :any && task[:name] == :any)
|
|
52
52
|
|
|
53
|
-
#
|
|
54
|
-
|
|
53
|
+
# cluster for nesting or direct calling?
|
|
54
|
+
if task[:cluster]
|
|
55
|
+
rc = Applix.main(args, options, &task[:code])
|
|
56
|
+
else
|
|
57
|
+
rc = task[:code].call(*args, options)
|
|
58
|
+
end
|
|
55
59
|
|
|
56
60
|
# post handle
|
|
57
61
|
unless @epilog_cb.nil?
|
|
@@ -75,6 +79,10 @@ usage: #{$0} <args...>
|
|
|
75
79
|
tasks[:any] = { :name => :any, :code => blk }
|
|
76
80
|
end
|
|
77
81
|
|
|
82
|
+
def cluster name, &blk
|
|
83
|
+
tasks[name.to_sym] = { :name => name, :code => blk, :cluster => true }
|
|
84
|
+
end
|
|
85
|
+
|
|
78
86
|
def handle name, &blk
|
|
79
87
|
tasks[name.to_sym] = { :name => name, :code => blk }
|
|
80
88
|
end
|
data/spec/applix_spec.rb
CHANGED
|
@@ -2,13 +2,57 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
|
2
2
|
|
|
3
3
|
describe "Applix" do
|
|
4
4
|
|
|
5
|
+
it 'calls cluster prolog' do
|
|
6
|
+
Applix.main(%w(foo a b)) do
|
|
7
|
+
cluster(:foo) do
|
|
8
|
+
prolog { |args, options|
|
|
9
|
+
args.should == %w(a b)
|
|
10
|
+
args.reverse!
|
|
11
|
+
}
|
|
12
|
+
handle(:a) { raise 'should not be called!' }
|
|
13
|
+
handle(:b) { :b_was_called }
|
|
14
|
+
end
|
|
15
|
+
end.should == :b_was_called
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it 'support :cluster for nesting' do
|
|
19
|
+
args = %w(-a -b:2 foo bar p1 p2)
|
|
20
|
+
Applix.main(args) do
|
|
21
|
+
handle(:foo) do
|
|
22
|
+
raise 'should not be called!'
|
|
23
|
+
end
|
|
24
|
+
cluster(:foo) do
|
|
25
|
+
handle(:bar) do |*args, options|
|
|
26
|
+
args.should == %w(p1 p2)
|
|
27
|
+
options.should == {:a => true, :b => 2}
|
|
28
|
+
args
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end.should == %w{p1 p2}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it 'can even cluster clusters' do
|
|
35
|
+
args = %w(foo bar f p1 p2)
|
|
36
|
+
Applix.main(args) do
|
|
37
|
+
cluster(:foo) do
|
|
38
|
+
cluster(:bar) do
|
|
39
|
+
handle(:f) do |*args, options|
|
|
40
|
+
args.should == %w(p1 p2)
|
|
41
|
+
options.should == {}
|
|
42
|
+
args
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end.should == %w{p1 p2}
|
|
47
|
+
end
|
|
48
|
+
|
|
5
49
|
it 'prolog can even temper with arguments to modify the handle sequence' do
|
|
6
50
|
Applix.main(['a', 'b']) do
|
|
7
51
|
prolog { |args, options|
|
|
8
52
|
args.should == ['a', 'b']
|
|
9
53
|
args.reverse!
|
|
10
54
|
}
|
|
11
|
-
handle(:a) { raise '
|
|
55
|
+
handle(:a) { raise 'should not be called!' }
|
|
12
56
|
handle(:b) { :b_was_called }
|
|
13
57
|
end.should == :b_was_called
|
|
14
58
|
end
|
metadata
CHANGED
|
@@ -1,116 +1,125 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: applix
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.3.8
|
|
4
5
|
prerelease:
|
|
5
|
-
version: 0.3.7
|
|
6
6
|
platform: ruby
|
|
7
|
-
authors:
|
|
7
|
+
authors:
|
|
8
8
|
- dirk luesebrink
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
dependencies:
|
|
16
|
-
- !ruby/object:Gem::Dependency
|
|
12
|
+
date: 2011-08-28 00:00:00.000000000Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
17
15
|
name: rspec
|
|
18
|
-
requirement: &
|
|
16
|
+
requirement: &2156881460 !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: 2.3.0
|
|
24
22
|
type: :development
|
|
25
23
|
prerelease: false
|
|
26
|
-
version_requirements: *
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
24
|
+
version_requirements: *2156881460
|
|
25
|
+
- !ruby/object:Gem::Dependency
|
|
28
26
|
name: bundler
|
|
29
|
-
requirement: &
|
|
27
|
+
requirement: &2156880080 !ruby/object:Gem::Requirement
|
|
30
28
|
none: false
|
|
31
|
-
requirements:
|
|
32
|
-
- -
|
|
33
|
-
- !ruby/object:Gem::Version
|
|
29
|
+
requirements:
|
|
30
|
+
- - ! '>'
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
34
32
|
version: 1.0.0
|
|
35
33
|
type: :development
|
|
36
34
|
prerelease: false
|
|
37
|
-
version_requirements: *
|
|
38
|
-
- !ruby/object:Gem::Dependency
|
|
35
|
+
version_requirements: *2156880080
|
|
36
|
+
- !ruby/object:Gem::Dependency
|
|
39
37
|
name: jeweler
|
|
40
|
-
requirement: &
|
|
38
|
+
requirement: &2156878580 !ruby/object:Gem::Requirement
|
|
41
39
|
none: false
|
|
42
|
-
requirements:
|
|
43
|
-
- -
|
|
44
|
-
- !ruby/object:Gem::Version
|
|
45
|
-
version:
|
|
40
|
+
requirements:
|
|
41
|
+
- - ! '>='
|
|
42
|
+
- !ruby/object:Gem::Version
|
|
43
|
+
version: '0'
|
|
46
44
|
type: :development
|
|
47
45
|
prerelease: false
|
|
48
|
-
version_requirements: *
|
|
49
|
-
- !ruby/object:Gem::Dependency
|
|
46
|
+
version_requirements: *2156878580
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
50
48
|
name: rcov
|
|
51
|
-
requirement: &
|
|
49
|
+
requirement: &2156877440 !ruby/object:Gem::Requirement
|
|
52
50
|
none: false
|
|
53
|
-
requirements:
|
|
54
|
-
- -
|
|
55
|
-
- !ruby/object:Gem::Version
|
|
56
|
-
version:
|
|
51
|
+
requirements:
|
|
52
|
+
- - ! '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
57
55
|
type: :development
|
|
58
56
|
prerelease: false
|
|
59
|
-
version_requirements: *
|
|
60
|
-
- !ruby/object:Gem::Dependency
|
|
57
|
+
version_requirements: *2156877440
|
|
58
|
+
- !ruby/object:Gem::Dependency
|
|
61
59
|
name: ZenTest
|
|
62
|
-
requirement: &
|
|
60
|
+
requirement: &2156876200 !ruby/object:Gem::Requirement
|
|
63
61
|
none: false
|
|
64
|
-
requirements:
|
|
65
|
-
- -
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
62
|
+
requirements:
|
|
63
|
+
- - ! '>='
|
|
64
|
+
- !ruby/object:Gem::Version
|
|
67
65
|
version: 4.4.2
|
|
68
66
|
type: :development
|
|
69
67
|
prerelease: false
|
|
70
|
-
version_requirements: *
|
|
71
|
-
- !ruby/object:Gem::Dependency
|
|
68
|
+
version_requirements: *2156876200
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
72
70
|
name: rspec
|
|
73
|
-
requirement: &
|
|
71
|
+
requirement: &2156865360 !ruby/object:Gem::Requirement
|
|
74
72
|
none: false
|
|
75
|
-
requirements:
|
|
76
|
-
- -
|
|
77
|
-
- !ruby/object:Gem::Version
|
|
73
|
+
requirements:
|
|
74
|
+
- - ! '>='
|
|
75
|
+
- !ruby/object:Gem::Version
|
|
78
76
|
version: 2.3.0
|
|
79
77
|
type: :development
|
|
80
78
|
prerelease: false
|
|
81
|
-
version_requirements: *
|
|
82
|
-
- !ruby/object:Gem::Dependency
|
|
79
|
+
version_requirements: *2156865360
|
|
80
|
+
- !ruby/object:Gem::Dependency
|
|
83
81
|
name: rcov
|
|
84
|
-
requirement: &
|
|
82
|
+
requirement: &2156864240 !ruby/object:Gem::Requirement
|
|
85
83
|
none: false
|
|
86
|
-
requirements:
|
|
87
|
-
- -
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version:
|
|
84
|
+
requirements:
|
|
85
|
+
- - ! '>='
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: '0'
|
|
90
88
|
type: :development
|
|
91
89
|
prerelease: false
|
|
92
|
-
version_requirements: *
|
|
93
|
-
- !ruby/object:Gem::Dependency
|
|
90
|
+
version_requirements: *2156864240
|
|
91
|
+
- !ruby/object:Gem::Dependency
|
|
94
92
|
name: ZenTest
|
|
95
|
-
requirement: &
|
|
93
|
+
requirement: &2156862960 !ruby/object:Gem::Requirement
|
|
96
94
|
none: false
|
|
97
|
-
requirements:
|
|
98
|
-
- -
|
|
99
|
-
- !ruby/object:Gem::Version
|
|
95
|
+
requirements:
|
|
96
|
+
- - ! '>='
|
|
97
|
+
- !ruby/object:Gem::Version
|
|
100
98
|
version: 4.4.2
|
|
101
99
|
type: :development
|
|
102
100
|
prerelease: false
|
|
103
|
-
version_requirements: *
|
|
104
|
-
description: " ApplixHash#from_argv builds hashes from ARGV like argument vectors\n
|
|
101
|
+
version_requirements: *2156862960
|
|
102
|
+
description: ! " ApplixHash#from_argv builds hashes from ARGV like argument vectors\n
|
|
103
|
+
\ according to following examples: \n \n '-f' -->
|
|
104
|
+
{ :f => true }\n '--flag' --> { :flag => true }\n '--flag:false'
|
|
105
|
+
\ --> { :flag => false }\n '--flag=false' --> { :flag =>
|
|
106
|
+
'false' }\n '--option=value' --> { :option => \"value\" }\n '--int=1'
|
|
107
|
+
\ --> { :int => \"1\" }\n '--float=2.3' --> { :float
|
|
108
|
+
\ => \"2.3\" }\n '--float:2.3' --> { :float => 2.3 }\n '--txt=\"foo
|
|
109
|
+
bar\"' --> { :txt => \"foo bar\" }\n '--txt:'\"foo bar\"'' --> {
|
|
110
|
+
:txt => \"foo bar\" }\n '--txt:%w{foo bar}' --> { :txt => [\"foo\",
|
|
111
|
+
\"bar\"] }\n '--now:Time.now' --> { :now => #<Date: 3588595/2,0,2299161>
|
|
112
|
+
}\n \n remaining arguments(non flag/options) are inserted as [:arguments,\n
|
|
113
|
+
\ args], eg:\n Hash.from_argv %w(--foo --bar=loo 123 now)\n becomes
|
|
114
|
+
\ \n { :foo => true, :bar => 'loo', :arguments => [\"123\", \"now\"] }\n
|
|
115
|
+
\ \n"
|
|
105
116
|
email: dirk@sebrink.de
|
|
106
117
|
executables: []
|
|
107
|
-
|
|
108
118
|
extensions: []
|
|
109
|
-
|
|
110
|
-
extra_rdoc_files:
|
|
119
|
+
extra_rdoc_files:
|
|
111
120
|
- LICENSE
|
|
112
121
|
- README.mkd
|
|
113
|
-
files:
|
|
122
|
+
files:
|
|
114
123
|
- .autotest
|
|
115
124
|
- .document
|
|
116
125
|
- .rspec
|
|
@@ -125,38 +134,31 @@ files:
|
|
|
125
134
|
- spec/applix_spec.rb
|
|
126
135
|
- spec/oattr_spec.rb
|
|
127
136
|
- spec/spec_helper.rb
|
|
128
|
-
has_rdoc: true
|
|
129
137
|
homepage: http://github.com/crux/applix
|
|
130
138
|
licenses: []
|
|
131
|
-
|
|
132
139
|
post_install_message:
|
|
133
140
|
rdoc_options: []
|
|
134
|
-
|
|
135
|
-
require_paths:
|
|
141
|
+
require_paths:
|
|
136
142
|
- lib
|
|
137
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
143
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
138
144
|
none: false
|
|
139
|
-
requirements:
|
|
140
|
-
- -
|
|
141
|
-
- !ruby/object:Gem::Version
|
|
142
|
-
|
|
143
|
-
segments:
|
|
145
|
+
requirements:
|
|
146
|
+
- - ! '>='
|
|
147
|
+
- !ruby/object:Gem::Version
|
|
148
|
+
version: '0'
|
|
149
|
+
segments:
|
|
144
150
|
- 0
|
|
145
|
-
|
|
146
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
|
+
hash: 3511513831159462149
|
|
152
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
153
|
none: false
|
|
148
|
-
requirements:
|
|
149
|
-
- -
|
|
150
|
-
- !ruby/object:Gem::Version
|
|
151
|
-
version:
|
|
154
|
+
requirements:
|
|
155
|
+
- - ! '>='
|
|
156
|
+
- !ruby/object:Gem::Version
|
|
157
|
+
version: '0'
|
|
152
158
|
requirements: []
|
|
153
|
-
|
|
154
159
|
rubyforge_project:
|
|
155
|
-
rubygems_version: 1.6
|
|
160
|
+
rubygems_version: 1.8.6
|
|
156
161
|
signing_key:
|
|
157
162
|
specification_version: 3
|
|
158
163
|
summary: build typed option hashed from command line arguments
|
|
159
|
-
test_files:
|
|
160
|
-
- spec/applix_spec.rb
|
|
161
|
-
- spec/oattr_spec.rb
|
|
162
|
-
- spec/spec_helper.rb
|
|
164
|
+
test_files: []
|