ofstruct 0.2.0 → 0.2.1

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.
Files changed (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/ofstruct.rb +15 -18
  3. metadata +6 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: cc0d0332d4b8b6ce6adc7df06f8d9aaf63c463bf
4
- data.tar.gz: 67e0a85b29683cef3e2e495f71a37e05b05defb2
2
+ SHA256:
3
+ metadata.gz: 780313bf44865addfa2ecced7a334d937fbecb21a565a2014379f98ba8dae79b
4
+ data.tar.gz: d28e8db95c979b26b5a776228f56055371e1ba47f92bda064128bb577ac2adf3
5
5
  SHA512:
6
- metadata.gz: f2d567ec0621b81122b5924b8a49b9c9111a497a1d6fe53740f75e55ed46c008fc4952bad472ad16e7688fb37ada5b1871ed3eb765b25a4aff778a40e28d4444
7
- data.tar.gz: 11f6e81aec9ff93a8f7da30942df17392204a3f3a9fc249946eda3465e8b1935b1e2ae902b62a3a97fcc276f0124a337ef3711b96c6bcfee008e71cfa6a0b88e
6
+ metadata.gz: e7db1fef9e04fe62cc7c7151863477bf1d9a7f400d7ad337783ec17eb1a8f1bf545de2923a2a1a0e769369219268d762b93a14595072a2602cbca538668183d7
7
+ data.tar.gz: b7d3a0391dbc35719dff72201e074c1a9d51334933c4f816aad31adc8e3fe91fa7fea840ed17d032eaea40af04bcf6228954465aa74b06d35b12c4c70f7d325b
@@ -1,11 +1,11 @@
1
1
  class OpenFastStruct
2
2
  def initialize(args = {})
3
3
  @members = {}
4
- assign(args)
4
+ update(args)
5
5
  end
6
6
 
7
7
  def delete_field(key)
8
- @members[key.to_sym] = self.class.new
8
+ assign(key, self.class.new)
9
9
  end
10
10
 
11
11
  def each_pair
@@ -13,17 +13,16 @@ class OpenFastStruct
13
13
  end
14
14
 
15
15
  def update(args)
16
- assign(args)
16
+ ensure_hash!(args)
17
+ args.each { |k, v| assign(k, v) }
17
18
  end
18
19
 
19
20
  def to_h
20
- @members.inject({}) do |result, (k, v)|
21
- result.tap { |result| result[k] = v.is_a?(self.class) ? v.to_h : v }
22
- end
21
+ @members.merge(@members) { |_, v| v.is_a?(self.class) ? v.to_h : v }
23
22
  end
24
23
 
25
24
  def inspect
26
- @members.each_with_object("#<#{self.class}") { |(k,v), output| output << " :#{k}=#{v.inspect}" } << ">"
25
+ "#<#{self.class}" + @members.map { |k, v| " :#{k}=#{v.inspect}" }.join + ">"
27
26
  end
28
27
  alias :to_s :inspect
29
28
 
@@ -32,28 +31,26 @@ class OpenFastStruct
32
31
  end
33
32
 
34
33
  def ==(other)
35
- return false unless other.is_a?(self.class)
36
- self.to_h == other.to_h
34
+ other.is_a?(self.class) && self.to_h == other.to_h
37
35
  end
38
36
 
39
37
  private
40
38
 
39
+ def ensure_hash!(args)
40
+ raise ArgumentError unless args.is_a?(Hash)
41
+ end
42
+
41
43
  def method_missing(name, *args)
42
44
  @members.fetch(name) do
43
45
  if name[-1] == "="
44
- @members[name[0..-2].to_sym] = args.first
46
+ assign(name[0..-2], args.first)
45
47
  else
46
- @members[name.to_sym] = self.class.new
48
+ delete_field(name)
47
49
  end
48
50
  end
49
51
  end
50
52
 
51
- def assign(args)
52
- ensure_hash(args)
53
- args.each { |k,v| @members[k.to_sym] = v }
54
- end
55
-
56
- def ensure_hash(args)
57
- raise ArgumentError unless args.is_a?(Hash)
53
+ def assign(key, value)
54
+ @members[key.to_sym] = value
58
55
  end
59
56
  end
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.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arturo Herrero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-28 00:00:00.000000000 Z
11
+ date: 2019-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.4'
47
+ version: '12.3'
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: '10.4'
54
+ version: '12.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -96,11 +96,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  requirements: []
99
- rubyforge_project:
100
- rubygems_version: 2.4.5
99
+ rubygems_version: 3.0.3
101
100
  signing_key:
102
101
  specification_version: 4
103
102
  summary: OpenFastStruct
104
103
  test_files:
105
- - spec/lib/ofstruct_spec.rb
106
104
  - spec/spec_helper.rb
105
+ - spec/lib/ofstruct_spec.rb