ivo 0.2.2 → 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
  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: []