Exemplo n.º 1
0
Arquivo: export.go Projeto: lanior/upc
func exportProblem(problem *model.Problem, helper *formats.ProblemHelper, shortName string) {
	shortName = strings.ToLower(shortName)

	testsIn := fmt.Sprintf(filepath.Join(shortName, "in", "%s%%02d.in"), shortName)
	testsOut := fmt.Sprintf(filepath.Join(shortName, "out", "%s%%02d.out"), shortName)
	programs := fmt.Sprintf(filepath.Join(shortName, "prog", "%s{ID}.{EXT}"), shortName)

	PanicIf(helper.GenerateTestsInput(testsIn))
	PanicIf(helper.GenerateTestsOutput(testsOut))
	PanicIf(helper.GenerateSolutions(programs))

	helper.Archive.MkdirAll(filepath.Join(shortName, "doc"))
	file, err := helper.Archive.Create(filepath.Join(shortName, "doc", shortName+"zad.tex"))
	PanicIf(err, "Cannot create problem description: %s", err)

	err = DescriptionTemplate.Execute(file, problem)
	PanicIf(err, "Cannot write problem description: %s", err)
	file.Close()

	for _, solution := range problem.Solutions {
		PanicIf(helper.GenerateSolution(solution, 1, strings.Replace(programs, "{ID}", "", -1)))
		break
	}
}