simple_facade 0.1.2 → 0.1.3
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/simple_facade.rb +42 -37
- data/lib/simple_facade/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: 9a3b97b20c0d5d25c6b93aac6a21f47a10bba41b
|
4
|
+
data.tar.gz: 7a79ce4587f508dd0130eb8292cb9e8d6f7c97e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32b1b970f368adeae96b3c37125eb344c30e6788341d739c949b81376225c532a6e7b69246c4112dc944303d508a23e00bb680506e5689285bc39b48e21d31de
|
7
|
+
data.tar.gz: ee9dddcd9688775e0327d825e8bd5566588bee26ac7177983d81f7bab167f86dbb4994ccbe570ee3014693564d629f2bfa0fb21c7a559d9e2b939fdc1b36cbbb
|
data/Gemfile.lock
CHANGED
data/lib/simple_facade.rb
CHANGED
@@ -3,58 +3,45 @@ require 'simple_facade/version'
|
|
3
3
|
module SimpleFacade
|
4
4
|
class Error < StandardError; end
|
5
5
|
|
6
|
-
|
7
|
-
def
|
8
|
-
@subjects = []
|
9
|
-
if attrs.size == 1 && attrs.first.is_a?(Hash)
|
10
|
-
@subjects += attrs.first.to_a
|
11
|
-
else
|
12
|
-
@subjects += attrs.select {|el| el.is_a(Array) && el.size == 2}
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def members
|
17
|
-
@members ||= subjects.to_h
|
18
|
-
end
|
19
|
-
|
20
|
-
def push(k, v)
|
6
|
+
module Mixin
|
7
|
+
def facade_push(k, v)
|
21
8
|
return if v.nil? || k.nil? || key_exists?(k)
|
22
|
-
@
|
23
|
-
|
9
|
+
@__members__ = nil
|
10
|
+
__subjects__.push([k, v])
|
24
11
|
end
|
25
12
|
|
26
|
-
def
|
27
|
-
@
|
28
|
-
|
13
|
+
def facade_pop
|
14
|
+
@__members__ = nil
|
15
|
+
__subjects__.pop
|
29
16
|
end
|
30
17
|
|
31
|
-
def
|
18
|
+
def facade_enqueue(k, v)
|
32
19
|
return if v.nil? || k.nil? || key_exists?(k)
|
33
|
-
@
|
34
|
-
|
20
|
+
@__members__ = nil
|
21
|
+
__subjects__.unshift([k, v])
|
35
22
|
end
|
36
23
|
|
37
|
-
def
|
38
|
-
@
|
39
|
-
|
24
|
+
def facade_dequeue
|
25
|
+
@__members__ = nil
|
26
|
+
__subjects__.shift
|
40
27
|
end
|
41
28
|
|
42
|
-
def
|
29
|
+
def facade_insert(index, k, v)
|
43
30
|
return if v.nil? || k.nil? || index.nil? || key_exists?(k)
|
44
|
-
@
|
45
|
-
|
31
|
+
@__members__ = nil
|
32
|
+
__subjects__.insert(index, [k, v])
|
46
33
|
end
|
47
34
|
|
48
|
-
def
|
35
|
+
def facade_delete(key)
|
49
36
|
return if key.nil?
|
50
|
-
@
|
51
|
-
|
37
|
+
@__members__ = nil
|
38
|
+
__subjects__.delete_at(__subjects__.index { |el| el.first == key })
|
52
39
|
end
|
53
40
|
|
54
41
|
def method_missing(method_name, *attrs, &block)
|
55
|
-
member =
|
42
|
+
member = __members__[method_name]
|
56
43
|
return member if member
|
57
|
-
responder =
|
44
|
+
responder = __members__.values.detect { |obj| obj.respond_to?(method_name) }
|
58
45
|
if responder
|
59
46
|
responder.public_send(method_name, *attrs, &block)
|
60
47
|
else
|
@@ -63,15 +50,33 @@ module SimpleFacade
|
|
63
50
|
end
|
64
51
|
|
65
52
|
def respond_to_missing?(method_name, _include_private = false)
|
66
|
-
|
53
|
+
!__members__[method_name].nil? || __members__.values.any? { |obj| obj.respond_to?(method_name) }
|
67
54
|
end
|
68
55
|
|
69
56
|
private
|
70
57
|
|
71
|
-
|
58
|
+
def __subjects__
|
59
|
+
@__subjects__ ||= []
|
60
|
+
end
|
61
|
+
|
62
|
+
def __members__
|
63
|
+
@__members__ ||= __subjects__.to_h
|
64
|
+
end
|
72
65
|
|
73
66
|
def key_exists?(key)
|
74
|
-
|
67
|
+
__members__.keys.include?(key)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
class Base
|
72
|
+
include Mixin
|
73
|
+
|
74
|
+
def initialize(*attrs, **options)
|
75
|
+
@__subjects__ = []
|
76
|
+
@__subjects__ += options.to_a
|
77
|
+
@__subjects__ += attrs.select {|el| el.is_a?(Array) && el.size == 2}
|
75
78
|
end
|
79
|
+
|
80
|
+
attr_reader :__subjects__
|
76
81
|
end
|
77
82
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_facade
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrii Baran
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|