Corrections diverses : collection, datetime, ini

This commit is contained in:
Benjamin VAUDOUR 2024-03-04 09:20:42 +01:00
parent c473e663e8
commit fc9b29b7f3
3 changed files with 30 additions and 18 deletions

View File

@ -113,7 +113,7 @@ func ContainsAll[T comparable, S ~[]T](s S, in ...T) bool {
} }
// Maps retourne un slice à partir dun autre slice en appliquant une fonction de transformation pour chaque valeur. // Maps retourne un slice à partir dun autre slice en appliquant une fonction de transformation pour chaque valeur.
func Maps[T1, T2 any, S1 ~[]T1, S2 ~[]T2](in S1, f func(T1) T2) (out S2) { func Maps[T1, T2 any, S1 ~[]T1, S2 []T2](in S1, f func(T1) T2) (out S2) {
out = make(S2, len(in)) out = make(S2, len(in))
for i, e := range in { for i, e := range in {

View File

@ -1,6 +1,7 @@
package datetime package datetime
import ( import (
"fmt"
"time" "time"
) )
@ -178,7 +179,10 @@ func (dt datetime) f(f string, l *time.Location) string {
} }
return formatT(dt.t(l), f) return formatT(dt.t(l), f)
} }
func (dt datetime) str(l *time.Location) string { return dt.f("Y-m-d", l) } func (dt datetime) str(l *time.Location) string {
ft, fc := "y-m-d", formatP[dt.p()]
return dt.f(fmt.Sprintf("%s %s", ft, fc), l)
}
// DateTime représente une indication de temps (date + heure). // DateTime représente une indication de temps (date + heure).
type DateTime struct { type DateTime struct {

View File

@ -185,19 +185,24 @@ func (c *Setting) Read(r io.Reader) {
} }
// Write écrit la configuration dans le descripteur de sortie. // Write écrit la configuration dans le descripteur de sortie.
func (c *Setting) Write(w io.Writer) error { func (c *Setting) Write(w io.Writer) (out Option[error]) {
for k, v := range c.m { for k, v := range c.m {
l := c.t[c.i[k]] l := c.t[c.i[k]]
i := strings.Index(l, "=") i := strings.Index(l, "=")
c.t[c.i[k]] = l[:i+1] + " " + v c.t[c.i[k]] = l[:i+1] + " " + v
} }
buf := bufio.NewWriter(w) buf := bufio.NewWriter(w)
for _, l := range c.t { for _, l := range c.t {
if _, err := buf.WriteString(l + "\n"); err != nil { if _, err := buf.WriteString(l + "\n"); err != nil {
return err return Some(err)
} }
} }
return buf.Flush()
if err := buf.Flush(); err != nil {
out = Some(err)
}
return
} }
// IniFile représente un fichier de configuration. // IniFile représente un fichier de configuration.
@ -219,22 +224,25 @@ func NewFile(template, filepath string) *IniFile {
} }
// Load charge la configuration // Load charge la configuration
func (cf *IniFile) Load() error { func (cf *IniFile) Load() (out Option[error]) {
f, err := os.Open(cf.Path) if f, err := os.Open(cf.Path); err == nil {
if err != nil { defer f.Close()
return err cf.Setting.Read(f)
} else {
out = Some(err)
} }
defer f.Close()
cf.Setting.Read(f) return
return nil
} }
// Save enregistre la configuration sur le disque. // Save enregistre la configuration sur le disque.
func (cf *IniFile) Save() error { func (cf *IniFile) Save() (out Option[error]) {
f, err := os.Create(cf.Path) if f, err := os.Create(cf.Path); err == nil {
if err != nil { defer f.Close()
return err out = cf.Setting.Write(f)
} else {
out = Some(err)
} }
defer f.Close()
return cf.Setting.Write(f) return
} }