attr_hash_accessor 0.0.3 → 0.0.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.
@@ -1,3 +1,8 @@
1
+ ## 0.0.4 (Jun 26, 2013)
2
+
3
+ * raise ArgumentError unless constructor argument isn't Hash
4
+ * require all active_model files for support activemodel 4.0.0 *takkanm*
5
+
1
6
  ## 0.0.3 (Oct 17, 2012)
2
7
 
3
8
  * add `#attributes`, returns all filtered attributes *takkanm*
@@ -1,21 +1,31 @@
1
1
  require 'attr_hash_accessor/version'
2
2
 
3
- require 'active_model/naming'
4
- require 'active_model/conversion'
5
- require 'active_support/core_ext/object/blank'
3
+ require 'active_model'
6
4
  require 'active_support/hash_with_indifferent_access'
5
+ require 'active_support/core_ext/object/blank'
6
+
7
7
 
8
8
  module AttrHashAccessor
9
9
  include ActiveModel::Conversion
10
10
 
11
+ module Utils
12
+ extend self
13
+
14
+ def normalize_arg(val)
15
+ return {} unless val.present?
16
+ raise ArgumentError, 'argument should be a Hash' unless val.is_a?(Hash)
17
+
18
+ val.stringify_keys
19
+ end
20
+ end
21
+
11
22
  def self.included(base)
12
23
  base.extend ActiveModel::Naming
13
24
  base.extend ClassMethods
14
25
  end
15
26
 
16
27
  def initialize(val = nil)
17
- val = {} unless val.present?
18
- @attributes = self.class.default.stringify_keys.merge(val.stringify_keys)
28
+ @attributes = self.class.default.stringify_keys.merge(Utils.normalize_arg(val))
19
29
  end
20
30
 
21
31
  def attributes
@@ -1,3 +1,3 @@
1
1
  module AttrHashAccessor
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -33,6 +33,14 @@ describe AttrHashAccessor do
33
33
 
34
34
  its(:bar) { should == 'BARRR' }
35
35
  end
36
+
37
+ context 'wrong arguments' do
38
+ specify 'raise ArgumentError unless arg isnot a Hash' do
39
+ expect {
40
+ my_klass.new('STRING')
41
+ }.to raise_error ArgumentError
42
+ end
43
+ end
36
44
  end
37
45
 
38
46
  describe 'empty initialize' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attr_hash_accessor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.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: 2012-10-17 00:00:00.000000000 Z
12
+ date: 2013-06-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
@@ -107,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  segments:
109
109
  - 0
110
- hash: 175363436218142031
110
+ hash: 549606853183399214
111
111
  required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  none: false
113
113
  requirements:
@@ -116,10 +116,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  version: '0'
117
117
  segments:
118
118
  - 0
119
- hash: 175363436218142031
119
+ hash: 549606853183399214
120
120
  requirements: []
121
121
  rubyforge_project:
122
- rubygems_version: 1.8.24
122
+ rubygems_version: 1.8.23
123
123
  signing_key:
124
124
  specification_version: 3
125
125
  summary: provides Hash based attribute accessor macro