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 CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.0.5 2010-03-15
2
+
3
+ * parse first arg
4
+
1
5
  === 0.0.1 2010-02-23
2
6
 
3
7
  * 1 major enhancement:
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
@@ -6,7 +6,7 @@ directory = File.expand_path(File.dirname(__FILE__))
6
6
  require File.join(directory, 'ArgsParser', 'Parser')
7
7
 
8
8
  module ArgsParser
9
- VERSION = '0.0.4'
9
+ VERSION = '0.0.5'
10
10
 
11
11
  def ArgsParser.parser
12
12
  Parser.new
@@ -3,10 +3,8 @@
3
3
 
4
4
  class Parser
5
5
 
6
- def params
7
- @params
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 "options" do
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
- - 4
9
- version: 0.0.4
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-12 00:00:00 +09:00
17
+ date: 2010-03-15 00:00:00 +09:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency