A code autograder for student homework submissions
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

37 lignes
821 B

  1. require 'date'
  2. module KGrader
  3. def self.abort(error)
  4. Kernel::abort "fatal: #{error}"
  5. end
  6. def self.parse_args(raw, num, keywords)
  7. args = []
  8. options = {}
  9. raw.each do |arg|
  10. if arg.include? '='
  11. key, val = arg.split('=', 2)
  12. key = key.to_sym
  13. abort "unknown keyword #{key}" unless keywords.include? key
  14. options[key] = case keywords[key]
  15. when :string
  16. val
  17. when :bool
  18. %w(true yes 1 t y).include? val.downcase
  19. when :array
  20. val.split(",").map! { |x| x.strip.downcase }
  21. when :datetime
  22. DateTime.parse(val)
  23. end
  24. else
  25. args << arg
  26. end
  27. end
  28. abort "too few arguments" if args.size < num
  29. abort "too many arguments" if args.size > num
  30. return args, options
  31. end
  32. end