reflekt 1.0.8 → 1.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/config.rb +2 -1
- data/lib/experiment.rb +27 -0
- data/lib/meta/object_meta.rb +35 -0
- data/lib/meta_builder.rb +17 -3
- data/lib/reflection.rb +0 -27
- data/lib/rules/object_rule.rb +42 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ed0b66e3e9110822e6d14ba1a77fc5627b40edea4223d4252fd30ea4853047c
|
4
|
+
data.tar.gz: 39990e22a2f9ddac9382a8b960b10ead0b81598db3bf86eac4a1c499182e065b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48497c5c451bde6860039fb9570f77a4bd0a9fd4b889d497d9c06079a9e852f3f426e42f01c5480c6bf621f4ba90179e9f95022fcd5e223f3b1da6718936e871
|
7
|
+
data.tar.gz: 4e1f58483092d4f7f626878303060c0527ff0838ab244f4abc9e3f5b5772af19c95a5a5e86e1a2d6361027efa80882ead7dafee544698bf895555a7086a63d97
|
data/lib/config.rb
CHANGED
@@ -28,11 +28,12 @@ class Config
|
|
28
28
|
:int => [IntegerRule],
|
29
29
|
:float => [FloatRule],
|
30
30
|
:null => [NullRule],
|
31
|
+
:object => [ObjectRule],
|
31
32
|
:string => [StringRule]
|
32
33
|
}
|
33
34
|
|
34
35
|
# An absolute path to the directory that contains the output directory.
|
35
|
-
# Defaults to current
|
36
|
+
# Defaults to current execution path.
|
36
37
|
@output_path = nil
|
37
38
|
|
38
39
|
# Name of output directory.
|
data/lib/experiment.rb
CHANGED
@@ -79,5 +79,32 @@ class Experiment < Reflection
|
|
79
79
|
|
80
80
|
end
|
81
81
|
|
82
|
+
##
|
83
|
+
# Create random values for each argument from control reflections.
|
84
|
+
#
|
85
|
+
# @param args [Dynamic] The arguments to mirror random values for.
|
86
|
+
# @param input_rule_sets [Array] Aggregated rule sets for each argument.
|
87
|
+
#
|
88
|
+
# @return [Dynamic] Random arguments.
|
89
|
+
##
|
90
|
+
def randomize(args, input_rule_sets)
|
91
|
+
|
92
|
+
random_args = []
|
93
|
+
|
94
|
+
args.each_with_index do |arg, arg_num|
|
95
|
+
|
96
|
+
# Get a random rule in the rule set.
|
97
|
+
rules = input_rule_sets[arg_num].rules
|
98
|
+
agg_rule = rules[rules.keys.sample]
|
99
|
+
|
100
|
+
# Create a random value that follows that rule.
|
101
|
+
random_args << agg_rule.random()
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
return random_args
|
106
|
+
|
107
|
+
end
|
108
|
+
|
82
109
|
end
|
83
110
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
################################################################################
|
2
|
+
# A reprsentation of a null value.
|
3
|
+
#
|
4
|
+
# @hierachy
|
5
|
+
# 1. Action
|
6
|
+
# 2. Reflection
|
7
|
+
# 3. Meta <- YOU ARE HERE
|
8
|
+
################################################################################
|
9
|
+
|
10
|
+
require_relative '../meta'
|
11
|
+
|
12
|
+
module Reflekt
|
13
|
+
class ObjectMeta < Meta
|
14
|
+
|
15
|
+
def initialize()
|
16
|
+
@type = :object
|
17
|
+
@class_type = nil
|
18
|
+
end
|
19
|
+
|
20
|
+
##
|
21
|
+
# @param value [Dynamic] Any custom class.
|
22
|
+
##
|
23
|
+
def load(value)
|
24
|
+
@class_type = value.class
|
25
|
+
end
|
26
|
+
|
27
|
+
def serialize()
|
28
|
+
{
|
29
|
+
:type => @type,
|
30
|
+
:class_type => @class_type
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
data/lib/meta_builder.rb
CHANGED
@@ -13,7 +13,12 @@ module Reflekt
|
|
13
13
|
class MetaBuilder
|
14
14
|
|
15
15
|
##
|
16
|
-
# Create meta.
|
16
|
+
# Create meta type for matching data type.
|
17
|
+
#
|
18
|
+
# @flow
|
19
|
+
# 1. First return basic type
|
20
|
+
# 2. Then return custom type
|
21
|
+
# 3. Then return "nil" type
|
17
22
|
#
|
18
23
|
# @param value
|
19
24
|
##
|
@@ -22,7 +27,6 @@ class MetaBuilder
|
|
22
27
|
meta = nil
|
23
28
|
data_type = value.class.to_s
|
24
29
|
|
25
|
-
# Create meta type for matching data type.
|
26
30
|
case data_type
|
27
31
|
when "Array"
|
28
32
|
meta = ArrayMeta.new()
|
@@ -34,6 +38,10 @@ class MetaBuilder
|
|
34
38
|
meta = IntegerMeta.new()
|
35
39
|
when "String"
|
36
40
|
meta = StringMeta.new()
|
41
|
+
else
|
42
|
+
unless value.nil?
|
43
|
+
meta = ObjectMeta.new()
|
44
|
+
end
|
37
45
|
end
|
38
46
|
|
39
47
|
unless meta.nil?
|
@@ -78,7 +86,13 @@ class MetaBuilder
|
|
78
86
|
String => :string
|
79
87
|
}
|
80
88
|
|
81
|
-
|
89
|
+
if meta_types.key? data_type
|
90
|
+
return meta_types[data_type]
|
91
|
+
elsif value.nil?
|
92
|
+
return nil
|
93
|
+
else
|
94
|
+
return :object
|
95
|
+
end
|
82
96
|
|
83
97
|
end
|
84
98
|
|
data/lib/reflection.rb
CHANGED
@@ -70,33 +70,6 @@ class Reflection
|
|
70
70
|
# Implemented by Control and Experiment.
|
71
71
|
end
|
72
72
|
|
73
|
-
##
|
74
|
-
# Create random values for each argument from control reflections.
|
75
|
-
#
|
76
|
-
# @param args [Dynamic] The arguments to mirror random values for.
|
77
|
-
# @param input_rule_sets [Array] Aggregated rule sets for each argument.
|
78
|
-
#
|
79
|
-
# @return [Dynamic] Random arguments.
|
80
|
-
##
|
81
|
-
def randomize(args, input_rule_sets)
|
82
|
-
|
83
|
-
random_args = []
|
84
|
-
|
85
|
-
args.each_with_index do |arg, arg_num|
|
86
|
-
|
87
|
-
# Get a random rule in the rule set.
|
88
|
-
rules = input_rule_sets[arg_num].rules
|
89
|
-
agg_rule = rules[rules.keys.sample]
|
90
|
-
|
91
|
-
# Create a random value that follows that rule.
|
92
|
-
random_args << agg_rule.random()
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
return random_args
|
97
|
-
|
98
|
-
end
|
99
|
-
|
100
73
|
##
|
101
74
|
# Get the results of the reflection.
|
102
75
|
#
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require_relative '../rule'
|
2
|
+
|
3
|
+
module Reflekt
|
4
|
+
class ObjectRule < Rule
|
5
|
+
|
6
|
+
def initialize()
|
7
|
+
@type = :object
|
8
|
+
@class_type = nil
|
9
|
+
# TODO: Populate with meta for each arg.
|
10
|
+
@class_args = []
|
11
|
+
end
|
12
|
+
|
13
|
+
##
|
14
|
+
# @param meta [ObjectMeta]
|
15
|
+
##
|
16
|
+
def train(meta)
|
17
|
+
if @class_type.nil?
|
18
|
+
@class_type = meta[:class_type]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
##
|
23
|
+
# @param value [NilClass]
|
24
|
+
##
|
25
|
+
def test(value)
|
26
|
+
value.class.to_s == @class_type
|
27
|
+
end
|
28
|
+
|
29
|
+
def result()
|
30
|
+
{
|
31
|
+
:type => @type,
|
32
|
+
:class_type => @class_type
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def random()
|
37
|
+
# TODO: Instantiate class with appropriate @class_args metadata.
|
38
|
+
eval("#{@class_type}").new()
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reflekt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maedi Prichard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rowdb
|
@@ -43,6 +43,7 @@ files:
|
|
43
43
|
- lib/meta/float_meta.rb
|
44
44
|
- lib/meta/integer_meta.rb
|
45
45
|
- lib/meta/null_meta.rb
|
46
|
+
- lib/meta/object_meta.rb
|
46
47
|
- lib/meta/string_meta.rb
|
47
48
|
- lib/meta_builder.rb
|
48
49
|
- lib/reflection.rb
|
@@ -56,6 +57,7 @@ files:
|
|
56
57
|
- lib/rules/float_rule.rb
|
57
58
|
- lib/rules/integer_rule.rb
|
58
59
|
- lib/rules/null_rule.rb
|
60
|
+
- lib/rules/object_rule.rb
|
59
61
|
- lib/rules/string_rule.rb
|
60
62
|
- lib/web/README.md
|
61
63
|
- lib/web/bundle.js
|