ivo 0.2.2 → 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: 6fdc9a620759edc3eff979f744d48905bd09cbdd
4
- data.tar.gz: a1c49a1b8a160c74d6ad8ab65e6f0a37a859a8dc
3
+ metadata.gz: 867ecedc666df35bde9256a9464f0e511b880000
4
+ data.tar.gz: 06c5b89364f8f0cc9c2d3fc69fca5dd07529df26
5
5
  SHA512:
6
- metadata.gz: 8bbbbeeeba4fec23c70e9d62ec6a23e33ced06c3eb125be401ef963722fa4f33ff0f1d164a1b2d6287e10bb52dd2efecf92f0bd21217277444c0eb305a6e01e0
7
- data.tar.gz: b16247f008a7239b823b4bef7a353ce74a88b575093f83668c3e7c61888db68d61213a43bf0dd22603b5948a91f23a3eff3bbba671a8090cdb681addc0a1fa69
6
+ metadata.gz: c11f9122b4bc56d3226472f72a48c41585a6095b404935b0a3056fbcc8ee68758abe3e8308bd9080f552178401ca6876b8214d60299eaaa3991aa0a994af245f
7
+ data.tar.gz: d41fe77585a4d93d84ffbd789b1474e30690a02ed9404fd492c45e785bb5d6ceb31dbfe560f9646c2a79cf99d499c79cd3d76fef9d25da36da0c8b2d6a4aec44
data/lib/ivo.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "ivo/version"
2
+ require 'ivo/value'
2
3
 
3
4
  module Ivo
4
5
  def self.new(*attrs, &block)
@@ -14,7 +15,7 @@ module Ivo
14
15
 
15
16
  equality_check = begin
16
17
  checks = ['self.class == other.class']
17
- checks = attrs.each { checks << "#{attr} == other.#{attr}" }
18
+ attrs.each { |attr| checks << "#{attr} == other.#{attr}" }
18
19
  checks.join ' && '
19
20
  end
20
21
 
@@ -51,4 +52,8 @@ module Ivo
51
52
  class_eval &block if block
52
53
  end
53
54
  end
55
+
56
+ def self.call(attrs = nil)
57
+ Value.new attrs
58
+ end
54
59
  end
data/lib/ivo/value.rb ADDED
@@ -0,0 +1,36 @@
1
+ module Ivo
2
+ class Value
3
+ def initialize(data = nil)
4
+ @data = {}
5
+ data.each { |k, v| @data[k.to_sym] = v } if data
6
+ freeze
7
+ end
8
+
9
+ def respond_to_missing?(method_id, include_private = false)
10
+ data.key?(method_id) || super
11
+ end
12
+
13
+ def method_missing(method_id, *args)
14
+ data.fetch(method_id) { super }
15
+ end
16
+
17
+ def ==(other)
18
+ self.class == other.class && data == other.data
19
+ end
20
+
21
+ alias_method :eql?, :==
22
+
23
+ def hash
24
+ data.hash
25
+ end
26
+
27
+ def inspect
28
+ attributes = data.map { |key, value| "#{key}=#{value.inspect}" }.join ', '
29
+ "#<#{self.class.name} #{attributes}>"
30
+ end
31
+
32
+ protected
33
+
34
+ attr_reader :data
35
+ end
36
+ end
data/lib/ivo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ivo
2
- VERSION = "0.2.2"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ivo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Schneider
@@ -68,6 +68,7 @@ files:
68
68
  - bin/setup
69
69
  - ivo.gemspec
70
70
  - lib/ivo.rb
71
+ - lib/ivo/value.rb
71
72
  - lib/ivo/version.rb
72
73
  homepage: https://github.com/austinthecoder/ivo
73
74
  licenses: []