class Validator
Public Class Methods
new(skill_list:, skill_group:, skill_cat:, advanced_cat:, concentration_cat:, strains:, professions:, strain_stats:, strain_specs:, profession_concentrations:, profession_concentration_hierarchy:, profession_concentration_group:, profession_advanced:, skill_counters:, skill_countered: @skill_list = skill_list)
click to toggle source
# File lib/Validator.rb, line 5 def initialize skill_list:, skill_group:, skill_cat:, advanced_cat:, concentration_cat:, strains:, professions:, strain_stats:, strain_specs:, profession_concentrations:, profession_concentration_hierarchy:, profession_concentration_group:, profession_advanced:, skill_counters:, skill_countered: @skill_list = skill_list @skill_group = skill_group @skill_cat = skill_cat @advanced_cat = advanced_cat @concentration_cat = concentration_cat @strains = strains @professions = professions @strain_stats = strain_stats @strain_specs = strain_specs @profession_concentrations = profession_concentrations @profession_concentration_hierarchy = profession_concentration_hierarchy @profession_advanced = profession_advanced @skill_counters = skill_counters @skill_countered = skill_countered @profession_concentration_inverted = Hash.new @profession_concentrations.each do |basic, data| data.each do |conc| @profession_concentration_inverted[conc] = true end end validate_non_empty validate_skill_name_matches cat: @skill_cat validate_skill_name_matches cat: @advanced_cat validate_skill_name_matches cat: @concentration_cat validate_stats validate_strain_specs validate_profession_concentrations validate_profession_concentration_hierarchy validate_profession_advanced validate_non_duplicate_skill_codes validate_skill_counters cat: @skill_counters validate_skill_counters cat: @skill_countered validate_skill_counter_bidirectional end
Private Instance Methods
validate_non_duplicate_skill_codes()
click to toggle source
# File lib/Validator.rb, line 131 def validate_non_duplicate_skill_codes existing_codes = Hash.new @skill_list.each do |skill, code| if existing_codes[code] == nil existing_codes[code] = skill else puts "Duplicate skill code: #{code}" puts " Previously claimed by: #{existing_codes[code]}" puts " Ateempt to claim by: #{skill}" end end end
validate_non_empty()
click to toggle source
# File lib/Validator.rb, line 72 def validate_non_empty assert(@skill_list.length > 0, "Empty skill list") assert(@skill_cat.length > 0, "Empty processed skills") assert(@strains.length > 0, "Empty strains") assert(@professions.length > 0, "Empty professions") end
validate_profession_advanced()
click to toggle source
# File lib/Validator.rb, line 62 def validate_profession_advanced assert(@profession_advanced.length > 0) end
validate_profession_concentration_hierarchy()
click to toggle source
# File lib/Validator.rb, line 66 def validate_profession_concentration_hierarchy @profession_concentration_hierarchy.each do |prof, pc| is_in_profession?(prof) end end
validate_profession_concentrations()
click to toggle source
# File lib/Validator.rb, line 58 def validate_profession_concentrations assert(@profession_concentrations.length > 0) end
validate_skill_counters(cat: cat.each do |s, ls| if !is_in_list?(s))
click to toggle source
# File lib/Validator.rb, line 145 def validate_skill_counters cat: cat.each do |s, ls| if !is_in_list?(s) puts "Mismatched skill counter: #{s}" end
validate_skill_name_matches(cat: mismatches = Array.new)
click to toggle source
# File lib/Validator.rb, line 101 def validate_skill_name_matches cat: mismatches = Array.new cat.each do |skill_name, sdata| if !is_in_list?(skill_name) # puts "mismatch: #{skill_name}" mismatches << skill_name # ap @skill_cat[skill_name] end sdata.each do |stype, stdata| case stype when :innate, :innate_disadvantage, :innate_disabled stdata.each do |strain| is_in_strain?(strain) end when :innate_preq when :open else is_in_profession?(stype) if stdata[:preq] stdata[:preq][:list].each do |pskill, _junk| is_in_list?(pskill) end end end end end end
validate_stats()
click to toggle source
# File lib/Validator.rb, line 93 def validate_stats @strain_stats.each do |strain, stats| is_in_strain?(strain) assert(stats.keys.sort == [:hp, :mp, :infection].sort, "Strain stats must contain HP, MP and Infection") end end
validate_strain_specs()
click to toggle source
# File lib/Validator.rb, line 79 def validate_strain_specs cumulative_strain_specs = Hash.new @strain_specs.each do |strain, specs| is_in_strain?(strain) (specs[:advantages] + specs[:disadvantages]).each do |spec| assert(cumulative_strain_specs[spec] == nil, "Duplicate strain-specific skill: [#{strain}] [#{spec}]") cumulative_strain_specs[spec] = true end end end