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