class Aristotle::Utility
Public Class Methods
check_all()
click to toggle source
# File lib/aristotle/utility.rb, line 3 def self.check_all logic_objects.each do |logic_object| puts "Checking #{logic_object[:class_name]}" is_everything_covered_for? logic_object puts end end
Protected Class Methods
init_logic_objects()
click to toggle source
# File lib/aristotle/utility.rb, line 19 def self.init_logic_objects @logic_objects ||= [] Dir[%w(app logic *.logic).join(File::SEPARATOR)].each do |file| logic_name = file.split(File::SEPARATOR).last.split('.logic').first folder = %W{#{Dir.pwd} app logic}.join(File::SEPARATOR) class_name = logic_name.split('_').map(&:capitalize).join('') + 'Logic' logic_object = { logic_file: folder + File::SEPARATOR + "#{logic_name}.logic", class_file: folder + File::SEPARATOR + "#{logic_name}_logic.rb", relative_class_file: %W(app logic #{logic_name}_logic.rb).join(File::SEPARATOR), class_name: class_name } begin require logic_object[:class_file] logic_object[:logic_class] = Object.const_get(class_name) rescue LoadError => e logic_object[:logic_class] = nil rescue logic_object[:logic_class] = nil end @logic_objects << logic_object end end
is_everything_covered_for?(logic_object)
click to toggle source
# File lib/aristotle/utility.rb, line 47 def self.is_everything_covered_for?(logic_object) logic_class = logic_object[:logic_class] if logic_class.nil? puts "--> Create file #{logic_object[:relative_class_file]} with the following contents:" puts "class #{logic_object[:class_name]} < Aristotle::Logic" puts ' # ...' puts 'end' return end not_covered = {} logic_class.commands.each do |logic_method, commands| commands.each do |command| unless command.has_action? not_covered[logic_method] ||= {actions: [], conditions: []} not_covered[logic_method][:actions] << command.action end unless command.has_condition? not_covered[logic_method] ||= {actions: [], conditions: []} not_covered[logic_method][:conditions] << command.condition end end end if not_covered != {} not_covered.each do |request_method, data| puts "\n# #{logic_object[:relative_class_file]}" puts "class #{logic_object[:class_name]} < Aristotle::Logic" puts " # #{request_method}:\n" data[:actions].each do |action| puts " action /#{action}/ do |#{logic_class.logic_name}|\n\n end\n\n" end data[:conditions].each do |condition| puts " condition /#{condition}/ do |#{logic_class.logic_name}|\n\n end\n\n" end puts "end" end else puts '-> Everything is covered!' end not_covered == {} end
logic_objects()
click to toggle source
# File lib/aristotle/utility.rb, line 13 def self.logic_objects init_logic_objects if @logic_objects.nil? || @logic_objects == {} @logic_objects end