diff --git a/libfic/flag_key.go b/libfic/flag_key.go index 7a7054df..b0e764c2 100644 --- a/libfic/flag_key.go +++ b/libfic/flag_key.go @@ -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 { diff --git a/libfic/team_my.go b/libfic/team_my.go index 72cc26f1..64feda3d 100644 --- a/libfic/team_my.go +++ b/libfic/team_my.go @@ -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 {