ArgsParser 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/examples/example.rb +8 -4
- data/lib/ArgsParser.rb +1 -1
- data/lib/ArgsParser/Parser.rb +8 -9
- data/spec/parser_spec.rb +50 -2
- metadata +3 -3
data/History.txt
CHANGED
data/examples/example.rb
CHANGED
@@ -4,14 +4,14 @@ require '../lib/ArgsParser'
|
|
4
4
|
|
5
5
|
parser = ArgsParser.parser
|
6
6
|
parser.bind(:help, :h, "show help")
|
7
|
-
parser.bind(:frame, :f)
|
8
|
-
parser.bind(:message, :m, "message") # name, shortname, comment for help
|
9
|
-
parser.bind(:size, :s, "size")
|
7
|
+
parser.bind(:frame, :f, "frame image (required)")
|
8
|
+
parser.bind(:message, :m, "message (required)") # name, shortname, comment for help
|
9
|
+
parser.bind(:size, :s, "size (required)")
|
10
10
|
parser.comment(:min, "minimum size") # add comment for help
|
11
11
|
parser.comment(:max, "maximum size")
|
12
12
|
parser.comment(:debug, "debug mode")
|
13
13
|
|
14
|
-
params = parser.parse(ARGV)
|
14
|
+
first, params = parser.parse(ARGV)
|
15
15
|
required_params = [:frame, :message, :size]
|
16
16
|
|
17
17
|
if parser.has_option(:help) or !parser.has_params(required_params)
|
@@ -25,6 +25,10 @@ if parser.has_option(:help) or !parser.has_params(required_params)
|
|
25
25
|
exit 1
|
26
26
|
end
|
27
27
|
|
28
|
+
if first
|
29
|
+
puts 'first arg : ' + first
|
30
|
+
end
|
31
|
+
|
28
32
|
if parser.has_param(:size)
|
29
33
|
puts 'size : ' + params[:size]
|
30
34
|
end
|
data/lib/ArgsParser.rb
CHANGED
data/lib/ArgsParser/Parser.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
|
4
4
|
class Parser
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
end
|
9
|
-
|
6
|
+
attr_reader :params, :comments, :first
|
7
|
+
|
10
8
|
def initialize
|
11
9
|
@binds = Hash.new
|
12
10
|
@comments = Hash.new
|
@@ -14,6 +12,11 @@ class Parser
|
|
14
12
|
|
15
13
|
def parse(argv)
|
16
14
|
# parse
|
15
|
+
@first = nil
|
16
|
+
if argv.size > 0 and !(argv.first =~ /^-+.+/)
|
17
|
+
@first = argv.shift
|
18
|
+
end
|
19
|
+
|
17
20
|
@params = Hash.new
|
18
21
|
for i in 0...argv.size do
|
19
22
|
if argv[i].match(/^-+.+/)
|
@@ -34,7 +37,7 @@ class Parser
|
|
34
37
|
end
|
35
38
|
}
|
36
39
|
|
37
|
-
return @params
|
40
|
+
return @first, @params
|
38
41
|
end
|
39
42
|
|
40
43
|
def bind(fullname, name, comment=nil)
|
@@ -70,10 +73,6 @@ class Parser
|
|
70
73
|
@comments[name.to_sym] = comment.to_s
|
71
74
|
end
|
72
75
|
|
73
|
-
def comments
|
74
|
-
@comments
|
75
|
-
end
|
76
|
-
|
77
76
|
def help
|
78
77
|
binds_reversed = Hash.new
|
79
78
|
most_longname_size = 0
|
data/spec/parser_spec.rb
CHANGED
@@ -1,8 +1,52 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
2
|
|
3
|
-
describe "
|
3
|
+
describe "test of parsing first-arg" do
|
4
|
+
before do
|
5
|
+
@argv = ['foo']
|
6
|
+
@parser = ArgsParser.parser
|
7
|
+
@parser.parse(@argv)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "has first-arg" do
|
11
|
+
@parser.first.should == 'foo'
|
12
|
+
end
|
13
|
+
|
14
|
+
it "has not params" do
|
15
|
+
@parser.params.size.should == 0
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "test of parsing params" do
|
4
20
|
before do
|
5
21
|
@argv = ['-x', '320',
|
22
|
+
'-yscale', '240',
|
23
|
+
'-debug']
|
24
|
+
@parser = ArgsParser.parser
|
25
|
+
@parser.comment(:debug, "debug mode")
|
26
|
+
@parser.bind(:xscale, :x, "width")
|
27
|
+
@parser.bind(:yscale, :y, "height")
|
28
|
+
@first, @params = @parser.parse(@argv)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "has not first-arg" do
|
32
|
+
@first.should == nil
|
33
|
+
end
|
34
|
+
|
35
|
+
it "has params" do
|
36
|
+
@parser.has_params([:xscale, :yscale]).should == true
|
37
|
+
@params[:xscale].to_i.should == 320
|
38
|
+
@params[:yscale].to_i.should == 240
|
39
|
+
end
|
40
|
+
|
41
|
+
it "has an option" do
|
42
|
+
@parser.has_option(:debug).should == true
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "test of parsing first-arg and params" do
|
47
|
+
before do
|
48
|
+
@argv = ['foo',
|
49
|
+
'-x', '320',
|
6
50
|
'-yscale', '240',
|
7
51
|
'-m', 'hello world',
|
8
52
|
'-h',
|
@@ -15,7 +59,11 @@ describe "options" do
|
|
15
59
|
@parser.bind(:help, :h, "show help")
|
16
60
|
@parser.bind(:xscale, :x, "width")
|
17
61
|
@parser.bind(:yscale, :y, "height")
|
18
|
-
@params = @parser.parse(@argv)
|
62
|
+
@first, @params = @parser.parse(@argv)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "has the first-arg" do
|
66
|
+
@first.should == 'foo'
|
19
67
|
end
|
20
68
|
|
21
69
|
it "has param" do
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- shokai
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-15 00:00:00 +09:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|