feat(infra): auto-commit con 88 cambios

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-11 00:16:46 +02:00
parent 6bc97df5c0
commit eb8dbf66a1
126 changed files with 10933 additions and 287 deletions
@@ -0,0 +1,61 @@
---
name: slugify_obsidian_name
kind: function
lang: py
domain: obsidian
version: "1.0.0"
purity: pure
signature: "def slugify_obsidian_name(name: str) -> str"
description: "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."
tags: [obsidian, slug, kebab-case, transliterate, unicode, normalize, migrate]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: ["re", "unicodedata"]
params:
- name: name
desc: "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."
output: "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."
tested: true
tests:
- "acentos y espacios"
- "enye se mapea a n"
- "mezcla mayusculas y acentos"
- "simbolos y dobles separadores"
- "string vacio"
- "solo simbolos devuelve vacio"
test_file_path: "python/functions/obsidian/slugify_obsidian_name_test.py"
file_path: "python/functions/obsidian/slugify_obsidian_name.py"
---
## Ejemplo
```python
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 `""`.