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