Mercurial > gemma
changeset 1938:206b1dd31112
Moved time guessing to misc code to be recycled.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 21 Jan 2019 15:18:52 +0100 |
parents | 73f9e15d0384 |
children | 148917b4f859 |
files | pkg/imports/agm.go pkg/misc/time.go |
diffstat | 2 files changed, 39 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/imports/agm.go Mon Jan 21 13:32:13 2019 +0100 +++ b/pkg/imports/agm.go Mon Jan 21 15:18:52 2019 +0100 @@ -27,6 +27,7 @@ "time" "gemma.intevation.de/gemma/pkg/common" + "gemma.intevation.de/gemma/pkg/misc" "gemma.intevation.de/gemma/pkg/models" ) @@ -109,19 +110,10 @@ return os.RemoveAll(agm.Dir) } -func guessDate(s string) (time.Time, error) { - var err error - var t time.Time - for _, layout := range [...]string{ - "02.01.2006 15:04", - "2006-01-02T15:04:05-07:00", - } { - if t, err = time.Parse(layout, s); err == nil { - break - } - } - return t, err -} +var guessDate = misc.TimeGuesser([]string{ + "02.01.2006 15:04", + "2006-01-02T15:04:05-07:00", +}).Guess // Do executes the actual approved gauge measurements import. func (agm *ApprovedGaugeMeasurements) Do(
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkg/misc/time.go Mon Jan 21 15:18:52 2019 +0100 @@ -0,0 +1,34 @@ +// This is Free Software under GNU Affero General Public License v >= 3.0.Reader. +// without warranty, see README.md and license for details. +// +// SPDX-License-Identifier: AGPL-3.0-or-later +// License-Filename: LICENSES/AGPL-3.0.txt +// +// Copyright (C) 2018 by via donau +// – Österreichische Wasserstraßen-Gesellschaft mbH +// Software engineering by Intevation GmbH +// +// Author(s): +// * Sascha L. Teichmann <sascha.teichmann@intevation.de> + +package misc + +import "time" + +// TimeGuesser is a list of time formats. +type TimeGuesser []string + +// Guess tries to parse a given string by the entries of the layout +// list one after another. The first matching time is returned. +// If no layout matches the last error is returned or time zero +// if the layout list is empty. +func (tg TimeGuesser) Guess(s string) (time.Time, error) { + var err error + var t time.Time + for _, layout := range tg { + if t, err = time.Parse(layout, s); err == nil { + break + } + } + return t, err +}