user-choices 1.1.5 → 1.1.6

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.
@@ -1,3 +1,6 @@
1
+ Version 1.1.6
2
+ * Allow a :string type conversion (user request). It does nothing.
3
+
1
4
  Version 1.1.5
2
5
  * Improved example files so that they don't include old S4TUtils load-path
3
6
  setting. Not needed by the people who'll use them.
@@ -41,4 +44,4 @@ Version 1.1.0
41
44
  * A tutorial.
42
45
 
43
46
  Version 1.0.0
44
- * Version from _Everyday Scripting with Ruby_
47
+ * Version from _Everyday Scripting with Ruby_
data/Rakefile CHANGED
@@ -4,13 +4,11 @@
4
4
  # Copyright (c) 2007. All rights reserved.
5
5
 
6
6
  require 'hoe'
7
- require 'lib/user-choices/version'
7
+ $:.unshift(File.join(Dir.pwd, "lib"))
8
+ require 'user-choices/version'
8
9
 
9
10
  PROJECT='user-choices'
10
11
  THIS_RELEASE=UserChoices::Version
11
- ROOT = "svn+ssh://marick@rubyforge.org/var/svn/#{PROJECT}"
12
- ALL_EXPORTS="#{ENV['HOME']}/tmp/exports"
13
- PROJECT_EXPORTS = "#{ALL_EXPORTS}/#{PROJECT}"
14
12
 
15
13
 
16
14
  Hoe.new(PROJECT, THIS_RELEASE) do |p|
@@ -40,60 +38,8 @@ task 'slow' do
40
38
  S4tUtils.run_particular_tests('test', 'slow')
41
39
  end
42
40
 
43
- def assert_in_exports(taskname)
44
- unless Dir.pwd == PROJECT_EXPORTS
45
- puts "Run task '#{taskname}' from export directory: " + PROJECT_EXPORTS
46
- exit 1
47
- end
48
- end
49
-
50
- desc "Upload all the web pages"
51
- task 'upload_pages' do | task |
52
- assert_in_exports task.name
53
- exec = "scp -r examples/tutorial/* marick@rubyforge.org:/var/www/gforge-projects/#{PROJECT}/"
54
- puts exec
55
- system(exec)
56
- end
57
-
58
- desc "Tag release with current version."
59
- task 'tag_release' do
60
- from = "#{ROOT}/trunk"
61
- to = "#{ROOT}/tags/rel-#{THIS_RELEASE}"
62
- message = "Release #{THIS_RELEASE}"
63
- exec = "svn copy -m '#{message}' #{from} #{to}"
64
- puts exec
65
- system(exec)
66
- end
67
-
68
- desc "Export to ~/tmp/exports/#{PROJECT}"
69
- task 'export' do
70
- Dir.chdir(ALL_EXPORTS) do
71
- rm_rf PROJECT
72
- exec = "svn export #{ROOT}/trunk #{PROJECT}"
73
- puts exec
74
- system exec
75
- end
76
- end
77
-
78
- def step(name)
79
- STDOUT.puts "** #{name} **"
80
- STDOUT.puts `rake #{name}`
81
- STDOUT.print 'OK? > '
82
- exit if STDIN.readline =~ /[nN]/
83
- end
84
-
85
- desc "Complete release of everything - asks for confirmation after steps"
86
- # Because in Ruby 1.8.6, Rake doesn't notice subtask failures.
87
- task 'release_everything' do
88
- step 'check_manifest'
89
- step 'test'
90
- step 'export'
91
- Dir.chdir("#{ALL_EXPORTS}/#{PROJECT}") do
92
- puts "Working in #{Dir.pwd}"
93
- step 'upload_pages'
94
- step 'publish_docs'
95
- ENV['VERSION'] = THIS_RELEASE
96
- step 'release'
97
- end
98
- step 'tag_release'
99
- end
41
+ require 's4t-utils/hoelike'
42
+ HoeLike.new(:project => PROJECT, :this_release => THIS_RELEASE,
43
+ :login => "marick@rubyforge.org",
44
+ :web_site_root => 'examples/tutorial',
45
+ :export_root => "#{S4tUtils.find_home}/tmp/exports")
@@ -191,7 +191,7 @@ padding:15px 0;
191
191
  }
192
192
 
193
193
  #centerNav {
194
- padding-left:253px;
194
+ padding-left:203px;
195
195
  }
196
196
 
197
197
  #headerNav {
@@ -24,6 +24,7 @@
24
24
  <li id="current"><a href="index.html">Home</a></li>
25
25
  <li><a href="http://user-choices.rubyforge.org/rdoc/">RDoc</a></li>
26
26
  <li><a href="http://rubyforge.org/frs/?group_id=4192">Download</a></li>
27
+ <li><a href="http://rubyforge.org/mail/?group_id=4192">Mailing Lists</a></li>
27
28
  </ul>
28
29
  </div>
29
30
  </div>
@@ -340,8 +341,19 @@ if $0 == __FILE__ <br />
340
341
  <h3><a name="keywordargs"/>3.1 Keyword arguments for <code>add_choice</code></a></h3>
341
342
  <ul>
342
343
  <li><p>
343
- The <b><font style="color: #800020;">:type</font></b> keyword describes type checking and conversion that should be done. In all cases, it's fine if the conversion has already been done (which is often the case when a default value is given). If no <font style="color: #800020;">:type</font> argument is given, the choice stays a string.
344
+ The <b><font style="color: #800020;">:type</font></b>
345
+ keyword describes type checking and conversion that
346
+ should be done. If no <font
347
+ style="color: #800020;">:type</font> argument is
348
+ given, the choice stays a string.
344
349
  </p>
350
+
351
+ <p>
352
+ Default choices are handled generously. Suppose a particular
353
+ choice is to be an integer. You can specify the default value as
354
+ either the string <code>"1"</code> (in which case it will be converted to an
355
+ integer) or the integer <code>1</code> (in which case it will be left alone).
356
+ </p>
345
357
 
346
358
  <p>
347
359
  A <code>StandardError</code> is raised if the conversion can't be done.
@@ -360,6 +372,14 @@ if $0 == __FILE__ <br />
360
372
  Convert the string into either <code>true</code> or <code>false</code>. The string must be one of "true" or "false" (case-insensitive).
361
373
  </p></dd>
362
374
 
375
+ <dt><font style="color: #800020;">:type</font>
376
+ => <i>:string</i></dt>
377
+ <dd><p>
378
+ Leave the string alone. Since that's
379
+ the default behavior, this case is only for
380
+ convenience.
381
+ </p></dd>
382
+
363
383
  <dt><font style="color: #800020;">:type</font> => <b><font style="color: #800020;">[:string]</font></b></dt>
364
384
 
365
385
  <dd><p>
@@ -371,6 +391,8 @@ if $0 == __FILE__ <br />
371
391
  The value chosen must be one of the given strings. There's no conversion.
372
392
  </p></dd>
373
393
 
394
+
395
+
374
396
  </dl>
375
397
  </li>
376
398
 
@@ -36,7 +36,18 @@ module UserChoices
36
36
  def convert(value); value; end # Some conversions are just for error-checking
37
37
  def does_length_check?; false; end
38
38
  end
39
-
39
+
40
+ class NoOpConversion < Conversion # :nodoc:
41
+ def self.described_by?(conversion_tag)
42
+ conversion_tag == :string
43
+ end
44
+
45
+ def description; "a string"; end
46
+ def suitable?(actual); true; end
47
+ def convert(value); value; end
48
+ end
49
+
50
+
40
51
  class ConversionToInteger < Conversion # :nodoc:
41
52
  def self.described_by?(conversion_tag)
42
53
  conversion_tag == :integer
@@ -1,3 +1,3 @@
1
1
  module UserChoices
2
- Version = '1.1.5'
2
+ Version = '1.1.6'
3
3
  end
@@ -21,10 +21,11 @@ class TestDefaultsAndTypes < Test::Unit::TestCase
21
21
  Conversion.record_for(["one", "two"], start)
22
22
  Conversion.record_for({:length => 1}, start)
23
23
  Conversion.record_for({:length => 1..2}, start)
24
+ Conversion.record_for(:string, start)
24
25
 
25
26
  assert_equal([ConversionToInteger, ConversionToBoolean,
26
27
  SplittingConversion, ChoiceCheckingConversion,
27
- ExactLengthConversion, RangeLengthConversion],
28
+ ExactLengthConversion, RangeLengthConversion, NoOpConversion],
28
29
  start.collect { |c| c.class })
29
30
  end
30
31
 
@@ -33,7 +34,21 @@ class TestDefaultsAndTypes < Test::Unit::TestCase
33
34
  Conversion.record_for(nil, start)
34
35
  assert_equal([], start)
35
36
  end
36
-
37
+
38
+ def test_string_conversion_checking
39
+ nop = Conversion.for(:string)
40
+ assert_true(nop.suitable?("hello"))
41
+ assert_true(nop.suitable?(1)) # Truly does no checking.
42
+ assert_equal('a string', nop.description)
43
+ end
44
+
45
+ def test_string_conversion
46
+ nop = Conversion.for(:string)
47
+ assert_equal("12", nop.convert("12"))
48
+ end
49
+
50
+
51
+
37
52
  def test_integer_conversion_checking
38
53
  c2i = Conversion.for(:integer)
39
54
  assert_true(c2i.suitable?("034"))
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
2
+ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: user-choices
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.1.5
7
- date: 2007-09-28 00:00:00 -05:00
6
+ version: 1.1.6
7
+ date: 2007-11-19 00:00:00 -06:00
8
8
  summary: Unified interface to command-line, environment, and configuration files.
9
9
  require_paths:
10
10
  - lib