Files
fn_registry/python/functions/obsidian/slugify_obsidian_name.md
T
egutierrez eb8dbf66a1 feat(infra): auto-commit con 88 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-11 00:16:46 +02:00

2.9 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
slugify_obsidian_name function py obsidian 1.0.0 pure def slugify_obsidian_name(name: str) -> str Convierte un nombre o titulo a un slug kebab-case estable: transliteracion Unicode (NFKD + descarte de combining marks, mapeo explicito de ñ/Ñ -> n), minusculas, colapsa cualquier secuencia de caracteres no [a-z0-9] a un solo guion, y strip de guiones en los bordes. Sin guiones dobles. Deterministica, pura, sin I/O. Util para migrar notas de Obsidian a nombres de archivo/identificadores estables.
obsidian
slug
kebab-case
transliterate
unicode
normalize
migrate
false
re
unicodedata
name desc
name Nombre o titulo arbitrario (puede llevar acentos, mayusculas, espacios y simbolos). P.ej. el titulo de una nota de Obsidian que se quiere convertir en slug estable.
String con el slug kebab-case: solo caracteres [a-z0-9-], sin guiones al inicio/fin ni guiones dobles. Cadena vacia si name no contiene ningun caracter slugificable. true
acentos y espacios
enye se mapea a n
mezcla mayusculas y acentos
simbolos y dobles separadores
string vacio
solo simbolos devuelve vacio
python/functions/obsidian/slugify_obsidian_name_test.py python/functions/obsidian/slugify_obsidian_name.py

Ejemplo

slugify_obsidian_name("Enmanuel Gutiérrez Pérez")   # "enmanuel-gutierrez-perez"
slugify_obsidian_name("Jose manuel camaño castro")  # "jose-manuel-camano-castro"
slugify_obsidian_name("DNI de María del Mar")       # "dni-de-maria-del-mar"
slugify_obsidian_name("  raro__nombre!! ")          # "raro-nombre"

Cuando usarla

Usala al migrar o extraer subgrafos de notas de Obsidian cuando necesites un identificador estable a partir de un titulo: renombrar archivos .md, generar claves de un mapa de equivalencias titulo -> slug, o crear nombres de carpeta deterministas. Es pura, asi que sirve igual de bien para indexar, ordenar o comparar nombres normalizados sin tocar disco.

Gotchas

  • Mapea ñ/Ñ -> n explicitamente porque NFKD NO descompone la enye en n + tilde (la cedilla queda como combining mark sobre la n base ya formada). Otros idiomas con letras especiales (ß, ø, đ) NO se transliteran: caen bajo el colapso de no-[a-z0-9] y desaparecen. Si necesitas soportarlas, amplia _TRANSLIT_MAP.
  • Dos titulos distintos pueden colisionar en el mismo slug ("Mi Nota!" y "Mi Nota" -> "mi-nota"). Si el slug debe ser unico en un vault, anade un desambiguador (sufijo numerico) por fuera de esta funcion.
  • No preserva ningun caracter no ASCII: emojis, ideogramas CJK, cirilico, etc. se descartan. Un titulo formado solo por esos caracteres devuelve "".