args_parser 0.1.3 → 0.1.4

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.1.4 2013-01-26
2
+
3
+ * run lambda in default value
4
+
1
5
  === 0.1.3 2013-01-04
2
6
 
3
7
  * use bundler gem template
@@ -53,6 +53,7 @@ module ArgsParser
53
53
  instance_eval(&block)
54
54
  end
55
55
 
56
+ private
56
57
  def arg(name, description, opts={})
57
58
  name = name.to_sym
58
59
  params[name][:default] = opts[:default]
@@ -90,6 +91,12 @@ module ArgsParser
90
91
  end
91
92
  end
92
93
 
94
+ def default(key)
95
+ d = params[key.to_sym][:default]
96
+ (d and d.kind_of? Proc) ? d.call : d
97
+ end
98
+
99
+ public
93
100
  def args
94
101
  params.keys
95
102
  end
@@ -115,7 +122,7 @@ module ArgsParser
115
122
  end
116
123
 
117
124
  def [](key)
118
- params[key.to_sym][:value] || params[key.to_sym][:default]
125
+ params[key.to_sym][:value] or default(key)
119
126
  end
120
127
 
121
128
  def []=(key, value)
@@ -166,7 +173,7 @@ module ArgsParser
166
173
  line += " (-#{i[:alias]})" if i[:alias]
167
174
  line = line.ljust(len+2)
168
175
  line += i[:description].to_s
169
- line += " : default - #{i[:default]}" if i[:default]
176
+ line += " : default - #{default i[:name]}" if i[:default]
170
177
  line
171
178
  }.join("\n")
172
179
  end
@@ -1,3 +1,3 @@
1
1
  module ArgsParser
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
@@ -9,6 +9,7 @@ parser = ArgsParser.parse ARGV do
9
9
  arg :url, 'URL', :alias => :u
10
10
  arg :output, 'output file', :alias => :o, :default => 'out.html'
11
11
  arg :verbose, 'verbose mode'
12
+ arg :time, 'time', :default => lambda{ Time.now }
12
13
  arg :help, 'show help', :alias => :h
13
14
 
14
15
  filter :url do |v|
@@ -0,0 +1,26 @@
1
+ require File.expand_path 'test_helper', File.dirname(__FILE__)
2
+
3
+ class TestArgsParserDefault < MiniTest::Unit::TestCase
4
+ def setup
5
+ @argv = ['--age', '40']
6
+ @parser = ArgsParser.parse @argv do
7
+ arg :name, 'use name', :default => 'shokai'
8
+ arg :age, 'age', :default => 14
9
+ arg :time, 'time', :default => lambda{ Time.now }
10
+ end
11
+ end
12
+
13
+ def test_default
14
+ assert @parser[:name] == 'shokai'
15
+ end
16
+
17
+ def test_overwrite
18
+ assert @parser[:age] == 40
19
+ end
20
+
21
+ def test_name
22
+ old = @parser[:time]
23
+ sleep 1
24
+ assert old < @parser[:time]
25
+ end
26
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: args_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-03 00:00:00.000000000 Z
12
+ date: 2013-01-26 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Parse ARGV from command line with DSL.
15
15
  email:
@@ -38,6 +38,7 @@ files:
38
38
  - samples/twitter_timeline.rb
39
39
  - test/test_args_parser.rb
40
40
  - test/test_args_parser_style_equal.rb
41
+ - test/test_default.rb
41
42
  - test/test_filter.rb
42
43
  - test/test_helper.rb
43
44
  - test/test_validator.rb
@@ -69,6 +70,7 @@ summary: Parse ARGV from command line with DSL.
69
70
  test_files:
70
71
  - test/test_args_parser.rb
71
72
  - test/test_args_parser_style_equal.rb
73
+ - test/test_default.rb
72
74
  - test/test_filter.rb
73
75
  - test/test_helper.rb
74
76
  - test/test_validator.rb