♻️ 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 ( import (
"net/url" "net/url"
"time" "time"
"golang.org/x/text/language"
) )
type Site struct { type Site struct {
Language language.Tag Language Language
BaseURL *url.URL BaseURL *url.URL
Params map[string]any Params map[string]any
TimeZone *time.Location TimeZone *time.Location

View File

@ -3,11 +3,9 @@ package site
import ( import (
"context" "context"
"golang.org/x/text/language"
"source.toby3d.me/toby3d/home/internal/domain" "source.toby3d.me/toby3d/home/internal/domain"
) )
type Repository interface { 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" "time"
"github.com/adrg/frontmatter" "github.com/adrg/frontmatter"
"golang.org/x/text/language"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
"source.toby3d.me/toby3d/home/internal/domain" "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" ext := ".md"
if lang != language.Und { if lang != domain.LanguageUnd {
base, _ := lang.Base() ext = "." + lang.Lang() + ext
ext = "." + base.String() + ext
} }
target := "index" + ext target := "index" + ext

View File

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

View File

@ -3,11 +3,9 @@ package site
import ( import (
"context" "context"
"golang.org/x/text/language"
"source.toby3d.me/toby3d/home/internal/domain" "source.toby3d.me/toby3d/home/internal/domain"
) )
type UseCase interface { 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" "context"
"fmt" "fmt"
"golang.org/x/text/language"
"source.toby3d.me/toby3d/home/internal/domain" "source.toby3d.me/toby3d/home/internal/domain"
"source.toby3d.me/toby3d/home/internal/site" "source.toby3d.me/toby3d/home/internal/site"
"source.toby3d.me/toby3d/home/internal/static" "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) { func (ucase *siteUseCase) Do(ctx context.Context, lang domain.Language) (*domain.Site, error) {
out, err := ucase.sites.Get(ctx, language.Und) out, err := ucase.sites.Get(ctx, domain.LanguageUnd)
if err != nil { if err != nil {
return nil, fmt.Errorf("cannot find base site data: %w", err) return nil, fmt.Errorf("cannot find base site data: %w", err)
} }

View File

@ -7,8 +7,7 @@ import (
"net/url" "net/url"
"path" "path"
"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/site"
) )
@ -25,7 +24,7 @@ func New(siter site.UseCase) *Namespace {
} }
func (ns *Namespace) AbsURL(p string) (string, error) { 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 { if err != nil {
return "", fmt.Errorf("cannot fetch site root for AbsURL processing: %w", err) return "", fmt.Errorf("cannot fetch site root for AbsURL processing: %w", err)
} }