anodator 1.0.0.pre1 → 1.0.0.pre2

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.
Files changed (44) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +3 -0
  3. data/.gitignore +3 -0
  4. data/.travis.yml +11 -0
  5. data/Gemfile +2 -2
  6. data/README.md +9 -4
  7. data/Rakefile +3 -3
  8. data/anodator.gemspec +17 -14
  9. data/bin/console +3 -3
  10. data/bin/console-on-docker +4 -0
  11. data/bin/docker-console +2 -0
  12. data/bin/docker-prompt +2 -0
  13. data/bin/prompt-on-docker +4 -0
  14. data/bin/setup +0 -0
  15. data/example/example_01.rb +88 -61
  16. data/lib/anodator.rb +3 -2
  17. data/lib/anodator/anodator_error.rb +1 -1
  18. data/lib/anodator/check_result.rb +7 -7
  19. data/lib/anodator/checker.rb +33 -26
  20. data/lib/anodator/common.rb +15 -0
  21. data/lib/anodator/data_source.rb +87 -0
  22. data/lib/anodator/data_source_set.rb +36 -0
  23. data/lib/anodator/input_spec.rb +105 -111
  24. data/lib/anodator/input_spec_item.rb +8 -8
  25. data/lib/anodator/message.rb +14 -14
  26. data/lib/anodator/output_spec.rb +40 -43
  27. data/lib/anodator/rule.rb +26 -32
  28. data/lib/anodator/rule_set.rb +6 -12
  29. data/lib/anodator/utils.rb +36 -42
  30. data/lib/anodator/validator.rb +9 -9
  31. data/lib/anodator/validator/base.rb +44 -27
  32. data/lib/anodator/validator/blank_validator.rb +2 -2
  33. data/lib/anodator/validator/complex_validator.rb +12 -12
  34. data/lib/anodator/validator/configuration_error.rb +1 -2
  35. data/lib/anodator/validator/date_validator.rb +93 -103
  36. data/lib/anodator/validator/format_validator.rb +8 -11
  37. data/lib/anodator/validator/inclusion_validator.rb +3 -3
  38. data/lib/anodator/validator/length_validator.rb +6 -6
  39. data/lib/anodator/validator/numeric_validator.rb +13 -13
  40. data/lib/anodator/validator/presence_validator.rb +2 -2
  41. data/lib/anodator/validator/value_proxy.rb +31 -9
  42. data/lib/anodator/version.rb +1 -1
  43. metadata +41 -6
  44. data/VERSION +0 -1
@@ -1,20 +1,20 @@
1
1
  module Anodator
2
2
  class InputSpecItem
3
- TYPE_STRING = "STRING"
4
- TYPE_NUMERIC = "NUMERIC"
5
- TYPE_DATE = "DATE"
3
+ TYPE_STRING = 'STRING'.freeze
4
+ TYPE_NUMERIC = 'NUMERIC'.freeze
5
+ TYPE_DATE = 'DATE'.freeze
6
6
 
7
7
  attr_reader :number, :name, :type
8
8
 
9
9
  def initialize(number, name, type = TYPE_STRING)
10
10
  if number.nil? || number.to_s.split(//).size.zero?
11
- raise ArgumentError.new("number cannot be blank")
11
+ raise ArgumentError, 'number cannot be blank'
12
12
  end
13
13
  if name.nil? || name.to_s.split(//).size.zero?
14
- raise ArgumentError.new("name cannot be blank")
14
+ raise ArgumentError, 'name cannot be blank'
15
15
  end
16
16
  unless [TYPE_STRING, TYPE_NUMERIC, TYPE_DATE].include?(type)
17
- raise ArgumentError.new("unknown data type '#{type}'")
17
+ raise ArgumentError, "unknown data type '#{type}'"
18
18
  end
19
19
 
20
20
  @number = number
@@ -24,9 +24,9 @@ module Anodator
24
24
 
25
25
  def ==(other)
26
26
  if other.is_a? InputSpecItem
27
- self.number == other.number
27
+ number == other.number
28
28
  else
29
- return false
29
+ false
30
30
  end
31
31
  end
32
32
  end
@@ -1,7 +1,7 @@
1
- require "anodator/anodator_error"
1
+ require 'anodator/anodator_error'
2
2
 
3
3
  module Anodator
4
- class UnknownMessageAttributeError < AnodatorError ; end
4
+ class UnknownMessageAttributeError < AnodatorError; end
5
5
 
6
6
  # Message is error message builder.
7
7
  #
@@ -15,7 +15,7 @@ module Anodator
15
15
  @template = template_message.to_s
16
16
 
17
17
  if @template.split(//).size.zero?
18
- raise ArgumentError.new("template_message cannot be blank")
18
+ raise ArgumentError, 'template_message cannot be blank'
19
19
  end
20
20
  end
21
21
 
@@ -31,29 +31,29 @@ module Anodator
31
31
  # - value: target actual data
32
32
  def expand(data_provider)
33
33
  @template.gsub(/\[\[([^:]+)::([^\]]+)\]\]/) do
34
- spec_item = data_provider.spec_item_by_expression($1)
35
- case $2
36
- when "name"
34
+ spec_item = data_provider.spec_item_by_expression(Regexp.last_match(1))
35
+ case Regexp.last_match(2)
36
+ when 'name'
37
37
  spec_item.name
38
- when "number"
38
+ when 'number'
39
39
  spec_item.number
40
- when "value"
41
- data_provider[$1]
40
+ when 'value'
41
+ data_provider[Regexp.last_match(1)]
42
42
  else
43
- raise UnknownMessageAttributeError.new("Unknown message attribute '#{$2}'")
43
+ raise UnknownMessageAttributeError, "Unknown message attribute '#{Regexp.last_match(2)}'"
44
44
  end
45
45
  end
46
46
  end
47
47
 
48
48
  def validate_configuration
49
49
  @template.gsub(/\[\[([^:]+)::([^\]]+)\]\]/) do
50
- Validator::Base.values.spec_item_by_expression($1)
51
- unless %W(name number value).include?($2)
52
- raise UnknownMessageAttributeError.new("Unknown message attribute '#{$2}'")
50
+ Validator::Base.values.spec_item_by_expression(Regexp.last_match(1))
51
+ unless %w[name number value].include?(Regexp.last_match(2))
52
+ raise UnknownMessageAttributeError, "Unknown message attribute '#{Regexp.last_match(2)}'"
53
53
  end
54
54
  end
55
55
  rescue UnknownTargetExpressionError, UnknownMessageAttributeError => e
56
- raise InvalidConfiguration.new(e.to_s)
56
+ raise InvalidConfiguration, e.to_s
57
57
  end
58
58
  end
59
59
  end
@@ -1,28 +1,28 @@
1
1
  module Anodator
2
2
  class OutputSpec
3
- TARGET_DATA = "DATA"
4
- TARGET_ERROR = "ERROR"
3
+ TARGET_DATA = 'DATA'.freeze
4
+ TARGET_ERROR = 'ERROR'.freeze
5
5
 
6
- VALID_SYMBOL_ITEMS = [
7
- :target_numbers,
8
- :target_names,
9
- :target_values,
10
- :error_message,
11
- :error_level,
12
- :error_count,
13
- :warning_count,
14
- :error_and_warning_count,
15
- ]
6
+ VALID_SYMBOL_ITEMS = %i[
7
+ target_numbers
8
+ target_names
9
+ target_values
10
+ error_message
11
+ error_level
12
+ error_count
13
+ warning_count
14
+ error_and_warning_count
15
+ ].freeze
16
16
 
17
17
  attr_reader :items, :target, :include_no_error
18
18
  attr_accessor :separator, :value_separator
19
19
 
20
- def initialize(items = [], options = { })
20
+ def initialize(items = [], options = {})
21
21
  @items = items.to_a
22
22
  @target = TARGET_ERROR
23
23
  @include_no_error = false
24
- @separator = " "
25
- @value_separator = ""
24
+ @separator = ' '
25
+ @value_separator = ''
26
26
 
27
27
  options.each do |key, opt|
28
28
  case key
@@ -33,12 +33,12 @@ module Anodator
33
33
  when :separator, :value_separator
34
34
  @separator = opt.to_s
35
35
  else
36
- raise ArgumentError.new("unknown option #{key}.")
36
+ raise ArgumentError, "unknown option #{key}."
37
37
  end
38
38
  end
39
39
 
40
40
  unless [TARGET_DATA, TARGET_ERROR].include?(@target)
41
- raise ArgumentError.new("unknown target option value #{@target}.")
41
+ raise ArgumentError, "unknown target option value #{@target}."
42
42
  end
43
43
 
44
44
  check_items
@@ -46,20 +46,17 @@ module Anodator
46
46
 
47
47
  def validate_configuration
48
48
  @items.each do |item|
49
- if item.is_a? String
50
- Validator::Base.values.spec_item_at_by_number(item)
51
- end
49
+ Validator::Base.values.spec_item_at_by_number(item) if item.is_a? String
52
50
  end
53
51
  rescue UnknownTargetExpressionError => e
54
- raise InvalidConfiguration.new(e.to_s)
52
+ raise InvalidConfiguration, e.to_s
55
53
  end
56
54
 
57
55
  def check_items
58
56
  @items.each do |item|
59
- if item.is_a? Symbol
60
- unless VALID_SYMBOL_ITEMS.include?(item)
61
- raise ArgumentError.new("unknown item symbol #{item}")
62
- end
57
+ next unless item.is_a? Symbol
58
+ unless VALID_SYMBOL_ITEMS.include?(item)
59
+ raise ArgumentError, "unknown item symbol #{item}"
63
60
  end
64
61
  end
65
62
  end
@@ -79,24 +76,24 @@ module Anodator
79
76
  if item.is_a? Symbol
80
77
  case item
81
78
  when :error_count
82
- next check_results.map { |result|
79
+ next check_results.map do |result|
83
80
  result.error? ? true : nil
84
- }.compact.size.to_s
81
+ end.compact.size.to_s
85
82
  when :warning_count
86
- next check_results.map { |result|
83
+ next check_results.map do |result|
87
84
  result.warning? ? true : nil
88
- }.compact.size.to_s
85
+ end.compact.size.to_s
89
86
  when :error_and_warning_count
90
87
  next check_results.size.to_s
91
88
  else
92
- next ""
89
+ next ''
93
90
  end
94
91
  else # data
95
92
  next input_spec_with_values[item]
96
93
  end
97
94
  end
98
95
 
99
- return buf
96
+ buf
100
97
  end
101
98
  private :generate_data
102
99
 
@@ -109,9 +106,9 @@ module Anodator
109
106
  if item.is_a? Symbol
110
107
  case item
111
108
  when :error_count, :warning_count, :error_and_warning_count
112
- next "0"
109
+ next '0'
113
110
  else
114
- next ""
111
+ next ''
115
112
  end
116
113
  else # data
117
114
  next input_spec_with_values[item]
@@ -126,29 +123,29 @@ module Anodator
126
123
  when :target_numbers
127
124
  next check_result.target_numbers.join(@separator)
128
125
  when :target_names
129
- next check_result.target_numbers.map { |number|
126
+ next check_result.target_numbers.map do |number|
130
127
  input_spec_with_values.spec_item_at_by_number(number).name
131
- }.join(@separator)
128
+ end.join(@separator)
132
129
  when :target_values
133
- next check_result.target_numbers.map { |number|
130
+ next check_result.target_numbers.map do |number|
134
131
  input_spec_with_values[number]
135
- }.join(@value_separator)
132
+ end.join(@value_separator)
136
133
  when :error_message
137
134
  next check_result.message
138
135
  when :error_level
139
136
  next check_result.level.to_s
140
137
  when :error_count
141
- next check_results.map { |result|
138
+ next check_results.map do |result|
142
139
  result.error? ? true : nil
143
- }.compact.size.to_s
140
+ end.compact.size.to_s
144
141
  when :warning_count
145
- next check_results.map { |result|
142
+ next check_results.map do |result|
146
143
  result.warning? ? true : nil
147
- }.compact.size.to_s
144
+ end.compact.size.to_s
148
145
  when :error_and_warning_count
149
146
  next check_results.size.to_s
150
147
  else
151
- next ""
148
+ next ''
152
149
  end
153
150
  else # data
154
151
  next input_spec_with_values[item]
@@ -157,7 +154,7 @@ module Anodator
157
154
  end
158
155
  end
159
156
 
160
- return buf
157
+ buf
161
158
  end
162
159
  private :generate_error
163
160
  end
data/lib/anodator/rule.rb CHANGED
@@ -1,6 +1,6 @@
1
- require "anodator/message"
2
- require "anodator/validator"
3
- require "anodator/check_result"
1
+ require 'anodator/message'
2
+ require 'anodator/validator'
3
+ require 'anodator/check_result'
4
4
 
5
5
  module Anodator
6
6
  # Check rule
@@ -13,30 +13,30 @@ module Anodator
13
13
  # default levels are error and warning.
14
14
  # You can add any levels.
15
15
  ERROR_LEVELS = {
16
- :error => 2, # ERROR
17
- :warning => 1, # WARNING
16
+ error: 2, # ERROR
17
+ warning: 1, # WARNING
18
18
  }
19
19
 
20
20
  # Check level names
21
21
  #
22
22
  # Check level name labels
23
23
  ERROR_LEVEL_NAMES = {
24
- :error => "ERROR",
25
- :warning => "WARNING",
24
+ error: 'ERROR',
25
+ warning: 'WARNING'
26
26
  }
27
27
 
28
28
  attr_reader :target_expressions, :message, :validator, :prerequisite, :level, :description
29
29
 
30
30
  def self.add_error_level(value, symbol, label)
31
31
  # value check
32
- raise "Error level value must be Integer" unless value.is_a? Integer
33
- raise "Error level value must be greater than zero" unless value > 0
32
+ raise 'Error level value must be Integer' unless value.is_a? Integer
33
+ raise 'Error level value must be greater than zero' unless value > 0
34
34
  raise "Error level value #{value} already exists" if ERROR_LEVELS.values.include?(value)
35
35
  # symbol check
36
- raise "Error level symbol must be symbol" unless symbol.is_a? Symbol
36
+ raise 'Error level symbol must be symbol' unless symbol.is_a? Symbol
37
37
  raise "Error level symbol #{symbol} already exists" if ERROR_LEVELS.keys.include?(symbol)
38
38
  # label check
39
- raise "Error level label must be string" unless label.is_a? String
39
+ raise 'Error level label must be string' unless label.is_a? String
40
40
  raise "Error level label #{label} already exists" if ERROR_LEVEL_NAMES.values.include?(label)
41
41
 
42
42
  # check OK
@@ -48,7 +48,7 @@ module Anodator
48
48
  # symbol check
49
49
  raise "Unknown rror level symbol #{symbol}" unless ERROR_LEVELS.keys.include?(symbol)
50
50
  # count check
51
- raise "Error levels must be atleast one value" if ERROR_LEVELS.size == 1
51
+ raise 'Error levels must be atleast one value' if ERROR_LEVELS.size == 1
52
52
 
53
53
  # check OK
54
54
  ERROR_LEVELS.delete(symbol)
@@ -64,19 +64,15 @@ module Anodator
64
64
  @description = description
65
65
 
66
66
  if @target_expressions.size.zero?
67
- raise ArgumentError.new("target expressions cannot be blank")
68
- end
69
- if @message.nil?
70
- raise ArgumentError.new("message cannot be blank")
71
- end
72
- if @validator.nil?
73
- raise ArgumentError.new("validator cannot be blank")
67
+ raise ArgumentError, 'target expressions cannot be blank'
74
68
  end
69
+ raise ArgumentError, 'message cannot be blank' if @message.nil?
70
+ raise ArgumentError, 'validator cannot be blank' if @validator.nil?
75
71
  unless ERROR_LEVELS.values.include?(@level)
76
- raise ArgumentError.new("level must be #{ERROR_LEVEL_NAMES.join(", ")}.")
72
+ raise ArgumentError, "level must be #{ERROR_LEVEL_NAMES.join(', ')}."
77
73
  end
78
74
  if @prerequisite.is_a? Array
79
- @prerequisite = Validator::ComplexValidator.new(:validators => @prerequisite)
75
+ @prerequisite = Validator::ComplexValidator.new(validators: @prerequisite)
80
76
  end
81
77
  end
82
78
 
@@ -86,9 +82,7 @@ module Anodator
86
82
  # return nil.
87
83
  def check
88
84
  unless @prerequisite.nil?
89
- unless @prerequisite.valid?
90
- return nil
91
- end
85
+ return nil unless @prerequisite.valid?
92
86
  end
93
87
 
94
88
  if @validator.valid?
@@ -112,11 +106,11 @@ module Anodator
112
106
  @validator.validate_configuration
113
107
  @prerequisite.validate_configuration unless @prerequisite.nil?
114
108
  rescue UnknownTargetExpressionError => e
115
- raise InvalidConfiguration.new(e.to_s)
109
+ raise InvalidConfiguration, e.to_s
116
110
  end
117
111
 
118
112
  def level_expression
119
- return Rule.level_expression(@level)
113
+ Rule.level_expression(@level)
120
114
  end
121
115
 
122
116
  def self.level_expression(level)
@@ -124,20 +118,20 @@ module Anodator
124
118
  return ERROR_LEVEL_NAMES[ERROR_LEVELS.key(level)]
125
119
  end
126
120
 
127
- return nil
121
+ nil
128
122
  end
129
123
 
130
124
  def to_s
131
- target_names = @target_expressions.map { |te| Validator::Base.values.spec_item_by_expression(te).name }.join(",")
132
- buf =<<_EOD_
133
- Description: #{@description.nil? ? "None." : @description}
125
+ target_names = @target_expressions.map { |te| Validator::Base.values.spec_item_by_expression(te).name }.join(',')
126
+ buf = <<_EOD_
127
+ Description: #{@description.nil? ? 'None.' : @description}
134
128
  Targets: #{target_names}
135
129
  Message: #{@message.template}
136
130
  Level: #{level_expression}
137
131
  Validator:
138
- #{@validator.to_s}
132
+ #{@validator}
139
133
  Prerequisite:
140
- #{@prerequisite.nil? ? " - (None)" : @prerequisite.to_s}
134
+ #{@prerequisite.nil? ? ' - (None)' : @prerequisite.to_s}
141
135
  _EOD_
142
136
  end
143
137
  end
@@ -1,4 +1,4 @@
1
- require "anodator/rule"
1
+ require 'anodator/rule'
2
2
 
3
3
  module Anodator
4
4
  class RuleSet
@@ -11,11 +11,11 @@ module Anodator
11
11
  if rule.is_a? Rule
12
12
  @rules << rule
13
13
  else
14
- raise ArgumentError.new("rule must be Anodator::Rule object")
14
+ raise ArgumentError, 'rule must be Anodator::Rule object'
15
15
  end
16
16
  end
17
17
 
18
- alias_method :<<, :add_rule
18
+ alias << add_rule
19
19
 
20
20
  def check_all
21
21
  @results = []
@@ -33,20 +33,14 @@ module Anodator
33
33
  end
34
34
  end
35
35
 
36
- def results
37
- return @results
38
- end
36
+ attr_reader :results
39
37
 
40
38
  def validate_configuration
41
- @rules.each do |rule|
42
- rule.validate_configuration
43
- end
39
+ @rules.each(&:validate_configuration)
44
40
  end
45
41
 
46
42
  def to_s
47
- @rules.map { |rule|
48
- rule.to_s
49
- }.join("\n")
43
+ @rules.map(&:to_s).join("\n")
50
44
  end
51
45
  end
52
46
  end
@@ -1,4 +1,4 @@
1
- require "csv"
1
+ require 'csv'
2
2
 
3
3
  module Anodator
4
4
  module Utils
@@ -24,10 +24,10 @@ module Anodator
24
24
  first = false
25
25
  next
26
26
  end
27
- spec << { :number => row[0], :name => row[1], :type => row[2] }
27
+ spec << { number: row[0], name: row[1], type: row[2] }
28
28
  end
29
29
 
30
- return InputSpec.new(spec)
30
+ InputSpec.new(spec)
31
31
  end
32
32
 
33
33
  # load output_spec from csv file
@@ -56,8 +56,8 @@ module Anodator
56
56
  # Return:
57
57
  # OutputSpec instance
58
58
  def self.load_output_spec_from_csv_file(file_path,
59
- target = Anodator::OutputSpec::TARGET_ERROR,
60
- include_no_error = false)
59
+ target = Anodator::OutputSpec::TARGET_ERROR,
60
+ include_no_error = false)
61
61
  first = true
62
62
  header = nil
63
63
  spec = []
@@ -68,14 +68,14 @@ module Anodator
68
68
  first = false
69
69
  next
70
70
  end
71
- if row.first.nil? || row.first.split(//).length.zero?
72
- spec << row.last.to_sym
73
- else
74
- spec << row.first.to_s
75
- end
71
+ spec << if row.first.nil? || row.first.split(//).length.zero?
72
+ row.last.to_sym
73
+ else
74
+ row.first.to_s
75
+ end
76
76
  end
77
77
 
78
- return Anodator::OutputSpec.new(spec, :target => target, :include_no_error => include_no_error)
78
+ Anodator::OutputSpec.new(spec, target: target, include_no_error: include_no_error)
79
79
  end
80
80
 
81
81
  # options reader for option values for validator specs
@@ -89,13 +89,13 @@ module Anodator
89
89
  # - options_index_from: index for option column be started on row(default: 4)
90
90
  # Return:
91
91
  # Hash
92
- def self.options_reader(row, options = { }, options_index_from = 4)
92
+ def self.options_reader(row, options = {}, options_index_from = 4)
93
93
  if row.size > options_index_from
94
94
  row[options_index_from..-1].each do |column|
95
95
  next if column.nil?
96
- key, value = column.split(":", 2)
96
+ key, value = column.split(':', 2)
97
97
  case value
98
- when "true", "false"
98
+ when 'true', 'false'
99
99
  options[key.to_sym] = eval(value)
100
100
  else
101
101
  options[key.to_sym] = value
@@ -103,7 +103,7 @@ module Anodator
103
103
  end
104
104
  end
105
105
 
106
- return options
106
+ options
107
107
  end
108
108
 
109
109
  # load validators from csv file
@@ -120,7 +120,7 @@ module Anodator
120
120
  def self.load_validators_from_csv_file(file_path)
121
121
  first = true
122
122
  header = nil
123
- validators = { }
123
+ validators = {}
124
124
 
125
125
  CSV.read(file_path).each do |row|
126
126
  # skip header
@@ -131,46 +131,42 @@ module Anodator
131
131
  end
132
132
 
133
133
  if validators.keys.include?(row[0])
134
- raise ArgumentError.new("Duplicated validator number '#{row[0]}'!")
134
+ raise ArgumentError, "Duplicated validator number '#{row[0]}'!"
135
135
  end
136
136
 
137
- options = options_reader(row, { :description => row[1] })
137
+ options = options_reader(row, description: row[1])
138
138
 
139
139
  validator = nil
140
140
 
141
141
  case row[2]
142
- when "presence"
142
+ when 'presence'
143
143
  validator = Validator::PresenceValidator
144
- when "blank"
144
+ when 'blank'
145
145
  validator = Validator::BlankValidator
146
- when "date"
146
+ when 'date'
147
147
  validator = Validator::DateValidator
148
- when "format"
148
+ when 'format'
149
149
  validator = Validator::FormatValidator
150
- when "inclusion"
150
+ when 'inclusion'
151
151
  validator = Validator::InclusionValidator
152
- unless options[:in].nil?
153
- options[:in] = options[:in].split(",")
154
- end
155
- when "length"
152
+ options[:in] = options[:in].split(',') unless options[:in].nil?
153
+ when 'length'
156
154
  validator = Validator::LengthValidator
157
- when "numeric"
155
+ when 'numeric'
158
156
  validator = Validator::NumericValidator
159
- when "complex"
160
- options[:validators] = row[3].split(",").map do |validator_number|
157
+ when 'complex'
158
+ options[:validators] = row[3].split(',').map do |validator_number|
161
159
  validators[validator_number]
162
160
  end
163
161
  validators[row[0]] = Validator::ComplexValidator.new(options)
164
162
  else
165
- raise ArgumentError.new("Unknown validator type '#{row[2]}'!")
163
+ raise ArgumentError, "Unknown validator type '#{row[2]}'!"
166
164
  end
167
165
 
168
- if validator
169
- validators[row[0]] = validator.new(row[3], options)
170
- end
166
+ validators[row[0]] = validator.new(row[3], options) if validator
171
167
  end
172
168
 
173
- return validators
169
+ validators
174
170
  end
175
171
 
176
172
  # load rule_set from csv file
@@ -200,19 +196,17 @@ module Anodator
200
196
  end
201
197
 
202
198
  description = row[1]
203
- target_expression = row[2].split(",")
199
+ target_expression = row[2].split(',')
204
200
  validator = validators[row[3]]
205
- if !row[4].nil? && row[4].include?(",")
206
- prerequisite = row[4].split(",").map do |validator_id|
201
+ if !row[4].nil? && row[4].include?(',')
202
+ prerequisite = row[4].split(',').map do |validator_id|
207
203
  raise "Unknown validator identifier '#{validator_id}'" if validators[validator_id].nil?
208
204
  next validators[validator_id]
209
205
  end
210
206
  else
211
207
  prerequisite = validators[row[4]]
212
208
  end
213
- if validator.nil?
214
- raise "Unknown validator identifier '#{row[3]}'"
215
- end
209
+ raise "Unknown validator identifier '#{row[3]}'" if validator.nil?
216
210
  if !row[4].nil? && prerequisite.nil?
217
211
  raise "Unknown validator identifier '#{row[4]}'"
218
212
  end
@@ -232,7 +226,7 @@ module Anodator
232
226
  description)
233
227
  end
234
228
 
235
- return rule_set
229
+ rule_set
236
230
  end
237
231
  end
238
232
  end