module Contest::Driver::Utils
Public Class Methods
check_file_map(label, ext_map)
click to toggle source
# File lib/contest/driver/common.rb, line 75 def self.check_file_map label, ext_map if ext_map.is_a? Hash ext = get_file_ext(label) ext_map.has_key?(ext) else false end end
get_all_drivers()
click to toggle source
find all driver
# File lib/contest/driver/common.rb, line 17 def self.get_all_drivers return [] unless defined? Contest::Driver Contest::Driver.constants.select {|class_name| /.*Driver$/ =~ class_name.to_s }.map {|driver_class_name| driver = Contest::Driver.const_get(driver_class_name).new { :class_name => driver_class_name, :site_info => { :name => driver.get_site_name(), :desc => driver.get_desc(), }, } } end
get_file_ext(filename)
click to toggle source
# File lib/contest/driver/common.rb, line 71 def self.get_file_ext filename File.extname(filename)[1..-1] end
load_plugins()
click to toggle source
Load Plugins
# File lib/contest/driver/common.rb, line 36 def self.load_plugins # load drivers Dir.glob("#{$git_contest_home}/plugins/**") do |path| require path if /\/.*_driver\.rb$/.match path end end
normalize_language(label)
click to toggle source
# File lib/contest/driver/common.rb, line 89 def self.normalize_language label case label when "c", "C" return "clang" when "cpp", "C++", "c++", "cc", "cxx" return "cpp" when "c++11", "C++11" return "cpp11" when "cs", "c#", "C#" return "cs" when "d", "D", "dlang" return "dlang" when "go", "golang" return "golang" when "hs", "haskell", "Haskell" return "haskell" when "java", "Java" return "java" when "javascript", "js" return "javascript" when "objc", "m" return "objc" when "ocaml", "ml", "OCaml" return "ocaml" when "Delphi", "delphi" return "delphi" when "pascal", "Pascal" return "pascal" when "perl", "Perl", "pl" return "perl" when "php", "PHP" return "php" when "pl", "prolog" return "prolog" when "python2" return "python2" when "python3", "python", "Python", "py" return "python3" when "ruby", "rb", "Ruby" return "ruby" when "scala", "Scala" return "scala" else abort "unknown language @ normalize language" end end
resolve_file_map(label, ext_map)
click to toggle source
# File lib/contest/driver/common.rb, line 84 def self.resolve_file_map label, ext_map ext = get_file_ext(label) ext_map[ext] end
resolve_language(path)
click to toggle source
# File lib/contest/driver/common.rb, line 58 def self.resolve_language path # set first element if path is array if path.is_a? Array path = path[0] end regexp = /\.([a-z0-9]+)$/ if path.match(regexp) return path.match(regexp)[1] else return nil end end
resolve_path(src)
click to toggle source
resolve wild card
# File lib/contest/driver/common.rb, line 48 def self.resolve_path src if src.match ',' src.split(',').map do |path| resolve_wild_card(path) end else resolve_wild_card(src) end end
resolve_wild_card(path)
click to toggle source
# File lib/contest/driver/common.rb, line 43 def self.resolve_wild_card path `ls #{path} | cat | head -n 1`.strip end