diff --git a/internal/domain/direction.go b/internal/domain/direction.go new file mode 100644 index 0000000..aac8310 --- /dev/null +++ b/internal/domain/direction.go @@ -0,0 +1,23 @@ +package domain + +import "source.toby3d.me/toby3d/home/internal/common" + +type Direction struct{ direction string } + +var ( + DirectionUnd Direction = Direction{} // "und" + DirectionLeftToRight Direction = Direction{"ltr"} // "ltr" + DirectionRightToLeft Direction = Direction{"rtl"} // "rtl" +) + +func (d Direction) String() string { + if d.direction == "" { + return common.Und + } + + return d.direction +} + +func (d Direction) GoString() string { + return "domain.Direction(" + d.String() + ")" +} diff --git a/internal/domain/language.go b/internal/domain/language.go index 0cb102f..319723e 100644 --- a/internal/domain/language.go +++ b/internal/domain/language.go @@ -13,7 +13,7 @@ type Language struct { code string lang string name string - dir string + dir Direction } var LanguageUnd Language = Language{} // "und" @@ -26,13 +26,13 @@ func NewLanguage(raw string) Language { out := Language{ code: tag.String(), - dir: "ltr", + dir: DirectionLeftToRight, name: strings.ToLower(display.Self.Name(tag)), } switch tag { case language.Arabic, language.Persian, language.Hebrew, language.Urdu: - out.dir = "rtl" + out.dir = DirectionRightToLeft } base, _ := tag.Base() @@ -49,7 +49,7 @@ func (l Language) Code() string { return l.code } -func (l Language) Dir() string { +func (l Language) Dir() Direction { return l.dir } diff --git a/internal/domain/language_test.go b/internal/domain/language_test.go index a65a545..ecd4e2f 100644 --- a/internal/domain/language_test.go +++ b/internal/domain/language_test.go @@ -60,13 +60,13 @@ func TestLanguage_Dir(t *testing.T) { for name, tc := range map[string]struct { input string - expect string + expect domain.Direction }{ - "2letter": {"en", "ltr"}, - "rtl": {"ur", "rtl"}, - "3letter": {"eng", "ltr"}, - "region": {"en-US", "ltr"}, - common.Und: {"", ""}, + "2letter": {"en", domain.DirectionLeftToRight}, + "rtl": {"ur", domain.DirectionRightToLeft}, + "3letter": {"eng", domain.DirectionLeftToRight}, + "region": {"en-US", domain.DirectionLeftToRight}, + common.Und: {"", domain.DirectionUnd}, } { name, tc := name, tc