ivo 0.1.0 → 0.2.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 (6) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +2 -0
  3. data/ivo.gemspec +3 -2
  4. data/lib/ivo/version.rb +1 -1
  5. data/lib/ivo.rb +30 -1
  6. metadata +20 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 32ff844c5150fa3b5070bb8b422dc75666f77a6a
4
- data.tar.gz: a773fcff275d4a40d7362cd3d238b1f78fe3f60c
3
+ metadata.gz: d5747ee6f891dbb95f024cf3e3c33e0d52b85863
4
+ data.tar.gz: c08663d63ae4277ee82f8abc838bd1f7ca0c2b7c
5
5
  SHA512:
6
- metadata.gz: 6e657ae8b74bfd55b405409c8a351fe6b58bd4bdefff13261b767aa62f10989989ce900f695a83cc0ebca92b02f75f897dda83857e400c547264d7700cca16b0
7
- data.tar.gz: 62237d3532547caeb9ac9e3ef5721a620ec2f80dcaf9836bcd3eefe98d70ec9cc0ae24a5e5ca170c9fec641d68e07c379f0756a8f6aac7ad48471f9d7bce4e96
6
+ metadata.gz: f75cb0535646c1882399900ce9e8056e7a052f41a2a4dad8563a07c491d411d483abe5ed4884adf4f56ac119d4423b463ff350eb8ced4e68cf3f8d11d5374913
7
+ data.tar.gz: 2de715be773f2d3abfa169c73720a97bc5498afec038c2a14d651b9100f9abbbf08bdaf22b782132c704f6b8b15e4bb7166b73dbacd127f7d0a49d6778d3f4db
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/ivo.gemspec CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.14"
23
- spec.add_development_dependency "rake", "~> 10.0"
22
+ spec.add_development_dependency "bundler", "~> 1"
23
+ spec.add_development_dependency "rake", "~> 12"
24
+ spec.add_development_dependency "rspec", "~> 3"
24
25
  end
data/lib/ivo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ivo
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/ivo.rb CHANGED
@@ -1,5 +1,34 @@
1
1
  require "ivo/version"
2
2
 
3
3
  module Ivo
4
- # Your code goes here...
4
+ def self.new(*attrs)
5
+ # a: nil, b: nil
6
+ keyword_args = attrs.map { |attr| "#{attr}: nil" }.join ', '
7
+
8
+ # a, b
9
+ args = attrs.map { |attr| "#{attr} = nil" }.join ', '
10
+
11
+ # @a = a
12
+ # @b = b
13
+ instance_variable_assignments = attrs.map { |attr| "@#{attr} = #{attr}" }.join "\n"
14
+
15
+ code = <<~RUBY
16
+ def self.with(#{keyword_args})
17
+ new #{attrs.join ', '}
18
+ end
19
+
20
+ def initialize(#{args})
21
+ #{instance_variable_assignments}
22
+ freeze
23
+ end
24
+ RUBY
25
+
26
+ Class.new do
27
+ class_eval code
28
+
29
+ attr_reader *attrs
30
+
31
+ yield if block_given?
32
+ end
33
+ end
5
34
  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.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Schneider
@@ -16,28 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.14'
19
+ version: '1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.14'
26
+ version: '1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '12'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3'
41
55
  description:
42
56
  email:
43
57
  - me@austinschneider.com
@@ -46,6 +60,7 @@ extensions: []
46
60
  extra_rdoc_files: []
47
61
  files:
48
62
  - ".gitignore"
63
+ - ".rspec"
49
64
  - Gemfile
50
65
  - README.md
51
66
  - Rakefile