configlet 1.3.0 → 2.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.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,9 @@
1
+ === 2.0.0 / 2010-09-28
2
+
3
+ * Remove deprecated features.
4
+ * Add doco on transformations.
5
+ * Add sugar for munging URL args.
6
+
1
7
  === 1.3.0 / 2010-05-24
2
8
 
3
9
  * Add support for lazy defaults.
data/README.rdoc CHANGED
@@ -45,6 +45,20 @@ resolved the first time its value is grabbed.
45
45
  Configlet is a module, so +include+ or +extend+ it wherever you
46
46
  want. It extends itself for your convenience.
47
47
 
48
+ == Transformation
49
+
50
+ Want something other than a string? You can munge any value:
51
+
52
+ default :url => "http://example.org"
53
+ munge(:url) { |v| URI.parse v }
54
+ Configlet[:url] # => #<URI::HTTP:0xdeadbeef URL:http://example.org>
55
+
56
+ In fact, there's a shortcut just for URLs. I haven't added any others
57
+ 'cause I haven't needed to care:
58
+
59
+ url :url => "http://example.org"
60
+ Configlet[:url] # => #<URI::HTTP:0xcafebabe URL:http://example.org>
61
+
48
62
  == Installation
49
63
 
50
64
  $ gem install configlet
data/lib/configlet.rb CHANGED
@@ -13,7 +13,7 @@ module Configlet
13
13
 
14
14
  # Duh.
15
15
 
16
- VERSION = "1.3.0"
16
+ VERSION = "2.0.0"
17
17
 
18
18
  I = lambda { |v| v } #:nodoc:
19
19
 
@@ -88,11 +88,6 @@ module Configlet
88
88
  instance_eval(&block)
89
89
  end
90
90
 
91
- def for *args, &block #:nodoc:
92
- warn "Configlet.for is deprecated, and will be removed in 2.0."
93
- config(*args, &block)
94
- end
95
-
96
91
  # Mess with a value when it's retrieved. Useful for turning untyped
97
92
  # environment strings into numbers, booleans, enums, or class
98
93
  # instances. Here's how to munge a boolean:
@@ -111,14 +106,16 @@ module Configlet
111
106
  @mungers ||= Hash.new { |h, k| I }
112
107
  end
113
108
 
114
- # Set prefix to +nil+, clear defaults and mungers.
109
+ # Behaves exactly like +default+, but additionally installs a munger
110
+ # for each key that calls <tt>URI.parse</tt>.
115
111
 
116
- def reset
117
- warn "Configlet.reset is deprecated, and will be removed in 2.0."
118
- self.prefix = nil
112
+ def url args, &block
113
+ default args, &block
114
+ require "uri"
119
115
 
120
- defaults.clear
121
- mungers.clear
116
+ (args.keys rescue [args]).each do |key|
117
+ munge(key) { |v| URI.parse v }
118
+ end
122
119
  end
123
120
 
124
121
  extend self
@@ -1,5 +1,6 @@
1
- require "minitest/autorun"
2
1
  require "configlet"
2
+ require "minitest/autorun"
3
+ require "uri"
3
4
 
4
5
  class TestConfiglet < MiniTest::Unit::TestCase
5
6
  class Stub
@@ -74,4 +75,14 @@ class TestConfiglet < MiniTest::Unit::TestCase
74
75
  @cfg[:thud] = "zap"
75
76
  assert_equal "zap", ENV["POW_THUD"]
76
77
  end
78
+
79
+ def test_url
80
+ @cfg.url :example => "http://example.org"
81
+ assert_equal URI.parse("http://example.org"), @cfg[:example]
82
+ end
83
+
84
+ def test_url_block
85
+ @cfg.url(:example) { "http://example.org" }
86
+ assert_equal URI.parse("http://example.org"), @cfg[:example]
87
+ end
77
88
  end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configlet
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
4
  prerelease: false
6
5
  segments:
7
- - 1
8
- - 3
6
+ - 2
9
7
  - 0
10
- version: 1.3.0
8
+ - 0
9
+ version: 2.0.0
11
10
  platform: ruby
12
11
  authors:
13
12
  - John Barnette
@@ -15,7 +14,7 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-05-24 00:00:00 -07:00
17
+ date: 2010-09-28 00:00:00 -07:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
@@ -26,12 +25,11 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 23
30
28
  segments:
31
29
  - 2
32
30
  - 6
33
- - 0
34
- version: 2.6.0
31
+ - 2
32
+ version: 2.6.2
35
33
  type: :development
36
34
  version_requirements: *id001
37
35
  description: |-
@@ -73,7 +71,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
73
71
  requirements:
74
72
  - - ">="
75
73
  - !ruby/object:Gem::Version
76
- hash: 3
77
74
  segments:
78
75
  - 0
79
76
  version: "0"
@@ -82,7 +79,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
79
  requirements:
83
80
  - - ">="
84
81
  - !ruby/object:Gem::Version
85
- hash: 3
86
82
  segments:
87
83
  - 0
88
84
  version: "0"