ivo 0.3.0 → 0.4.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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/lib/ivo.rb +21 -9
  4. data/lib/ivo/version.rb +1 -1
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 867ecedc666df35bde9256a9464f0e511b880000
4
- data.tar.gz: 06c5b89364f8f0cc9c2d3fc69fca5dd07529df26
3
+ metadata.gz: 3877d0d14eca70586641e288f3067cfb201764a8
4
+ data.tar.gz: ccc3b46313c22dbc1739dc17c862b24b4a79e44f
5
5
  SHA512:
6
- metadata.gz: c11f9122b4bc56d3226472f72a48c41585a6095b404935b0a3056fbcc8ee68758abe3e8308bd9080f552178401ca6876b8214d60299eaaa3991aa0a994af245f
7
- data.tar.gz: d41fe77585a4d93d84ffbd789b1474e30690a02ed9404fd492c45e785bb5d6ceb31dbfe560f9646c2a79cf99d499c79cd3d76fef9d25da36da0c8b2d6a4aec44
6
+ metadata.gz: 17037ae262928c28f4314a1ef9232acbe0ba6dad33fa7939ec613fa1c60941e3f1f6f2ac118a140cb21cff2572c6aa900320f19f86b8c99d9dbf72b726ec782b
7
+ data.tar.gz: 19088a2316bbd097bcabe3fb900d64f4960a4a21b9941f85b45c32069ac0158b4c6013e88b14512bd6b91d93f4de236a57ba50cb6c45842ed710537806e3d1a1
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in ivo.gemspec
4
- gemspec
1
+ source 'https://rubygems.org' do
2
+ gemspec
3
+ gem 'values'
4
+ end
data/lib/ivo.rb CHANGED
@@ -3,6 +3,14 @@ require 'ivo/value'
3
3
 
4
4
  module Ivo
5
5
  def self.new(*attrs, &block)
6
+ Class.new do
7
+ include Ivo.value *attrs
8
+
9
+ class_eval &block if block
10
+ end
11
+ end
12
+
13
+ def self.value(*attrs)
6
14
  # a: nil, b: nil
7
15
  keyword_args = attrs.map { |attr| "#{attr}: nil" }.join ', '
8
16
 
@@ -22,8 +30,14 @@ module Ivo
22
30
  hash = attrs.map { |attr| "#{attr}.hash" }.join ' ^ '
23
31
 
24
32
  code = <<~RUBY
25
- def self.with(#{keyword_args})
26
- new #{attrs.join ', '}
33
+ def self.included(base)
34
+ base.extend ClassMethods
35
+ end
36
+
37
+ module ClassMethods
38
+ def with(#{keyword_args})
39
+ new #{attrs.join ', '}
40
+ end
27
41
  end
28
42
 
29
43
  def initialize(#{args})
@@ -35,21 +49,19 @@ module Ivo
35
49
  #{equality_check}
36
50
  end
37
51
 
38
- def eql?(other)
39
- self == other
40
- end
41
-
42
52
  def hash
43
53
  #{hash}
44
54
  end
45
55
  RUBY
46
56
 
47
- Class.new do
48
- class_eval code
57
+ Module.new do
58
+ module_eval code
49
59
 
50
60
  attr_reader *attrs
51
61
 
52
- class_eval &block if block
62
+ def eql?(other)
63
+ self == other
64
+ end
53
65
  end
54
66
  end
55
67
 
data/lib/ivo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ivo
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ivo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Schneider
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-31 00:00:00.000000000 Z
11
+ date: 2017-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler