eb8dbf66a1
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.9 KiB
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. |
|
false |
|
|
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 |
|
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
ñ/Ñ->nexplicitamente porqueNFKDNO descompone la enye enn+ tilde (la cedilla queda como combining mark sobre lanbase 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
"".