feat: public API, SEO and existing surfaces
This commit is contained in:
1 parent
45fbbc33b1
commit
c390fcfe8d
103 files changed
+4476
-231
No files matched your search
@@ -9,6 +9,8 @@ import (
|
||||
|
||||
var socialLocalePattern = regexp.MustCompile(`^([A-Za-z]{2,3})_([A-Za-z]{2})$`)
|
||||
|
||||
var regionPattern = regexp.MustCompile(`^[A-Za-z]{2}$`)
|
||||
|
||||
func NormalizeSocialLocale(tag string, social *string) (*string, error) {
|
||||
if social == nil {
|
||||
return nil, nil
|
||||
@@ -25,25 +27,38 @@ func NormalizeSocialLocale(tag string, social *string) (*string, error) {
|
||||
return &normalized, nil
|
||||
}
|
||||
|
||||
func SocialLocaleState(row Row) string {
|
||||
func SocialLocaleState(row Row, siteLocale *string) string {
|
||||
if row.SocialLocale != nil {
|
||||
return SocialLocaleSet
|
||||
}
|
||||
if _, region, found := strings.Cut(row.Tag, "-"); found && region != "" {
|
||||
if EffectiveSocialLocale(row, siteLocale) != nil {
|
||||
return SocialLocaleDerived
|
||||
}
|
||||
return SocialLocaleNotSet
|
||||
}
|
||||
|
||||
func EffectiveSocialLocale(row Row) *string {
|
||||
switch SocialLocaleState(row) {
|
||||
case SocialLocaleSet:
|
||||
func EffectiveSocialLocale(row Row, siteLocale *string) *string {
|
||||
if row.SocialLocale != nil {
|
||||
return row.SocialLocale
|
||||
case SocialLocaleDerived:
|
||||
}
|
||||
if _, region, found := strings.Cut(row.Tag, "-"); found && region != "" {
|
||||
derived := strings.Replace(row.Tag, "-", "_", 1)
|
||||
return &derived
|
||||
}
|
||||
return nil
|
||||
return borrowedSocialLocale(row.Tag, siteLocale)
|
||||
}
|
||||
|
||||
func borrowedSocialLocale(tag string, siteLocale *string) *string {
|
||||
if siteLocale == nil {
|
||||
return nil
|
||||
}
|
||||
tagLanguage, _, _ := strings.Cut(tag, "-")
|
||||
parts := strings.Split(*siteLocale, "-")
|
||||
if len(parts) < 2 || !strings.EqualFold(parts[0], tagLanguage) || !regionPattern.MatchString(parts[1]) {
|
||||
return nil
|
||||
}
|
||||
borrowed := strings.ToLower(parts[0]) + "_" + strings.ToUpper(parts[1])
|
||||
return &borrowed
|
||||
}
|
||||
|
||||
func normalizeEntries(entries []Entry) ([]Entry, error) {
|
||||
|
||||
Reference in new issue
Block a user