oop 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/oop/tools.rb +19 -2
- data/lib/oop/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e0d5bf847d6a7863bd8b327808ff4b9524393c1
|
4
|
+
data.tar.gz: 073dd1e1db6b5d6f85879720324e9f06ad8b838c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
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
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.
|
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-
|
11
|
+
date: 2016-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|