ArgsParser 0.0.10 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
File without changes
@@ -1,3 +1,7 @@
1
+ === 1.0.0 2011-06-22
2
+
3
+ * default value
4
+
1
5
  === 0.0.10 2010-12-1
2
6
 
3
7
  * fix help string of long argument
@@ -10,16 +10,16 @@
10
10
 
11
11
  parser = ArgsParser.parser
12
12
  parser.bind(:help, :h, "show help")
13
- parser.bind(:size, :s, "size")
13
+ parser.bind(:size, :s, "size", "320x240") # name, shortname, comment, default
14
14
  parser.comment(:min, "min size")
15
15
  parser.comment(:max, "max size")
16
- parser.comment(:debug, "debug mode")
16
+ parser.comment(:debug, "debug mode", false) # name, comment, default
17
17
 
18
18
  params = parser.parse(ARGV)
19
19
 
20
20
  if parser.has_option(:help) or !parser.has_params([:size, :max, :min])
21
21
  puts parser.help
22
- puts 'e.g. ./example.rb -s 320x240 -min 100 -max 500'
22
+ puts 'e.g. ruby example.rb -s 320x240 -min 100 -max 500'
23
23
  end
24
24
 
25
25
  puts params[:size]
@@ -1,18 +1,20 @@
1
1
  #!/usr/bin/env ruby
2
2
  # -*- coding: utf-8 -*-
3
- require '../lib/ArgsParser'
3
+ require 'rubygems'
4
+ #require 'ArgsParser'
5
+ require File.dirname(__FILE__)+'/../lib/ArgsParser'
4
6
 
5
7
  parser = ArgsParser.parser
6
8
  parser.bind(:help, :h, "show help")
7
9
  parser.bind(:frame, :f, "frame image (required)")
8
- parser.bind(:message, :m, "message (required)") # name, shortname, comment for help
10
+ parser.bind(:message, :m, "message (required)", 'hello!!') # name, shortname, comment, default
9
11
  parser.bind(:size, :s, "size (required)")
10
- parser.comment(:min, "minimum size") # add comment for help
12
+ parser.comment(:min, "minimum size")
11
13
  parser.comment(:max, "maximum size")
12
- parser.comment(:debug, "debug mode")
14
+ parser.comment(:debug, "debug mode", false) # name, comment, default
13
15
 
14
16
  first, params = parser.parse(ARGV)
15
- required_params = [:frame, :message, :size]
17
+ required_params = [:frame, :size]
16
18
 
17
19
  if parser.has_option(:help) or !parser.has_params(required_params)
18
20
  puts parser.help
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  # -*- coding: utf-8 -*-
3
- require '../lib/ArgsParser'
3
+ require 'rubygems'
4
+ # require 'ArgsParser'
5
+ require File.dirname(__FILE__)+'/../lib/ArgsParser'
4
6
 
5
7
  parser = ArgsParser.parser
6
8
  parser.bind(:help, :h, "show help")
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  # -*- coding: utf-8 -*-
3
- require '../lib/ArgsParser'
3
+ require 'rubygems'
4
+ require 'ArgsParser'
5
+ require File.dirname(__FILE__)+'/../lib/ArgsParser'
4
6
 
5
7
  parser = ArgsParser.parser
6
8
  parser.bind(:help, :h, "show help")
@@ -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.10'
9
+ VERSION = '1.0.0'
10
10
 
11
11
  def ArgsParser.parser
12
12
  Parser.new
@@ -1,105 +1,117 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # ARGSのparser
3
3
 
4
- class Parser
4
+ module ArgsParser
5
+ class Parser
6
+ attr_reader :params, :comments, :first
5
7
 
6
- attr_reader :params, :comments, :first
7
-
8
- def initialize
9
- @binds = Hash.new
10
- @comments = Hash.new
11
- end
12
-
13
- def parse(argv)
14
- # parse
15
- @first = nil
16
- if argv.size > 0 and !(argv.first =~ /^-+.+/)
17
- @first = argv.shift
8
+ def initialize
9
+ @binds = Hash.new
10
+ @comments = Hash.new
11
+ @defaults = Hash.new
18
12
  end
19
13
 
20
- @params = Hash.new
21
- for i in 0...argv.size do
22
- if argv[i].match(/^-+.+/)
23
- term = argv[i].match(/^-+(.+)/)[1].to_sym
24
- if i == argv.size-1 || argv[i+1].match(/^-+.+/)
25
- @params[term] = true # option
26
- else
27
- @params[term] = argv[i+1] # param
28
- end
14
+ def parse(argv)
15
+ # parse
16
+ @first = nil
17
+ if argv.size > 0 and !(argv.first =~ /^-+.+/)
18
+ @first = argv.shift
29
19
  end
30
- end
31
-
32
- @binds.keys.each{|name|
33
- fullname = @binds[name]
34
- if @params[fullname] == nil && @params[name] != nil
35
- @params[fullname] = @params[name]
36
- @params.delete(name)
20
+
21
+ @params = Hash.new
22
+ for i in 0...argv.size do
23
+ if argv[i].match(/^-+.+/)
24
+ term = argv[i].match(/^-+(.+)/)[1].to_sym
25
+ if i == argv.size-1 || argv[i+1].match(/^-+.+/)
26
+ @params[term] = true # option
27
+ else
28
+ @params[term] = argv[i+1] # param
29
+ end
30
+ end
37
31
  end
38
- }
39
-
40
- return @first, @params
41
- end
32
+
33
+ @binds.keys.each{|name|
34
+ fullname = @binds[name]
35
+ if @params[fullname] == nil && @params[name] != nil
36
+ @params[fullname] = @params[name]
37
+ @params.delete(name)
38
+ end
39
+ }
42
40
 
43
- def bind(fullname, name, comment=nil)
44
- @binds[name.to_sym] = fullname.to_sym
45
- if comment != nil
46
- comment(fullname, comment)
41
+ @defaults.each{|k,v|
42
+ if @params[k] == nil
43
+ @params[k] = v
44
+ end
45
+ }
46
+
47
+ return @first, @params
47
48
  end
48
- end
49
49
 
50
- def has_param(name)
51
- @params[name].class == String
52
- end
50
+ def bind(fullname, name, comment, default=nil)
51
+ @binds[name.to_sym] = fullname.to_sym
52
+ comment(fullname, comment, default)
53
+ end
53
54
 
54
- def has_params(params_arr)
55
- params_arr.each{|name|
56
- return false if !has_param(name)
57
- }
58
- return true
59
- end
55
+ def comment(name, comment, default=nil)
56
+ @comments[name.to_sym] = comment.to_s
57
+ @defaults[name.to_sym] = default if default != nil
58
+ end
60
59
 
61
- def has_option(name)
62
- @params[name] == true
63
- end
60
+ def has_param(name)
61
+ @params[name].class == String
62
+ end
64
63
 
65
- def has_options(options_arr)
66
- options_arr.each{|name|
67
- return false if !has_option(name)
68
- }
69
- return true
70
- end
64
+ def has_params(params_arr)
65
+ params_arr.each{|name|
66
+ return false if !has_param(name)
67
+ }
68
+ return true
69
+ end
71
70
 
72
- def comment(name, comment)
73
- @comments[name.to_sym] = comment.to_s
74
- end
75
-
76
- def help
77
- lines = Hash.new
78
- @comments.each{|k,v|
79
- lines[k] = {:comment => v}
80
- }
71
+ def has_option(name)
72
+ @params[name] == true
73
+ end
81
74
 
82
- @binds.each{|k,v|
83
- lines[v][:binds] = k
84
- }
85
-
86
- most_long = 0
87
- lines.each{|k,v|
88
- name = " -#{k}"
89
- name += " (-#{v[:binds]})" if v[:binds]
90
- most_long = name.size if most_long < name.size
91
- }
75
+ def has_options(options_arr)
76
+ options_arr.each{|name|
77
+ return false if !has_option(name)
78
+ }
79
+ return true
80
+ end
92
81
 
93
- s = ""
94
- lines.each{|k,v|
95
- name = " -#{k}"
96
- name += " (-#{v[:binds]})" if v[:binds]
97
- line = name.ljust(most_long+2)
98
- line += v[:comment]
99
- s += line+"\n"
100
- }
101
- s = "options:\n" + s
102
- return s
103
- end
82
+ def help
83
+ lines = Hash.new
84
+ @comments.each{|k,v|
85
+ lines[k] = {:comment => v}
86
+ }
87
+
88
+ @binds.each{|k,v|
89
+ lines[v][:binds] = k
90
+ }
104
91
 
92
+ @defaults.each{|k,v|
93
+ lines[k][:default] = v
94
+ }
95
+
96
+ most_long = 0
97
+ lines.each{|k,v|
98
+ name = " -#{k}"
99
+ name += " (-#{v[:binds]})" if v[:binds]
100
+ most_long = name.size if most_long < name.size
101
+ }
102
+
103
+ s = ""
104
+ lines.each{|k,v|
105
+ name = " -#{k}"
106
+ name += " (-#{v[:binds]})" if v[:binds]
107
+ line = name.ljust(most_long+2)
108
+ line += v[:comment]
109
+ line += " : default - " + v[:default].to_s if v[:default] != nil
110
+ s += line+"\n"
111
+ }
112
+ s = "options:\n" + s
113
+ return s
114
+ end
115
+
116
+ end
105
117
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ArgsParser
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease: false
4
+ hash: 23
5
+ prerelease:
6
6
  segments:
7
+ - 1
7
8
  - 0
8
9
  - 0
9
- - 10
10
- version: 0.0.10
10
+ version: 1.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - shokai
@@ -15,41 +15,24 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-01 00:00:00 +09:00
19
- default_executable:
18
+ date: 2011-06-22 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- name: rubyforge
21
+ name: hoe
23
22
  prerelease: false
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 7
28
+ hash: 35
30
29
  segments:
31
30
  - 2
32
- - 0
31
+ - 9
33
32
  - 4
34
- version: 2.0.4
33
+ version: 2.9.4
35
34
  type: :development
36
35
  version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: hoe
39
- prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 19
46
- segments:
47
- - 2
48
- - 6
49
- - 2
50
- version: 2.6.2
51
- type: :development
52
- version_requirements: *id002
53
36
  description: "* Parse args from command line."
54
37
  email:
55
38
  - hashimoto@shokai.org
@@ -77,7 +60,7 @@ files:
77
60
  - spec/parser_spec.rb
78
61
  - spec/spec.opts
79
62
  - spec/spec_helper.rb
80
- has_rdoc: true
63
+ - .gemtest
81
64
  homepage: http://github.com/shokai/argsparser-ruby
82
65
  licenses: []
83
66
 
@@ -108,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
91
  requirements: []
109
92
 
110
93
  rubyforge_project: ArgsParser
111
- rubygems_version: 1.3.7
94
+ rubygems_version: 1.7.2
112
95
  signing_key:
113
96
  specification_version: 3
114
97
  summary: "* Parse args from command line."