hcast 0.2.1 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 125e67594dab68555662536ef218e3a019bc8d0e
4
- data.tar.gz: 3a58bbee37d83dbcaa2f1829ba67026645c18662
3
+ metadata.gz: 04bee70c76ea3f3edb1aca7fcfac6d0e31ec8498
4
+ data.tar.gz: 0d51877c017d56a3fd486693d0a90414cccc896b
5
5
  SHA512:
6
- metadata.gz: be30e87061d245a9015dbfa04f0108d587b6ab56db76ac2f4e98d7866fc1ef0163374417bfd7d98599ff6a3f26169afafc06a0afa44ba5888018313477c1ccdd
7
- data.tar.gz: e8ad87e9ab529d2aa598bf30d2344f6810e4e9151a53358a86afc77f80777db97d66490c91ec45369e4b7c58b7ce762771f2f00a97f12465a71664174750271e
6
+ metadata.gz: 97e57dbfd1a2f741984dc6fccad7098b9a589a52f3c698586aa1070d0fed96253c73bc5ad370d0cd57e4652fe8211e1cf95c66266fca09be79d5040dd4b93236
7
+ data.tar.gz: faba0f058007e3f81b4aa7bb5170993e12c7372dd12fb306465384204d780a8a138b0c353312f22a1400a23606c7b48972022db69719e18150bfe9be417b214f
data/Gemfile CHANGED
@@ -4,5 +4,4 @@ gemspec
4
4
 
5
5
  group :test do
6
6
  gem 'rspec'
7
- gem 'debugger'
8
7
  end
@@ -1,18 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hcast (0.2.1)
4
+ hcast (0.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- columnize (0.3.6)
10
- debugger (1.6.5)
11
- columnize (>= 0.3.1)
12
- debugger-linecache (~> 1.2.0)
13
- debugger-ruby_core_source (~> 1.3.1)
14
- debugger-linecache (1.2.0)
15
- debugger-ruby_core_source (1.3.1)
16
9
  diff-lcs (1.2.5)
17
10
  rake (10.1.1)
18
11
  rspec (2.14.1)
@@ -29,7 +22,6 @@ PLATFORMS
29
22
 
30
23
  DEPENDENCIES
31
24
  bundler (~> 1.3)
32
- debugger
33
25
  hcast!
34
26
  rake
35
27
  rspec
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  HCast is a library for casting hash attributes
6
6
 
7
- ## Usage
7
+ ### Usage
8
8
 
9
9
  Create caster class and declare hash attributes inside:
10
10
  ```ruby
@@ -59,7 +59,7 @@ ContactCaster.cast({
59
59
  }
60
60
  })
61
61
  ```
62
- The casted will cast your hash and output will be:
62
+ The caster will cast your hash attributes to:
63
63
  ```ruby
64
64
  {
65
65
  contact: {
@@ -87,27 +87,8 @@ The casted will cast your hash and output will be:
87
87
  }
88
88
  ```
89
89
 
90
- if some of the attributes can't be casted the HCast::Errors::CastingError will be raised
90
+ if some of the attributes can't be casted the HCast::Errors::CastingError is raised
91
91
 
92
92
 
93
- ## Installation
94
-
95
- Add this line to your application's Gemfile:
96
-
97
- gem 'hcast'
98
-
99
- And then execute:
100
-
101
- $ bundle
102
-
103
- Or install it yourself as:
104
-
105
- $ gem install hcast
106
-
107
- ## Contributing
108
-
109
- 1. Fork it
110
- 2. Create your feature branch (`git checkout -b my-new-feature`)
111
- 3. Commit your changes (`git commit -am 'Add some feature'`)
112
- 4. Push to the branch (`git push origin my-new-feature`)
113
- 5. Create new Pull Request
93
+ ## Author
94
+ Albert Gazizov, [@deeper4k](https://twitter.com/deeper4k)
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = HCast::VERSION
9
9
  spec.authors = ["Albert Gazizov"]
10
10
  spec.email = ["deeper4k@gmail.com"]
11
- spec.description = %q{Hash Caster and Validator}
12
- spec.summary = %q{Hash Caster and Validator}
11
+ spec.description = %q{Declarative Hash Caster}
12
+ spec.summary = %q{Declarative Hash Caster}
13
13
  spec.homepage = "http://github.com/AlbertGazizov/hcast"
14
14
  spec.license = "MIT"
15
15
 
@@ -23,7 +23,10 @@ class HCast::AttributesCaster
23
23
  raise HCast::Errors::MissingAttributeError.new("should be given", attribute.name)if attribute.required?
24
24
  end
25
25
  end
26
- check_unexpected_attributes_not_given!(hash_keys, casted_hash.keys)
26
+
27
+ if !options[:skip_unexpected_attributes]
28
+ check_unexpected_attributes_not_given!(hash_keys, casted_hash.keys)
29
+ end
27
30
 
28
31
  casted_hash
29
32
  end
@@ -1,3 +1,3 @@
1
1
  module HCast
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -252,6 +252,38 @@ describe HCast::Caster do
252
252
  end.to raise_error(HCast::Errors::UnexpectedAttributeError, "contact[wrong_attribute] is not valid attribute name")
253
253
  end
254
254
 
255
+ it "shouldn't unexpected attributes error if skip_unexpected_attributes flag is set to true" do
256
+ input_hash = {
257
+ contact: {
258
+ wrong_attribute: 'foo',
259
+ name: "Jim",
260
+ weight: 65.5,
261
+ birthday: Date.today,
262
+ last_logged_in: DateTime.now,
263
+ last_visited_at: Time.now,
264
+ company: {
265
+ name: "MyCo",
266
+ },
267
+ emails: [ "test@example.com", "test2@example.com" ],
268
+ social_accounts: [
269
+ {
270
+ name: "john_smith",
271
+ type: :twitter,
272
+ },
273
+ {
274
+ name: "John",
275
+ type: :facebook,
276
+ },
277
+ ]
278
+ }
279
+ }
280
+
281
+ expect do
282
+ ContactCaster.cast(input_hash, skip_unexpected_attributes: true)
283
+ end.not_to raise_error(HCast::Errors::UnexpectedAttributeError)
284
+
285
+ end
286
+
255
287
  it "should convert accept hash with string keys and cast them to symbol keys" do
256
288
  input_hash = {
257
289
  'contact' => {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hcast
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Albert Gazizov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-30 00:00:00.000000000 Z
11
+ date: 2015-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,7 +38,7 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- description: Hash Caster and Validator
41
+ description: Declarative Hash Caster
42
42
  email:
43
43
  - deeper4k@gmail.com
44
44
  executables: []
@@ -99,7 +99,7 @@ rubyforge_project:
99
99
  rubygems_version: 2.2.2
100
100
  signing_key:
101
101
  specification_version: 4
102
- summary: Hash Caster and Validator
102
+ summary: Declarative Hash Caster
103
103
  test_files:
104
104
  - spec/hcast/caster_spec.rb
105
105
  - spec/hcast/hcast_spec.rb