anodator 1.0.0.pre1 → 1.0.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
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