ArgsParser 0.0.10 → 1.0.0

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