ArgsParser 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.
- 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
|