refactor(i18n): extract type conversions to transform.go

Move getCount, toInt, toInt64, toFloat64 helpers to dedicated file.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Snider 2026-01-30 14:46:49 +00:00
parent 282be9c7bc
commit 12a77a63cb
2 changed files with 67 additions and 61 deletions

View file

@ -979,67 +979,6 @@ func (s *Service) getMessage(lang, key string) (Message, bool) {
return msg, ok
}
func getCount(data any) int {
if data == nil {
return 0
}
switch d := data.(type) {
case map[string]any:
if c, ok := d["Count"]; ok {
return toInt(c)
}
case map[string]int:
if c, ok := d["Count"]; ok {
return c
}
}
return 0
}
func toInt(v any) int {
switch n := v.(type) {
case int:
return n
case int64:
return int(n)
case float64:
return int(n)
}
return 0
}
func toInt64(v any) int64 {
switch n := v.(type) {
case int:
return int64(n)
case int64:
return n
case int32:
return int64(n)
case float64:
return int64(n)
case float32:
return int64(n)
}
return 0
}
func toFloat64(v any) float64 {
switch n := v.(type) {
case float64:
return n
case float32:
return float64(n)
case int:
return float64(n)
case int64:
return float64(n)
case int32:
return float64(n)
}
return 0
}
func applyTemplate(text string, data any) string {
// Quick check for template syntax
if !strings.Contains(text, "{{") {

67
pkg/i18n/transform.go Normal file
View file

@ -0,0 +1,67 @@
// Package i18n provides internationalization for the CLI.
package i18n
// getCount extracts a Count value from template data.
func getCount(data any) int {
if data == nil {
return 0
}
switch d := data.(type) {
case map[string]any:
if c, ok := d["Count"]; ok {
return toInt(c)
}
case map[string]int:
if c, ok := d["Count"]; ok {
return c
}
}
return 0
}
// toInt converts any numeric type to int.
func toInt(v any) int {
switch n := v.(type) {
case int:
return n
case int64:
return int(n)
case float64:
return int(n)
}
return 0
}
// toInt64 converts any numeric type to int64.
func toInt64(v any) int64 {
switch n := v.(type) {
case int:
return int64(n)
case int64:
return n
case int32:
return int64(n)
case float64:
return int64(n)
case float32:
return int64(n)
}
return 0
}
// toFloat64 converts any numeric type to float64.
func toFloat64(v any) float64 {
switch n := v.(type) {
case float64:
return n
case float32:
return float64(n)
case int:
return float64(n)
case int64:
return float64(n)
case int32:
return float64(n)
}
return 0
}