oop 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bb9d1bf13e5c147e22eefb62768d3bfdc9bb5a38
4
- data.tar.gz: a5f6928033fccdc27467099fd810df0a8155e27f
3
+ metadata.gz: 2aaca8a6b423ff2bccc411180331c5c8c1be89ff
4
+ data.tar.gz: 19fee614c4f7c83a4201230669fb736d5657025e
5
5
  SHA512:
6
- metadata.gz: ef4a599ef3f32cbc7707bdafa193ba20f2e60384966b2146b0c4ce818e5e33b455b09295f2a5087e266ca6464eeac1837d2322cb7465bd8e3efcefe3c8376a22
7
- data.tar.gz: 1711dc7c27cbdc2f3c0167ea50a1d3b28d40a741a48528feafa193615e48ad1385d29dfab6d096961d6a862e334d0193ea7fb4450255b68d8b81e409d0d0954c
6
+ metadata.gz: 4e38453713fe1d67ed64443835e8db36341852e00e59201ba4720d8d62660a14f7e39bc59d2558432b27ec88a896a74b62297c31074453fd5665306d3020dc08
7
+ data.tar.gz: 32cddc73ed98d112b2a4e1a560ec0576be8bf7be6aee183ac3b247930d82cec4ae72710eea5d783a80003e3dd7d9f2c3d9ac10d1e9fa052a0d4118a069d179b5
@@ -3,16 +3,22 @@ require 'oop/value'
3
3
 
4
4
  module OOP
5
5
  class BasicRules
6
- def trusted_values
7
- []
6
+ def self.instance
7
+ @instance ||= new
8
+ end
9
+
10
+ def self.cast_to_value(arg)
11
+ self.instance.cast_to_value(arg)
8
12
  end
9
13
 
10
14
  def cast_to_value(arg)
15
+ if arg.respond_to?(:super_mega_private_oop_method_valid?) && arg.super_mega_private_oop_method_valid?
16
+ return arg
17
+ end
18
+
11
19
  case arg
12
20
  when Value, TrueClass, FalseClass, NilClass, Proc then
13
21
  arg
14
- when *trusted_values
15
- arg
16
22
  when Hash then
17
23
  Hash[arg.map{|k,v| [cast_to_value(k), cast_to_value(v)] }.to_h].freeze
18
24
  when Array then
data/lib/oop/ext.rb CHANGED
@@ -1,14 +1,10 @@
1
1
  require 'oop/basic_rules'
2
2
  require 'oop/value_provider'
3
+ require 'oop/value_interface'
3
4
  require 'oop/value_communications'
4
5
 
5
6
  class Class
6
- def acts_as_value(rules = OOP::BasicRules.new, provider = OOP::ValueProvider.new)
7
+ def acts_as_value
7
8
  include OOP::ValueCommunications
8
- value_caster rules
9
- value_provider provider
10
- define_singleton_method :constructor do |*parts, &block|
11
- value_contructor(rules, *parts, &block)
12
- end
13
9
  end
14
10
  end
@@ -1,33 +1,26 @@
1
1
  require 'oop/basic_rules'
2
- require 'oop/value_provider'
3
2
 
4
3
  module OOP
5
4
  module ValueCommunications
6
5
  module ClassMethods
7
- def value_caster(new_caster)
8
- @value_caster = new_caster
9
- end
10
- def value_provider(new_provider)
11
- @value_provider = new_provider
12
- end
13
6
  def message(meth, &block)
14
7
  define_method(meth) do |*args, &blk|
15
8
  args = args.map do |arg|
16
- value_caster.cast_to_value(arg)
9
+ BasicRules.cast_to_value(arg)
17
10
  end
18
- value_caster.cast_to_value(self.instance_exec(*(args + [blk]), &block))
11
+ BasicRules.cast_to_value(self.instance_exec(*(args + [blk]), &block))
19
12
  end
20
13
  end
21
14
 
22
- def import(*imports)
23
- imports.each do |import|
24
- define_method(import.to_sym) do
25
- value_provider.send(import)
15
+ def import(imports)
16
+ imports.each do |name, import|
17
+ define_method(name.to_sym) do
18
+ BasicRules.cast_to_value(import)
26
19
  end
27
20
  end
28
21
  end
29
22
 
30
- def value_contructor(rules, *parts, &block)
23
+ def constructor(*parts, &block)
31
24
  define_method(:initialize) do |opts={}|
32
25
  opts ||= {}
33
26
  if block
@@ -45,7 +38,7 @@ module OOP
45
38
  @opts = opts;
46
39
  opts.each do |k, v|
47
40
  k = k.to_sym
48
- @opts[rules.cast_to_value(k)] = rules.cast_to_value(v)
41
+ @opts[BasicRules.cast_to_value(k)] = BasicRules.cast_to_value(v)
49
42
  end
50
43
  end
51
44
  parts.each do |p|
@@ -54,27 +47,14 @@ module OOP
54
47
  end
55
48
  end
56
49
  end
50
+ end
57
51
 
58
- def get_value_provider
59
- @value_provider || ValueProvider.new
60
- end
61
- def get_value_caster
62
- @value_caster || BasicRules.new
63
- end
52
+ def super_mega_private_oop_method_valid?
53
+ true
64
54
  end
65
55
 
66
56
  def self.included(klass)
67
57
  klass.extend(ClassMethods)
68
58
  end
69
-
70
- private
71
-
72
- def value_caster
73
- self.class.get_value_caster
74
- end
75
-
76
- def value_provider
77
- self.class.get_value_provider
78
- end
79
59
  end
80
60
  end
@@ -0,0 +1,7 @@
1
+ module OOP
2
+ module ValueInterface
3
+ def super_mega_private_oop_method_valid?
4
+ true
5
+ end
6
+ end
7
+ end
data/lib/oop/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module OOP
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.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.3.0
4
+ version: 0.4.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-05-09 00:00:00.000000000 Z
11
+ date: 2016-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -78,6 +78,7 @@ files:
78
78
  - lib/oop/tools.rb
79
79
  - lib/oop/value.rb
80
80
  - lib/oop/value_communications.rb
81
+ - lib/oop/value_interface.rb
81
82
  - lib/oop/value_provider.rb
82
83
  - lib/oop/version.rb
83
84
  - oop.gemspec