oop 0.3.0 → 0.4.0
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/lib/oop/basic_rules.rb +10 -4
- data/lib/oop/ext.rb +2 -6
- data/lib/oop/value_communications.rb +11 -31
- data/lib/oop/value_interface.rb +7 -0
- data/lib/oop/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2aaca8a6b423ff2bccc411180331c5c8c1be89ff
|
4
|
+
data.tar.gz: 19fee614c4f7c83a4201230669fb736d5657025e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e38453713fe1d67ed64443835e8db36341852e00e59201ba4720d8d62660a14f7e39bc59d2558432b27ec88a896a74b62297c31074453fd5665306d3020dc08
|
7
|
+
data.tar.gz: 32cddc73ed98d112b2a4e1a560ec0576be8bf7be6aee183ac3b247930d82cec4ae72710eea5d783a80003e3dd7d9f2c3d9ac10d1e9fa052a0d4118a069d179b5
|
data/lib/oop/basic_rules.rb
CHANGED
@@ -3,16 +3,22 @@ require 'oop/value'
|
|
3
3
|
|
4
4
|
module OOP
|
5
5
|
class BasicRules
|
6
|
-
def
|
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
|
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
|
-
|
9
|
+
BasicRules.cast_to_value(arg)
|
17
10
|
end
|
18
|
-
|
11
|
+
BasicRules.cast_to_value(self.instance_exec(*(args + [blk]), &block))
|
19
12
|
end
|
20
13
|
end
|
21
14
|
|
22
|
-
def import(
|
23
|
-
imports.each do |import|
|
24
|
-
define_method(
|
25
|
-
|
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
|
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
|
-
|
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
|
-
|
59
|
-
|
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
|
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.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-
|
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
|