ofstruct 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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