♻️ Replaced Language property in Site module

This commit is contained in:
Maxim Lebedev 2023-11-13 05:18:56 +06:00
parent 6046187817
commit d8673188ce
Signed by: toby3d
GPG Key ID: 1F14E25B7C119FC5
7 changed files with 18 additions and 28 deletions

View File

@ -3,12 +3,10 @@ package domain
import (
"net/url"
"time"
"golang.org/x/text/language"
)
type Site struct {
Language language.Tag
Language Language
BaseURL *url.URL
Params map[string]any
TimeZone *time.Location

View File

@ -3,11 +3,9 @@ package site
import (
"context"
"golang.org/x/text/language"
"source.toby3d.me/toby3d/home/internal/domain"
)
type Repository interface {
Get(ctx context.Context, lang language.Tag) (*domain.Site, error)
Get(ctx context.Context, lang domain.Language) (*domain.Site, error)
}

View File

@ -8,7 +8,6 @@ import (
"time"
"github.com/adrg/frontmatter"
"golang.org/x/text/language"
"gopkg.in/yaml.v3"
"source.toby3d.me/toby3d/home/internal/domain"
@ -48,11 +47,10 @@ func NewFileSystemSiteRepository(rootDir fs.FS) site.Repository {
}
}
func (repo *fileSystemSiteRepository) Get(ctx context.Context, lang language.Tag) (*domain.Site, error) {
func (repo *fileSystemSiteRepository) Get(ctx context.Context, lang domain.Language) (*domain.Site, error) {
ext := ".md"
if lang != language.Und {
base, _ := lang.Base()
ext = "." + base.String() + ext
if lang != domain.LanguageUnd {
ext = "." + lang.Lang() + ext
}
target := "index" + ext

View File

@ -6,7 +6,6 @@ import (
"testing/fstest"
"github.com/google/go-cmp/cmp"
"golang.org/x/text/language"
"source.toby3d.me/toby3d/home/internal/domain"
repository "source.toby3d.me/toby3d/home/internal/site/repository/fs"
@ -15,6 +14,8 @@ import (
func TestGet(t *testing.T) {
t.Parallel()
testLangEn := domain.NewLanguage("en")
testLangRu := domain.NewLanguage("ru")
testData := fstest.MapFS{
"index.ru.md": &fstest.MapFile{
Data: []byte("---\ntitle: пример\n---\nпривет, мир!\n"),
@ -27,21 +28,21 @@ func TestGet(t *testing.T) {
repo := repository.NewFileSystemSiteRepository(testData)
for name, tc := range map[string]struct {
input language.Tag
expect *domain.Site
input domain.Language
}{
"english": {
input: language.English,
input: testLangEn,
expect: &domain.Site{
Language: language.English,
Language: testLangEn,
Title: "example",
Params: make(map[string]any),
},
},
"russian": {
input: language.Russian,
input: testLangRu,
expect: &domain.Site{
Language: language.Russian,
Language: testLangRu,
Title: "пример",
Params: make(map[string]any),
},
@ -57,7 +58,7 @@ func TestGet(t *testing.T) {
t.Fatal(err)
}
if diff := cmp.Diff(out, tc.expect, cmp.AllowUnexported(language.Und)); diff != "" {
if diff := cmp.Diff(out, tc.expect, cmp.AllowUnexported(domain.LanguageUnd, domain.File{})); diff != "" {
t.Error(diff)
}
})

View File

@ -3,11 +3,9 @@ package site
import (
"context"
"golang.org/x/text/language"
"source.toby3d.me/toby3d/home/internal/domain"
)
type UseCase interface {
Do(ctx context.Context, lang language.Tag) (*domain.Site, error)
Do(ctx context.Context, lang domain.Language) (*domain.Site, error)
}

View File

@ -4,8 +4,6 @@ import (
"context"
"fmt"
"golang.org/x/text/language"
"source.toby3d.me/toby3d/home/internal/domain"
"source.toby3d.me/toby3d/home/internal/site"
"source.toby3d.me/toby3d/home/internal/static"
@ -23,8 +21,8 @@ func NewSiteUseCase(sites site.Repository, statics static.Repository) site.UseCa
}
}
func (ucase *siteUseCase) Do(ctx context.Context, lang language.Tag) (*domain.Site, error) {
out, err := ucase.sites.Get(ctx, language.Und)
func (ucase *siteUseCase) Do(ctx context.Context, lang domain.Language) (*domain.Site, error) {
out, err := ucase.sites.Get(ctx, domain.LanguageUnd)
if err != nil {
return nil, fmt.Errorf("cannot find base site data: %w", err)
}

View File

@ -7,8 +7,7 @@ import (
"net/url"
"path"
"golang.org/x/text/language"
"source.toby3d.me/toby3d/home/internal/domain"
"source.toby3d.me/toby3d/home/internal/site"
)
@ -25,7 +24,7 @@ func New(siter site.UseCase) *Namespace {
}
func (ns *Namespace) AbsURL(p string) (string, error) {
site, err := ns.siter.Do(context.Background(), language.Und)
site, err := ns.siter.Do(context.Background(), domain.LanguageUnd)
if err != nil {
return "", fmt.Errorf("cannot fetch site root for AbsURL processing: %w", err)
}