confstruct 0.2.1 → 0.2.2

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/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
data/README.md CHANGED
@@ -1,12 +1,10 @@
1
- # confstruct
1
+ # confstruct [![Build Status](https://secure.travis-ci.org/mbklein/confstruct.png)](http://travis-ci.org/mbklein/confstruct) [![Dependency Status](https://gemnasium.com/mbklein/confstruct.png)](https://gemnasium.com/mbklein/confstruct)
2
+
2
3
 
3
4
  <b>Confstruct</b> is yet another configuration gem. Definable and configurable by
4
5
  hash, struct, or block, confstruct aims to provide the flexibility to do things your
5
6
  way, while keeping things simple and intuitive.
6
7
 
7
- [![Build Status](https://secure.travis-ci.org/mbklein/confstruct.png)](http://travis-ci.org/mbklein/confstruct)
8
- [![Dependency Status](https://gemnasium.com/mbklein/confstruct.png)](https://gemnasium.com/mbklein/confstruct)
9
-
10
8
  ## Usage
11
9
 
12
10
  First, either create an empty `ConfStruct::Configuration` object:
@@ -192,6 +190,7 @@ The pattern `add_$key!` can be used to add to or create an array.
192
190
  - <b>v0.1.0</b> - Initial release
193
191
  - <b>v0.2.0</b> - Add fallback value to HashWithStructAccess#lookup!, native support for Rails I18n.
194
192
  - <b>v0.2.1</b> - Initialize properly from a nested hash with string (non-symbol) keys
193
+ - <b>v0.2.2</b> - Fix ArgumentError on #respond_to?(sym, true)
195
194
 
196
195
  ## Contributing to confstruct
197
196
 
data/confstruct.gemspec CHANGED
@@ -16,8 +16,9 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ["lib"]
18
18
 
19
+ s.add_development_dependency 'active_support'
19
20
  s.add_development_dependency "rake", ">=0.8.7"
20
- s.add_development_dependency "rcov"
21
+ s.add_development_dependency "simplecov"
21
22
  s.add_development_dependency "rdiscount"
22
23
  s.add_development_dependency "rdoc"
23
24
  s.add_development_dependency "rspec"
@@ -132,9 +132,10 @@ module Confstruct
132
132
  "{#{r.compact.join(', ')}}"
133
133
  end
134
134
 
135
- def is_a? klazz
136
- klazz == @@hash_class or super
135
+ def kind_of? klazz
136
+ @@hash_class.ancestors.include?(klazz) or super
137
137
  end
138
+ alias_method :is_a?, :kind_of?
138
139
 
139
140
  def lookup! key_path, fallback = nil
140
141
  val = self
@@ -194,8 +195,8 @@ module Confstruct
194
195
  self.class.ordered?
195
196
  end
196
197
 
197
- def respond_to? arg
198
- super(arg) || keys.include?(symbolize!(arg.to_s.sub(/=$/,'')))
198
+ def respond_to? *args
199
+ super(*args) || keys.include?(symbolize!(args[0].to_s.sub(/=$/,'')))
199
200
  end
200
201
 
201
202
  def structurize! hash
data/lib/confstruct.rb CHANGED
@@ -4,5 +4,5 @@ module Confstruct
4
4
  autoload :HashWithStructAccess, 'confstruct/hash_with_struct_access'
5
5
  autoload :Configuration, 'confstruct/configuration'
6
6
 
7
- VERSION = '0.2.1'
7
+ VERSION = '0.2.2'
8
8
  end
data/lib/tasks/rspec.rake CHANGED
@@ -12,6 +12,4 @@ end
12
12
  desc "Generate code coverage"
13
13
  RSpec::Core::RakeTask.new(:coverage) do |t|
14
14
  t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
15
- t.rcov = true
16
- t.rcov_opts = ['--exclude', '/gems/,/Library/,/usr/,spec,lib/tasks']
17
15
  end
@@ -239,6 +239,29 @@ describe Confstruct::HashWithStructAccess do
239
239
  @hwsa.github.local_hello.should == 'Bonjour, Monde!'
240
240
  @hwsa.github.local_time.should == 'French Time!'
241
241
  end
242
+
243
+ end
244
+
245
+ context "delegation" do
246
+ before :each do
247
+ @hwsa = Confstruct::HashWithStructAccess.from_hash('a' => { 'b' => { 'c' => 'd' } })
248
+ end
242
249
 
250
+ it "should always return HashWithStructAccess hashes" do
251
+ @hwsa.a.b.should be_a Confstruct::HashWithStructAccess
252
+ end
253
+
254
+ it "should gracefully handle being extended" do
255
+ pending %{probably won't fix due to the unpredictable way ActiveSupport injects #presence()}
256
+ @hwsa.a.b.presence.should be_a Confstruct::HashWithStructAccess
257
+ end
258
+ end
259
+
260
+ context "bug fixes" do
261
+ hwsa = Confstruct::HashWithStructAccess.from_hash('a' => { 'b' => { 'c' => 'd' } })
262
+ it "should handle the two-argument form of #respond_to?" do
263
+ lambda { hwsa.respond_to? :something, true }.should_not raise_error
264
+ end
243
265
  end
266
+
244
267
  end
data/spec/spec_helper.rb CHANGED
@@ -6,8 +6,12 @@ require 'rspec'
6
6
  require 'rspec/autorun'
7
7
 
8
8
  require 'rubygems'
9
+ require 'active_support/core_ext/object/blank'
9
10
  require 'confstruct'
10
11
 
12
+ require 'simplecov'
13
+ SimpleCov.start
14
+
11
15
  RSpec.configure do |config|
12
16
 
13
17
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confstruct
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 1
10
- version: 0.2.1
9
+ - 2
10
+ version: 0.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Klein
@@ -15,40 +15,40 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-01-23 00:00:00 Z
18
+ date: 2012-03-01 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: rake
21
+ name: active_support
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- hash: 49
28
+ hash: 3
29
29
  segments:
30
30
  - 0
31
- - 8
32
- - 7
33
- version: 0.8.7
31
+ version: "0"
34
32
  type: :development
35
33
  version_requirements: *id001
36
34
  - !ruby/object:Gem::Dependency
37
- name: rcov
35
+ name: rake
38
36
  prerelease: false
39
37
  requirement: &id002 !ruby/object:Gem::Requirement
40
38
  none: false
41
39
  requirements:
42
40
  - - ">="
43
41
  - !ruby/object:Gem::Version
44
- hash: 3
42
+ hash: 49
45
43
  segments:
46
44
  - 0
47
- version: "0"
45
+ - 8
46
+ - 7
47
+ version: 0.8.7
48
48
  type: :development
49
49
  version_requirements: *id002
50
50
  - !ruby/object:Gem::Dependency
51
- name: rdiscount
51
+ name: simplecov
52
52
  prerelease: false
53
53
  requirement: &id003 !ruby/object:Gem::Requirement
54
54
  none: false
@@ -62,7 +62,7 @@ dependencies:
62
62
  type: :development
63
63
  version_requirements: *id003
64
64
  - !ruby/object:Gem::Dependency
65
- name: rdoc
65
+ name: rdiscount
66
66
  prerelease: false
67
67
  requirement: &id004 !ruby/object:Gem::Requirement
68
68
  none: false
@@ -76,7 +76,7 @@ dependencies:
76
76
  type: :development
77
77
  version_requirements: *id004
78
78
  - !ruby/object:Gem::Dependency
79
- name: rspec
79
+ name: rdoc
80
80
  prerelease: false
81
81
  requirement: &id005 !ruby/object:Gem::Requirement
82
82
  none: false
@@ -90,7 +90,7 @@ dependencies:
90
90
  type: :development
91
91
  version_requirements: *id005
92
92
  - !ruby/object:Gem::Dependency
93
- name: yard
93
+ name: rspec
94
94
  prerelease: false
95
95
  requirement: &id006 !ruby/object:Gem::Requirement
96
96
  none: false
@@ -103,6 +103,20 @@ dependencies:
103
103
  version: "0"
104
104
  type: :development
105
105
  version_requirements: *id006
106
+ - !ruby/object:Gem::Dependency
107
+ name: yard
108
+ prerelease: false
109
+ requirement: &id007 !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ hash: 3
115
+ segments:
116
+ - 0
117
+ version: "0"
118
+ type: :development
119
+ version_requirements: *id007
106
120
  description: A simple, hash/struct-based configuration object
107
121
  email:
108
122
  - mbklein@gmail.com
@@ -114,6 +128,7 @@ extra_rdoc_files: []
114
128
 
115
129
  files:
116
130
  - .gitignore
131
+ - .travis.yml
117
132
  - Gemfile
118
133
  - README.md
119
134
  - Rakefile