ivo 0.3.0 → 0.4.0

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