89 lines
2.5 KiB
Go
89 lines
2.5 KiB
Go
package sync
|
|
|
|
import (
|
|
"path"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
)
|
|
|
|
// ExerciceHintParams holds EHint definition infomation.
|
|
type ExerciceHintParams struct {
|
|
Filename string
|
|
Content string
|
|
Cost int64
|
|
Title string
|
|
}
|
|
|
|
// ExerciceDependency holds dependency definitions information.
|
|
type ExerciceDependency struct {
|
|
Id int64
|
|
Theme string `toml:",omitempty"`
|
|
}
|
|
|
|
// ExerciceUnlockFile holds parameters related to a locked file.
|
|
type ExerciceUnlockFile struct {
|
|
Filename string `toml:",omitempty"`
|
|
}
|
|
|
|
// ExerciceFlag holds informations about a "classic" flag.
|
|
type ExerciceFlag struct {
|
|
Label string `toml:",omitempty"`
|
|
Raw string
|
|
IgnoreCase bool `toml:",omitempty"`
|
|
ValidatorRe string `toml:"validator_regexp,omitempty"`
|
|
Help string `toml:",omitempty"`
|
|
LockedFile []ExerciceUnlockFile `toml:"unlock_file,omitempty"`
|
|
}
|
|
|
|
// ExerciceFlagMCQChoice holds a choice for an MCQ flag.
|
|
type ExerciceFlagMCQChoice struct {
|
|
Label string
|
|
Value interface{} `toml:",omitempty"`
|
|
}
|
|
|
|
// ExerciceFlagMCQ holds information about a MCQ flag.
|
|
type ExerciceFlagMCQ struct {
|
|
Label string `toml:",omitempty"`
|
|
Choice []ExerciceFlagMCQChoice
|
|
}
|
|
|
|
// ExerciceFlagUCQChoice holds a choice for an UCQ flag.
|
|
type ExerciceFlagUCQChoice struct {
|
|
Label string `toml:",omitempty"`
|
|
Value string
|
|
}
|
|
|
|
// ExerciceFlagUCQ holds information about a UCQ flag.
|
|
type ExerciceFlagUCQ struct {
|
|
Label string `toml:",omitempty"`
|
|
Raw string
|
|
IgnoreCase bool `toml:",omitempty"`
|
|
ValidatorRe string `toml:"validator_regexp,omitempty"`
|
|
Help string `toml:",omitempty"`
|
|
DisplayAs string `toml:",omitempty"`
|
|
Choices_Cost int64 `toml:",omitempty"`
|
|
Choice []ExerciceFlagUCQChoice
|
|
LockedFile []ExerciceUnlockFile `toml:"unlock_file,omitempty"`
|
|
}
|
|
|
|
// ExerciceParams contains values parsed from defines.txt.
|
|
type ExerciceParams struct {
|
|
Gain int64
|
|
Tags []string
|
|
Hints []ExerciceHintParams `toml:"hint"`
|
|
Dependencies []ExerciceDependency `toml:"depend"`
|
|
Flags []ExerciceFlag `toml:"flag"`
|
|
FlagsMCQ []ExerciceFlagMCQ `toml:"flag_mcq"`
|
|
FlagsUCQ []ExerciceFlagUCQ `toml:"flag_ucq"`
|
|
}
|
|
|
|
// parseExerciceParams reads challenge definitions from defines.txt and extract usefull data to set up the challenge.
|
|
func parseExerciceParams(i Importer, exPath string) (p ExerciceParams, err error) {
|
|
var defs string
|
|
defs, err = getFileContent(i, path.Join(exPath, "challenge.txt"))
|
|
|
|
_, err = toml.Decode(defs, &p)
|
|
|
|
return
|
|
}
|