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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1183065ffac905cb9395cc1c8b7e5c490b4de30e
4
- data.tar.gz: b5fd29ea1807caac9c758a1540f3c406cb9a6a93
3
+ metadata.gz: 9a3b97b20c0d5d25c6b93aac6a21f47a10bba41b
4
+ data.tar.gz: 7a79ce4587f508dd0130eb8292cb9e8d6f7c97e5
5
5
  SHA512:
6
- metadata.gz: 37736b2c7749b99cd7f4a774a36d759e4ff863f67da33d6cfaf9909ba4d9404ef4e7bdd3045880d4dd00417a9db84fd02e949cd73351f532316c3bd9efbd5f1c
7
- data.tar.gz: 7bc6f47156e1184ea94307971acf61ea1428de0de3849b71ffc50cfdc5424c74c503769edbd0f481d8a6eff829a637a946d3acd540eed918dbe44e2445e12861
6
+ metadata.gz: 32b1b970f368adeae96b3c37125eb344c30e6788341d739c949b81376225c532a6e7b69246c4112dc944303d508a23e00bb680506e5689285bc39b48e21d31de
7
+ data.tar.gz: ee9dddcd9688775e0327d825e8bd5566588bee26ac7177983d81f7bab167f86dbb4994ccbe570ee3014693564d629f2bfa0fb21c7a559d9e2b939fdc1b36cbbb
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_facade (0.1.2)
4
+ simple_facade (0.1.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -3,58 +3,45 @@ require 'simple_facade/version'
3
3
  module SimpleFacade
4
4
  class Error < StandardError; end
5
5
 
6
- class Base
7
- def initialize(*attrs)
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
- @members = nil
23
- subjects.push([k, v])
9
+ @__members__ = nil
10
+ __subjects__.push([k, v])
24
11
  end
25
12
 
26
- def pop
27
- @members = nil
28
- subjects.pop
13
+ def facade_pop
14
+ @__members__ = nil
15
+ __subjects__.pop
29
16
  end
30
17
 
31
- def enqueue(k, v)
18
+ def facade_enqueue(k, v)
32
19
  return if v.nil? || k.nil? || key_exists?(k)
33
- @members = nil
34
- subjects.unshift([k, v])
20
+ @__members__ = nil
21
+ __subjects__.unshift([k, v])
35
22
  end
36
23
 
37
- def dequeue
38
- @members = nil
39
- subjects.shift
24
+ def facade_dequeue
25
+ @__members__ = nil
26
+ __subjects__.shift
40
27
  end
41
28
 
42
- def insert(index, k, v)
29
+ def facade_insert(index, k, v)
43
30
  return if v.nil? || k.nil? || index.nil? || key_exists?(k)
44
- @members = nil
45
- subjects.insert(index, [k, v])
31
+ @__members__ = nil
32
+ __subjects__.insert(index, [k, v])
46
33
  end
47
34
 
48
- def delete(key)
35
+ def facade_delete(key)
49
36
  return if key.nil?
50
- @members = nil
51
- subjects.delete_at(subjects.index { |el| el.first == key })
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 = members[method_name]
42
+ member = __members__[method_name]
56
43
  return member if member
57
- responder = members.values.detect { |obj| obj.respond_to?(method_name) }
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
- members.values.any? { |obj| obj.respond_to?(method_name) }
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
- attr_reader :subjects
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
- members.keys.include?(key)
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
@@ -1,3 +1,3 @@
1
1
  module SimpleFacade
2
- VERSION = '0.1.2'.freeze
2
+ VERSION = '0.1.3'.freeze
3
3
  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.2
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-28 00:00:00.000000000 Z
11
+ date: 2020-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler