openmeter / pkg /datetime /durationstring.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 9)
fea99b3 verified
Raw
History Blame Contribute Delete
709 Bytes
package datetime
import (
"github.com/rickb777/period"
"github.com/samber/lo"
)
type ISODurationString period.ISOString
func (i ISODurationString) Parse() (ISODuration, error) {
res, err := period.Parse(string(i))
if err != nil {
return ISODuration{}, NewDurationParseError(string(i), err)
}
return ISODuration{res}, nil
}
// ParsePtrOrNil parses the ISO8601 string representation of the period or if ISODurationString is nil, returns nil
func (i *ISODurationString) ParsePtrOrNil() (*ISODuration, error) {
if i == nil {
return nil, nil
}
d, err := i.Parse()
if err != nil {
return nil, err
}
return lo.ToPtr(d), nil
}
func (i ISODurationString) String() string {
return string(i)
}