amuse.git

commit 55061f8bf7d66f0985dd0f3edfa7967a4d8cf6c9

Author: Adam <git@apiote.tk>

remove utils package

 i18n/i18n.go | 43 +++++++++++++++++++++++++++------
 libamuse/bookserie.go | 11 +++----
 mkfile | 2 
 tmdb/film.go | 10 +++---
 tmdb/person.go | 53 +++++++++++++++++++++++++++--------------
 tmdb/search.go | 16 +++++++-----
 tmdb/serie.go | 57 ++++++++++++++++++++++++++++++--------------
 utils/error.go | 9 -------


diff --git a/i18n/i18n.go b/i18n/i18n.go
index e9b2210985d310d56c8677421bdfc99b7675c25d..30e2f263365f502821ae88f1e6b3ed7cd2697056 100644
--- a/i18n/i18n.go
+++ b/i18n/i18n.go
@@ -2,7 +2,6 @@ package i18n
 
 import (
 	"notabug.org/apiote/amuse/config"
-	"notabug.org/apiote/amuse/utils"
 
 	"bytes"
 	"fmt"
@@ -18,6 +17,7 @@
 	"github.com/BurntSushi/toml"
 	"github.com/bytesparadise/libasciidoc"
 	"github.com/bytesparadise/libasciidoc/pkg/configuration"
+	"notabug.org/apiote/gott"
 )
 
 type Translation struct {
@@ -81,13 +81,24 @@ 	tag, _, _ := matcher.Match(acceptLanguages...)
 	return tag.String()
 }
 
-func LoadStrings(language string) (Translation, error) {
+func loadStringsFile(args ...interface{}) (interface{}, error) {
+	language := args[0].(string)
 	var strings Translation
-	var defaultTranslation Translation
 	_, err := toml.DecodeFile(filepath.Join(config.DataHome+"/i18n", language+".toml"), &strings)
-	_, err2 := toml.DecodeFile(filepath.Join(config.DataHome+"/i18n", "default.toml"), &defaultTranslation)
-	err = utils.Or(err, err2)
+	args[1] = strings
+	return gott.Tuple(args), err
+}
 
+func loadDefaultStringsFile(args ...interface{}) (interface{}, error) {
+	var strings Translation
+	_, err := toml.DecodeFile(filepath.Join(config.DataHome+"/i18n", "default.toml"), &strings)
+	args[2] = strings
+	return gott.Tuple(args), err
+}
+
+func loadStrings(args ...interface{}) interface{} {
+	strings := args[1].(Translation)
+	defaultTranslation := args[2].(Translation)
 	stringsValue := reflect.ValueOf(&strings).Elem()
 	stringsType := stringsValue.Type()
 	for i := 0; i < stringsValue.NumField(); i++ {
@@ -102,8 +113,19 @@ 				stringsField.Interface().(map[string]string)[key] = entry
 			}
 		}
 	}
+	args[1] = strings
+	return gott.Tuple(args)
+}
 
-	return strings, err
+func LoadStrings(language string) (Translation, error) {
+	r, err := gott.
+		NewResult(gott.Tuple{language, Translation{}, Translation{}}).
+		Bind(loadStringsFile).
+		Bind(loadDefaultStringsFile).
+		Map(loadStrings).
+		Finish()
+
+	return r.(gott.Tuple)[1].(Translation), err
 }
 
 func FormatDate(date time.Time, format string, translation map[string]string) string {
@@ -189,8 +211,13 @@ 	libasciidoc.ConvertToHTML(r, w, config)
 	output := bytes.ReplaceAll(w.Bytes(), []byte("\n"), []byte(""))
 
 	divRegex, err := regexp.Compile("<\\/?div[^>]*>")
-	pRegex, err2 := regexp.Compile("<\\/?p>")
-	err = utils.Or(err, err2)
+	if err != nil {
+		return template.HTML("<span style=\"color: red;\">error rendering asciidoc (div regex)</span>")
+	}
+	pRegex, err := regexp.Compile("<\\/?p>")
+	if err != nil {
+		return template.HTML("<span style=\"color: red;\">error rendering asciidoc (p regex)</span>")
+	}
 
 	output = divRegex.ReplaceAll(output, []byte(""))
 	output = pRegex.ReplaceAll(output, []byte(""))




diff --git a/libamuse/bookserie.go b/libamuse/bookserie.go
index 361177a772cb035150a1a3b1bcae977b196c89eb..ca65bc94686eba0c4c1066142ac75ad7435609c4 100644
--- a/libamuse/bookserie.go
+++ b/libamuse/bookserie.go
@@ -2,7 +2,6 @@ package libamuse
 
 import (
 	"notabug.org/apiote/amuse/wikidata"
-	"notabug.org/apiote/amuse/utils"
 	"notabug.org/apiote/amuse/accounts"
 
 	"strings"
@@ -33,15 +32,15 @@ 	result := args[1].(*Result)
 	bookSerie := result.result.(*wikidata.BookSerie)
 	languages := result.languages
 
-	var err error
-	
 	for i, part := range bookSerie.SortedParts {
 		partId := strings.Replace(part.Uri, "/books/", "", 1)
-		cover, e := wikidata.GetCover(partId, languages[0].String(), data.connection)
-		err = utils.Or(err, e)
+		cover, err := wikidata.GetCover(partId, languages[0].String(), data.connection)
+		if err != nil {
+			return gott.Tuple(args), err
+		}
 		bookSerie.SortedParts[i].Cover = cover
 	}
-	return gott.Tuple(args), err
+	return gott.Tuple(args), nil
 }
 
 func renderBookSerie(args ...interface{}) interface{} {




diff --git a/mkfile b/mkfile
index 7b0523d2bbade57c9f07ca8aa51c926cebdd9d3d..311d128c4df180341254a9eacb34b95bacf6e46c 100644
--- a/mkfile
+++ b/mkfile
@@ -3,7 +3,7 @@
 all:V: $ALL
 reallyall:V: $ALL pymodule
 
-amuse: main.go router.go go.mod go.sum `echo front/*.go i18n/*.go libamuse/*.go tmdb/*.go utils/*.go wikidata/*.go inventaire/*.go db/*.go datastructure/*.go network/*.go accounts/*.go`
+amuse: main.go router.go go.mod go.sum `echo front/*.go i18n/*.go libamuse/*.go tmdb/*.go wikidata/*.go inventaire/*.go db/*.go datastructure/*.go network/*.go accounts/*.go`
 	go build -ldflags "-s -w -linkmode external -extldflags -static"
 static/img/%.webp: static/img/%.svg
 	rendersvg static/img/$stem.svg static/img/$stem.png




diff --git a/tmdb/film.go b/tmdb/film.go
index 1e122fedcbb55494af17bf1f590b3e3c7ef6aa75..762e2fa06a078f509e1087068fdf45c3f4f05ec3 100644
--- a/tmdb/film.go
+++ b/tmdb/film.go
@@ -3,7 +3,6 @@
 import (
 	"notabug.org/apiote/amuse/i18n"
 	"notabug.org/apiote/amuse/network"
-	"notabug.org/apiote/amuse/utils"
 	"notabug.org/apiote/amuse/datastructure"
 
 	"encoding/json"
@@ -153,16 +152,17 @@ }
 
 func convertCollectionDates(args ...interface{}) (interface{}, error) {
 	collection := args[1].(*network.Result).Result.(*Collection)
-	var err error = nil
 	for i, part := range collection.Parts {
 		if part.Release_date_str != "" {
-			date, err2 := time.Parse("2006-01-02", part.Release_date_str)
+			date, err := time.Parse("2006-01-02", part.Release_date_str)
+			if err != nil {
+				return gott.Tuple(args), err
+			}
 			part.Release_date = date
-			err = utils.Or(err2, err)
 			collection.Parts[i] = part
 		}
 	}
-	return gott.Tuple(args), err
+	return gott.Tuple(args), nil
 }
 
 func sortCollection(args ...interface{}) interface{} {




diff --git a/tmdb/person.go b/tmdb/person.go
index 446c3716e9ac51b3ea4593bd2e3f4f64243cef64..41c46f843402c00bfa11ab04df52fd5412ed8044 100644
--- a/tmdb/person.go
+++ b/tmdb/person.go
@@ -2,7 +2,6 @@ package tmdb
 
 import (
 	"notabug.org/apiote/amuse/network"
-	"notabug.org/apiote/amuse/utils"
 
 	"encoding/json"
 	"net/http"
@@ -72,52 +71,69 @@ 	result.Result = person
 	return gott.Tuple(args), err
 }
 
-func convertPersonDates(args ...interface{}) (interface{}, error) {
+func convertPersonBirthDate(args ...interface{}) (interface{}, error) {
 	person := args[1].(*network.Result).Result.(*Person)
-	var err error
+	var (
+		date time.Time
+		err  error
+	)
 	if person.Birthday_str != "" {
-		date, err2 := time.Parse("2006-01-02", person.Birthday_str)
+		date, err = time.Parse("2006-01-02", person.Birthday_str)
 		person.Birthday = date
-		err = utils.Or(err, err2)
 	}
+	return gott.Tuple(args), err
+}
+
+func convertPersonDeathDate(args ...interface{}) (interface{}, error) {
+	person := args[1].(*network.Result).Result.(*Person)
+	var (
+		date time.Time
+		err  error
+	)
 	if person.Deathday_str != "" {
-		date, err2 := time.Parse("2006-01-02", person.Deathday_str)
+		date, err = time.Parse("2006-01-02", person.Deathday_str)
 		person.Deathday = date
-		err = utils.Or(err, err2)
 	}
 	return gott.Tuple(args), err
 }
 
 func convertJobsDates(args ...interface{}) (interface{}, error) {
 	person := args[1].(*network.Result).Result.(*Person)
-	var err error
 	for i, character := range person.Credits.Cast {
 		if character.Release_date_str != "" {
-			date, err2 := time.Parse("2006-01-02", character.Release_date_str)
+			date, err := time.Parse("2006-01-02", character.Release_date_str)
 			character.Release_date = date
-			err = utils.Or(err, err2)
+			if err != nil {
+				return gott.Tuple(args), err
+			}
 		}
 		if character.First_air_date_str != "" {
-			date, err2 := time.Parse("2006-01-02", character.First_air_date_str)
+			date, err := time.Parse("2006-01-02", character.First_air_date_str)
 			character.Release_date = date
-			err = utils.Or(err, err2)
+			if err != nil {
+				return gott.Tuple(args), err
+			}
 		}
 		person.Credits.Cast[i] = character
 	}
 	for i, job := range person.Credits.Crew {
 		if job.Release_date_str != "" {
-			date, err2 := time.Parse("2006-01-02", job.Release_date_str)
+			date, err := time.Parse("2006-01-02", job.Release_date_str)
 			job.Release_date = date
-			err = utils.Or(err, err2)
+			if err != nil {
+				return gott.Tuple(args), err
+			}
 		}
 		if job.First_air_date_str != "" {
-			date, err2 := time.Parse("2006-01-02", job.First_air_date_str)
+			date, err := time.Parse("2006-01-02", job.First_air_date_str)
 			job.Release_date = date
-			err = utils.Or(err, err2)
+			if err != nil {
+				return gott.Tuple(args), err
+			}
 		}
 		person.Credits.Crew[i] = job
 	}
-	return gott.Tuple(args), err
+	return gott.Tuple(args), nil
 }
 
 func convertJobsNames(args ...interface{}) interface{} {
@@ -161,7 +177,8 @@ 		Bind(network.DoRequest).
 		Bind(network.HandleRequestError).
 		Bind(network.ReadResponse).
 		Bind(unmarshalPerson).
-		Bind(convertPersonDates).
+		Bind(convertPersonBirthDate).
+		Bind(convertPersonDeathDate).
 		Bind(convertJobsDates).
 		Map(convertJobsNames).
 		Map(sortJobs).




diff --git a/tmdb/search.go b/tmdb/search.go
index 03b318ececa1bd0c78a7f3d9c03e7b11d32cd4fe..08a3c0492c8c4f5a6fa93dae04cebecfc3da5767 100644
--- a/tmdb/search.go
+++ b/tmdb/search.go
@@ -1,7 +1,6 @@
 package tmdb
 
 import (
-	"notabug.org/apiote/amuse/utils"
 	"notabug.org/apiote/amuse/network"
 
 	"encoding/json"
@@ -75,22 +74,25 @@ }
 
 func convertSearchResultsDates(args ...interface{}) (interface{}, error) {
 	results := args[1].(*network.Result).Result.(*SearchResults)
-	var err error = nil
 	for i, result := range results.Results {
 		if result.Release_date_str != "" {
-			date, err2 := time.Parse("2006-01-02", result.Release_date_str)
+			date, err := time.Parse("2006-01-02", result.Release_date_str)
+			if err != nil {
+				return gott.Tuple(args), err
+			}
 			result.Release_date = date
-			err = utils.Or(err2, err)
 			results.Results[i] = result
 		}
 		if result.First_air_date_str != "" {
-			date, err2 := time.Parse("2006-01-02", result.First_air_date_str)
+			date, err := time.Parse("2006-01-02", result.First_air_date_str)
+			if err != nil {
+				return gott.Tuple(args), err
+			}
 			result.Release_date = date
-			err = utils.Or(err2, err)
 			results.Results[i] = result
 		}
 	}
-	return gott.Tuple(args), err
+	return gott.Tuple(args), nil
 }
 
 func Search(query, language, page string) (*SearchResults, error) {




diff --git a/tmdb/serie.go b/tmdb/serie.go
index 1e86ff12fe45aa39e39d67201a922bb8cdd0b6fc..5151e022d4af2e8b817e7108eb7102f7f8bfa101 100644
--- a/tmdb/serie.go
+++ b/tmdb/serie.go
@@ -4,7 +4,6 @@ import (
 	"notabug.org/apiote/amuse/datastructure"
 	"notabug.org/apiote/amuse/i18n"
 	"notabug.org/apiote/amuse/network"
-	"notabug.org/apiote/amuse/utils"
 
 	"encoding/json"
 	"fmt"
@@ -163,23 +162,41 @@ 	result.Result = serie
 	return gott.Tuple(args), err
 }
 
-func convertSerieDates(args ...interface{}) (interface{}, error) {
+func convertFirstDate(args ...interface{}) (interface{}, error) {
 	serie := args[1].(*network.Result).Result.(*TvSerie)
-	var err error
+	var (
+		date time.Time
+		err  error
+	)
 	if serie.First_air_date_str != "" {
-		date, err2 := time.Parse("2006-01-02", serie.First_air_date_str)
+		date, err = time.Parse("2006-01-02", serie.First_air_date_str)
 		serie.First_air_date = date
-		err = utils.Or(err, err2)
 	}
+	return gott.Tuple(args), err
+}
+
+func convertLatestDate(args ...interface{}) (interface{}, error) {
+	serie := args[1].(*network.Result).Result.(*TvSerie)
+	var (
+		date time.Time
+		err  error
+	)
 	if serie.Last_air_date_str != "" {
-		date, err2 := time.Parse("2006-01-02", serie.Last_air_date_str)
+		date, err = time.Parse("2006-01-02", serie.Last_air_date_str)
 		serie.Last_air_date = date
-		err = utils.Or(err, err2)
 	}
+	return gott.Tuple(args), err
+}
+
+func convertLastDate(args ...interface{}) (interface{}, error) {
+	serie := args[1].(*network.Result).Result.(*TvSerie)
+	var (
+		date time.Time
+		err  error
+	)
 	if serie.Last_episode_to_air.Air_date_str != "" {
-		date, err2 := time.Parse("2006-01-02", serie.Last_episode_to_air.Air_date_str)
+		date, err = time.Parse("2006-01-02", serie.Last_episode_to_air.Air_date_str)
 		serie.Last_episode_to_air.Air_date = date
-		err = utils.Or(err, err2)
 	}
 	return gott.Tuple(args), err
 }
@@ -209,16 +226,17 @@ }
 
 func convertSeasonDates(args ...interface{}) (interface{}, error) {
 	season := args[1].(*network.Result).Result.(*Season)
-	var err error
 	for i, episode := range season.Episodes {
 		if episode.Air_date_str != "" {
-			date, err2 := time.Parse("2006-01-02", episode.Air_date_str)
+			date, err := time.Parse("2006-01-02", episode.Air_date_str)
+			if err != nil {
+				return gott.Tuple(args), err
+			}
 			episode.Air_date = date
-			err = utils.Or(err, err2)
 			season.Episodes[i] = episode
 		}
 	}
-	return gott.Tuple(args), err
+	return gott.Tuple(args), nil
 }
 
 func GetSerie(id, language string) (*TvSerie, error) {
@@ -233,7 +251,9 @@ 		Bind(network.ReadResponse).
 		Tee(cleanCache).
 		Tee(saveCacheEntry).
 		Bind(unmarshalSerie).
-		Bind(convertSerieDates).
+		Bind(convertFirstDate).
+		Bind(convertLatestDate).
+		Bind(convertLastDate).
 		Finish()
 
 	if err != nil {
@@ -263,12 +283,13 @@ 	return season, err
 }
 
 func GetSeasons(serie *TvSerie, language string) ([]Season, error) {
-	var err error
 	var seasons []Season
 	for _, serieSeason := range serie.Seasons {
-		season, err2 := GetSeason(serie, language, serieSeason.Season_number)
-		err = utils.Or(err, err2)
+		season, err := GetSeason(serie, language, serieSeason.Season_number)
+		if err != nil {
+			return seasons, err
+		}
 		seasons = append(seasons, season)
 	}
-	return seasons, err
+	return seasons, nil
 }




diff --git a/utils/error.go b/utils/error.go
deleted file mode 100644
index 90443fdd67f3c18fd7edde7f86ed41107ff25f3e..0000000000000000000000000000000000000000
--- a/utils/error.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package utils
-
-func Or(e1, e2 error) error {
-	if e2 == nil {
-		return e1
-	} else {
-		return e2
-	}
-}