libfic: Refactor flag label parsing

This commit is contained in:
nemunaire 2022-10-29 17:04:28 +02:00
parent 2b26b2b819
commit 721908ee18
2 changed files with 14 additions and 8 deletions

View File

@ -85,6 +85,19 @@ func AnalyzeNumberFlag(t string) (min, max, step *float64, err error) {
return
}
func (k *FlagKey) AnalyzeFlagLabel() (label, separator string, ignoreorder bool, nblines uint64) {
if k.Label[0] == '`' && len(k.Label) > 4 {
label = k.Label[4:]
separator = string(k.Label[1])
ignoreorder = k.Label[2] == 't'
nblines, _ = strconv.ParseUint(string(k.Label[3]), 10, 8)
} else {
label = k.Label
}
return
}
// GetFlagKeys returns a list of key's flags comming with the challenge.
func (e *Exercice) GetFlagKeys() ([]*FlagKey, error) {
if rows, err := DBQuery("SELECT id_flag, id_exercice, ordre, label, type, placeholder, help, unit, ignorecase, notrim, multiline, validator_regexp, sort_re_grps, cksum, choices_cost, bonus_gain FROM exercice_flags WHERE id_exercice = ?", e.Id); err != nil {

View File

@ -261,14 +261,7 @@ func MyJSONTeam(t *Team, started bool) (interface{}, error) {
}
// Treat array flags
if k.Label[0] == '`' && len(k.Label) > 4 {
flag.Label = k.Label[4:]
flag.Separator = string(k.Label[1])
flag.IgnoreOrder = k.Label[2] == 't'
flag.NbLines, _ = strconv.ParseUint(string(k.Label[3]), 10, 8)
} else {
flag.Label = k.Label
}
flag.Label, flag.Separator, flag.IgnoreOrder, flag.NbLines = k.AnalyzeFlagLabel()
// Fill more information if the flag is displaied
if flag.Solved == nil {