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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dbf2d5252cd33de5b703d08dd879a7f99b9d1be5
4
- data.tar.gz: cd17bf2515f89c98102218aefa04090fa7a577ee
3
+ metadata.gz: f0921e8f07d72d816404d7118a28e8252d2ce03f
4
+ data.tar.gz: 0fd855b2d7604a99be72a60e219112afce8ff07a
5
5
  SHA512:
6
- metadata.gz: 09abe8948a11ebe1fd9fe628b8f6d9e035a36ba98cf11885adabdc371e0890b69422e1dec6f5fe66805b177fe8718543643c1ee57e5f8fd4972aa900f86143b4
7
- data.tar.gz: b24c21e86b44dc7160bae52f5a2919d86e42d24fb193ddeb0d75d08089bdc0e201973196df7f125f802b15778deb72b2f2ac15456301c4ae40bb064f268845e0
6
+ metadata.gz: 36fe0ac3f7e4047357990f6bc012778f801ed3823fb054096a0bbb0db42af46ef3a270b9263636f58dbf2198c0208f9c2d0cd75351b461610af08dc857503655
7
+ data.tar.gz: a0f35e57f48b3003ab73d2effb182151723deac8a7ccf9d470a70249c3a05e871c217d6e21e84176e68645a79b4442c12683efd973e73b6c670a95d4e1848e91
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- undecided (0.1.0)
4
+ undecided (0.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -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
- raise "#{value} Is not a correct value, " \
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
 
@@ -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)
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Undecided
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.1.1'.freeze
3
3
  end
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.0
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-08 00:00:00.000000000 Z
11
+ date: 2016-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler