package config

import (
	"path/filepath"

	"github.com/gofiber/template/html"
	"github.com/markbates/pkger"
)

// TemplateConfig para la configuración del motor de plantillas
type TemplateConfig struct {
	TemplateEngine *html.Engine
	Path           string `yaml:"path" env-default:"resources/views"`
	Extension      string `yaml:"extension" env-default:".html"`
}

// ViewConfig para la configuración de vistas
type ViewConfig struct {
	Template TemplateConfig `yaml:"template"`
}

// Load carga la configuración de las vistas
func (v *ViewConfig) Load(path string) {
	path = MakeDir(filepath.Join(path, v.Template.Path))
	v.Template.TemplateEngine = html.NewFileSystem(pkger.Dir(path), v.Template.Extension)
}

// NewDict crea un mapa para usar en las plantillas
func NewDict(data ...interface{}) map[string]interface{} {
	dict := make(map[string]interface{})
	if len(data)%2 != 0 {
		return dict // Retorna un mapa vacío si hay un número impar de argumentos
	}
	for i := 0; i < len(data); i += 2 {
		key, ok := data[i].(string)
		if !ok {
			continue // Salta si la clave no es un string
		}
		dict[key] = data[i+1]
	}
	return dict
}
