oop 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/oop/tools.rb +19 -2
  3. data/lib/oop/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b1bc5413988e59c81e35971a4009fcee97823f4
4
- data.tar.gz: 02f74b58e4a55041fe1bd7054717dc31612e51d7
3
+ metadata.gz: 1e0d5bf847d6a7863bd8b327808ff4b9524393c1
4
+ data.tar.gz: 073dd1e1db6b5d6f85879720324e9f06ad8b838c
5
5
  SHA512:
6
- metadata.gz: 2ee55376633dee2764e593b8ccfecc417d4cd6e34e26e35be9f0ddfe2f98107324abae844aeb8b25b949c0c6ffb06a73f33bfbde1780458ad0a54a8a65d22d5c
7
- data.tar.gz: 8eb3b1929b4121af4b74c1a52dd2dce36a30c3af31f96c14f7dfcda94e67cce836bed7c68efb2e57a16f43b7a5cb95d19ff9c588be665605a8eedf9109fcbcae
6
+ metadata.gz: aa5f6e7b129cc16c6962144dab3ce79194cf63d6de205c30682e72e1ae238d155fe12403d1f94e8a30f3843bddc35554a632fa308989ab4ba029eb6178b6cc07
7
+ data.tar.gz: 7a53ce080511e3fb5eaf369ae128d1d4cd45606449f17575823243234d90d494b1433c92f2643acb97e5c92063eebf606cfe3b2ec2d0f2019409e3827b11ddf5
data/lib/oop/tools.rb CHANGED
@@ -10,13 +10,30 @@ module OOP
10
10
  end
11
11
  end
12
12
  def konstructor(*parts, &block)
13
- parts = parts.first if parts.first.is_a?(Hash)
13
+ parts_hsh = if parts.last.is_a?(Hash)
14
+ *parts, hsh = parts
15
+ parts += hsh.keys
16
+ parts.reduce({}){|m,e| m[e] = nil; m}.merge(hsh)
17
+ else
18
+ parts.reduce({}){|m,e| m[e] = nil; m}
19
+ end
14
20
  define_method(:initialize) do |opts|
15
21
  if block
16
22
  opts = block.call(opts) || raise("#{self} invalid with #{opts}")
17
23
  end
18
24
 
25
+ opts = opts.map{|k,v| [k.to_sym, v] }.to_h
19
26
  @opts = {}
27
+ extra_args = (opts.keys - parts)
28
+ missing_args = parts.select do |k|
29
+ !opts.has_key?(k) && !parts_hsh.has_key?(k)
30
+ end
31
+ if extra_args.any?
32
+ raise "extra args: #{extra_args}"
33
+ elsif missing_args.any?
34
+ raise "missing args: #{missing_args}"
35
+ end
36
+
20
37
  opts.each do |k, v|
21
38
  k = k.to_sym
22
39
  if self.is_a? Value
@@ -27,7 +44,7 @@ module OOP
27
44
  end
28
45
  @opts
29
46
  end
30
- parts.each do |part, defaultt|
47
+ parts_hsh.each do |part, defaultt|
31
48
  part = part.to_sym
32
49
  define_method(part) do
33
50
  @opts[part] ||= defaultt
data/lib/oop/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module OOP
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serguei Filimonov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-02-12 00:00:00.000000000 Z
11
+ date: 2016-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler