class SRS::CLI::DoExercise
Public Instance Methods
help()
click to toggle source
# File lib/srs/cli/do-exercise.rb, line 63 def help() puts <<-EOF srs do-exercise <id> Runs the exercise defined in <id> EOF end
run!(arguments)
click to toggle source
# File lib/srs/cli/do-exercise.rb, line 4 def run!(arguments) if not SRS::Workspace.initialised? then puts "Current directory is not an SRS Workspace" return 3 end sha1 = arguments.shift sha1_start = sha1[0..1] sha1_rest = sha1[2..-1] datafile = "exercises/#{sha1_start}/#{sha1_rest}" if not File.exists?(datafile) then puts "No content with that ID exists" return 4 end headers = {} metadata = "" File.open(datafile, "r") do |file| while( line = file.gets() ) do if line.strip.empty? then break end key, *val = line.split(':').map{|e| e.strip} headers[key] = val.join(':') end metadata = file.read end runModel(sha1, headers, metadata) end
runModel(sha1, headers, metadata)
click to toggle source
# File lib/srs/cli/do-exercise.rb, line 38 def runModel(sha1, headers, metadata) if not headers.has_key?("Model") then puts "Exercise #{sha1} has no model!\n" return nil end modelclass = headers.delete("Model") begin require "./models/#{modelclass}" rescue LoadError begin require "srs/models/#{modelclass}" rescue LoadError puts "Couldn't find model #{modelclass}." return nil end end model = SRS::Models.const_get(modelclass.to_sym).new score = model.run(headers, metadata) return score end