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 +4 -4
- data/lib/ivo.rb +6 -1
- data/lib/ivo/value.rb +36 -0
- data/lib/ivo/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 867ecedc666df35bde9256a9464f0e511b880000
|
4
|
+
data.tar.gz: 06c5b89364f8f0cc9c2d3fc69fca5dd07529df26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
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.
|
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: []
|