class Akapen::Core

Akapen::Core

Constants

AKAPEN_CHECKER_FILE

check script template file name

AKAPEN_CHECKER_TEMPLATE

check script template

AKAPEN_PARAMETER_FILE

report parameter template file name

AKAPEN_PARAMETER_TEMPLATE

report parameter template

AKAPEN_RESULT_FILE

result file name

AKAPEN_TEMPLATE_FILE

report template file name

AKAPEN_TEMPLATE_TEMPLATE

report template template

Public Instance Methods

grade() click to toggle source

check test or report, and generate result report from Akapentemplate & Akapenparameter.

# File lib/akapen_core.rb, line 78
def grade
  require "./akapen_checker"
  template = read_template
  parameters = read_parameters
  dsl = Dsl.new
  dsl.instance_eval parameters
  
  test_results = get_test_results
  id = get_id
  q_results = get_q_results(dsl, test_results)
  result = get_report(dsl, q_results, template)
  File.open(get_output_filename(id), "w") {|f|f.puts result}
end
init() click to toggle source

init Akapen::Core

# File lib/akapen_core.rb, line 71
def init
  File.open("./#{AKAPEN_CHECKER_FILE}", "w") {|f|f.puts AKAPEN_CHECKER_TEMPLATE}
  File.open("./#{AKAPEN_TEMPLATE_FILE}", "w") {|f|f.puts AKAPEN_TEMPLATE_TEMPLATE}
  File.open("./#{AKAPEN_PARAMETER_FILE}", "w") {|f|f.puts AKAPEN_PARAMETER_TEMPLATE}
end

Private Instance Methods

get_id() click to toggle source
# File lib/akapen_core.rb, line 119
def get_id
  AkapenChecker.new.id
end
get_output_filename(id) click to toggle source
# File lib/akapen_core.rb, line 149
def get_output_filename(id)
  AKAPEN_RESULT_FILE.gsub('$id$', id)
end
get_q_results(dsl, test_results) click to toggle source
# File lib/akapen_core.rb, line 123
def get_q_results(dsl, test_results)
  questions = dsl.questions
  ret = []

  test_results.each_with_index do |result, index|
    if (result)
      ret << questions[index].ok
    else
      ret << questions[index].ng
    end
  end
  ret.join.chomp
end
get_report(dsl, q_results, template) click to toggle source
# File lib/akapen_core.rb, line 137
def get_report(dsl, q_results, template)
  dynamic_filed_names = Akapen::Dsl.get_dynamic_field_names
  code = []
  dynamic_filed_names.each do |field_name|
    method_value = dsl.method("_#{field_name}").call
    code << "#{field_name.to_s} = '#{method_value}'"
  end
  code << "erb = ERB.new(template)"
  code << "erb.result(binding)"
  eval code.join("\n"), binding
end
get_test_results() click to toggle source
# File lib/akapen_core.rb, line 110
def get_test_results
  akapen_checker = AkapenChecker.new
  test_results = []
  AkapenChecker.instance_methods.grep(/^q(\d+)$/).sort.each do |m|
    test_results << akapen_checker.method(m).call
  end
  test_results
end
read_parameters() click to toggle source
# File lib/akapen_core.rb, line 101
def read_parameters
  AKAPEN_PARAMETER_FILE
  unless File.exists? "./#{AKAPEN_PARAMETER_FILE}"
    raise AkapenTemplateNotExistsError.new("you must create #{AKAPEN_PARAMETER_FILE}. create manually or execute 'akapen init' command")
  end

  File.read("./#{AKAPEN_PARAMETER_FILE}")
end
read_template() click to toggle source
# File lib/akapen_core.rb, line 93
def read_template
  unless File.exists? "./#{AKAPEN_TEMPLATE_FILE}"
    raise AkapenTemplateNotExistsError.new("you must create #{AKAPEN_TEMPLATE_FILE}. create manually or execute 'akapen init' command")
  end

  File.read("./#{AKAPEN_TEMPLATE_FILE}")
end