ofstruct 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 780313bf44865addfa2ecced7a334d937fbecb21a565a2014379f98ba8dae79b
4
- data.tar.gz: d28e8db95c979b26b5a776228f56055371e1ba47f92bda064128bb577ac2adf3
3
+ metadata.gz: 532001ebb13a0232881e6b2a97c742f761df39e5a9ce99a7bb74da2c9300f400
4
+ data.tar.gz: 687b0b422e10f97696d6d0091d761afd94e5a81ec38932f5ce7b80fe7f22fece
5
5
  SHA512:
6
- metadata.gz: e7db1fef9e04fe62cc7c7151863477bf1d9a7f400d7ad337783ec17eb1a8f1bf545de2923a2a1a0e769369219268d762b93a14595072a2602cbca538668183d7
7
- data.tar.gz: b7d3a0391dbc35719dff72201e074c1a9d51334933c4f816aad31adc8e3fe91fa7fea840ed17d032eaea40af04bcf6228954465aa74b06d35b12c4c70f7d325b
6
+ metadata.gz: 2590e8f5c16a4f20e6ecc3a872f87e4c2822f4662e26d09f5a9998b6952627fb0267b40257b35fd858f80855937c293e21a9ea320cbd340ca59e173b82632de0
7
+ data.tar.gz: 35d64b5a9b08aa459c9d0b00317f53f1c7211eda342bdfcc8c0ca2378cc64d279f716cfb02089454df77b25ff16f2fc0b205fb603d68ccb8e60f2eea0bf1bf58
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # OpenFastStruct
2
2
 
3
3
  [![Code Climate](https://codeclimate.com/github/arturoherrero/ofstruct/badges/gpa.svg)](https://codeclimate.com/github/arturoherrero/ofstruct)
4
- [![Build Status](https://travis-ci.org/arturoherrero/ofstruct.svg)](https://travis-ci.org/arturoherrero/ofstruct)
4
+ [![Build Status](https://github.com/arturoherrero/ofstruct/workflows/Build/badge.svg?branch=master)](https://github.com/arturoherrero/ofstruct/actions)
5
5
 
6
6
  OpenStruct allows the creation of data objects with arbitrary attributes.
7
7
 
data/lib/ofstruct.rb CHANGED
@@ -51,6 +51,10 @@ class OpenFastStruct
51
51
  end
52
52
 
53
53
  def assign(key, value)
54
- @members[key.to_sym] = value
54
+ if value.is_a?(Hash)
55
+ @members[key.to_sym] = self.class.new(value)
56
+ else
57
+ @members[key.to_sym] = value
58
+ end
55
59
  end
56
60
  end
@@ -31,7 +31,7 @@ RSpec.describe OpenFastStruct do
31
31
  context "instantiated from arguments" do
32
32
  subject(:ofstruct) { described_class.new(args) }
33
33
 
34
- context "without Hash" do
34
+ context "without hash" do
35
35
  let(:args) { double }
36
36
 
37
37
  it "raises an exception" do
@@ -39,11 +39,20 @@ RSpec.describe OpenFastStruct do
39
39
  end
40
40
  end
41
41
 
42
- context "with Hash" do
43
- let(:symbol_args) { Hash[:name => "John"] }
44
- let(:string_args) { Hash["name" => "John"] }
42
+ context "with hash" do
43
+ let(:symbol_args) { { :name => "John" } }
44
+ let(:string_args) { { "name" => "John" } }
45
+ let(:nested_args) { { person: { name: "John" } } }
45
46
 
46
- context "with Symbol keys" do
47
+ context "with a nested hash" do
48
+ let(:args) { nested_args }
49
+
50
+ it "works with reader" do
51
+ expect(ofstruct.person.name).to eq("John")
52
+ end
53
+ end
54
+
55
+ context "with symbol keys" do
47
56
  let(:args) { symbol_args }
48
57
 
49
58
  it "works with reader" do
@@ -84,7 +93,7 @@ RSpec.describe OpenFastStruct do
84
93
  expect(ofstruct.surname).to eq("Smith")
85
94
  end
86
95
 
87
- context "without Hash" do
96
+ context "without hash" do
88
97
  it "raises an exception" do
89
98
  expect { ofstruct.update(double) }.to raise_error(ArgumentError)
90
99
  end
@@ -118,7 +127,7 @@ RSpec.describe OpenFastStruct do
118
127
  end
119
128
  end
120
129
 
121
- context "with String keys" do
130
+ context "with string keys" do
122
131
  let(:args) { string_args }
123
132
 
124
133
  it "works with reader" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ofstruct
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
  - Arturo Herrero
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-28 00:00:00.000000000 Z
11
+ date: 2023-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips
@@ -16,56 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.1'
19
+ version: '2.10'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.1'
26
+ version: '2.10'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: guard-rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '4.5'
33
+ version: '4.7'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '4.5'
40
+ version: '4.7'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '12.3'
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '12.3'
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '3.2'
61
+ version: '3.12'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '3.2'
68
+ version: '3.12'
69
69
  description: OpenFastStruct is a data structure, similar to an OpenStruct but faster.
70
70
  email: arturo.herrero@gmail.com
71
71
  executables: []
@@ -81,7 +81,7 @@ homepage: https://github.com/arturoherrero/ofstruct
81
81
  licenses:
82
82
  - MIT
83
83
  metadata: {}
84
- post_install_message:
84
+ post_install_message:
85
85
  rdoc_options: []
86
86
  require_paths:
87
87
  - lib
@@ -96,10 +96,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  requirements: []
99
- rubygems_version: 3.0.3
100
- signing_key:
99
+ rubygems_version: 3.4.1
100
+ signing_key:
101
101
  specification_version: 4
102
102
  summary: OpenFastStruct
103
103
  test_files:
104
- - spec/spec_helper.rb
105
104
  - spec/lib/ofstruct_spec.rb
105
+ - spec/spec_helper.rb