undecided 0.1.0 → 0.1.1
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/undecided/converter.rb +6 -1
- data/lib/undecided/decider.rb +2 -2
- data/lib/undecided/evaluator.rb +11 -1
- data/lib/undecided/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: f0921e8f07d72d816404d7118a28e8252d2ce03f
|
4
|
+
data.tar.gz: 0fd855b2d7604a99be72a60e219112afce8ff07a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36fe0ac3f7e4047357990f6bc012778f801ed3823fb054096a0bbb0db42af46ef3a270b9263636f58dbf2198c0208f9c2d0cd75351b461610af08dc857503655
|
7
|
+
data.tar.gz: a0f35e57f48b3003ab73d2effb182151723deac8a7ccf9d470a70249c3a05e871c217d6e21e84176e68645a79b4442c12683efd973e73b6c670a95d4e1848e91
|
data/Gemfile.lock
CHANGED
data/lib/undecided/converter.rb
CHANGED
@@ -28,10 +28,15 @@ class Converter
|
|
28
28
|
# if boolean return value
|
29
29
|
return value if Undecided::Evaluator.bool?(value)
|
30
30
|
# transform integer value to boolean
|
31
|
+
error(value) unless [0, 1].include? value
|
31
32
|
!value.to_i.zero?
|
32
33
|
rescue => e
|
33
34
|
puts e.message
|
34
|
-
|
35
|
+
error value
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.error(value)
|
39
|
+
raise Undecided::DeciderError, "#{value} Is not a correct value, " \
|
35
40
|
'insert (1 or 0) or (true or false)'
|
36
41
|
end
|
37
42
|
|
data/lib/undecided/decider.rb
CHANGED
@@ -4,8 +4,8 @@ module Undecided
|
|
4
4
|
# Evaluate boolean expression
|
5
5
|
class Decider
|
6
6
|
# Given a boolean expression and data to replace, return result
|
7
|
-
def decide(rule, values)
|
8
|
-
error unless Undecided::Evaluator.valid?(rule, values)
|
7
|
+
def decide(rule, values, strict = true)
|
8
|
+
error unless Undecided::Evaluator.valid?(rule, values, strict)
|
9
9
|
# Sanitize data
|
10
10
|
# Eval rules and values after process it, with safe data
|
11
11
|
final_expression = Converter.replacing_variables(rule, values)
|
data/lib/undecided/evaluator.rb
CHANGED
@@ -4,15 +4,25 @@ module Undecided
|
|
4
4
|
# REGEX that match operators
|
5
5
|
VARIABLE_REGEX = /\&|\||\(|\)|!/
|
6
6
|
# Check if rule and values are valid to evaluate
|
7
|
-
def self.valid?(rule, values)
|
7
|
+
def self.valid?(rule, values, strict = true)
|
8
8
|
# Extract variables from rule
|
9
9
|
variables = extract_variables(rule)
|
10
10
|
|
11
11
|
return false if variables.empty?
|
12
|
+
|
13
|
+
# if validation is not strict, add missing values
|
14
|
+
fill_values(variables, values) unless strict
|
15
|
+
|
12
16
|
# Check if rule's variable and values's keys are the same
|
13
17
|
(variables - Converter.to_symbol(values.keys)).empty?
|
14
18
|
end
|
15
19
|
|
20
|
+
# If there are more variables than values, then added as false
|
21
|
+
def self.fill_values(variables, values)
|
22
|
+
extras = variables - Converter.to_symbol(values.keys)
|
23
|
+
extras.each { |e| values[Converter.to_symbol(e)] = false }
|
24
|
+
end
|
25
|
+
|
16
26
|
# Check if value is a boolean type
|
17
27
|
def self.bool?(value)
|
18
28
|
[true, false].include? value
|
data/lib/undecided/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: undecided
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jotase
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|