eb8dbf66a1
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.7 KiB
2.7 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 | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| parse_obsidian_frontmatter | function | py | obsidian | 1.0.0 | pure | def parse_obsidian_frontmatter(content: str) -> dict | Separa una nota de Obsidian (Markdown plano) en su frontmatter YAML y su cuerpo. Parsea el bloque YAML delimitado por --- al inicio del archivo con yaml.safe_load. Si no hay frontmatter valido al inicio, devuelve frontmatter vacio y el contenido completo como body. Soporta finales de linea \n y \r\n. Pura, sin I/O. |
|
false |
|
|
Dict con dos claves: 'frontmatter' (dict con el mapping YAML parseado, o {} si no hay frontmatter valido) y 'body' (str con el cuerpo de la nota tras el bloque frontmatter, o el contenido completo cuando no hay frontmatter valido). | true |
|
python/functions/obsidian/parse_obsidian_frontmatter_test.py | python/functions/obsidian/parse_obsidian_frontmatter.py |
Ejemplo
note = "---\ntitle: My Note\ntags:\n - a\n - b\n---\n\nHello [[other]]."
result = parse_obsidian_frontmatter(note)
# {
# "frontmatter": {"title": "My Note", "tags": ["a", "b"]},
# "body": "\nHello [[other]].",
# }
plain = "just a body, no frontmatter"
parse_obsidian_frontmatter(plain)
# {"frontmatter": {}, "body": "just a body, no frontmatter"}
Cuando usarla
Usala al leer una nota de Obsidian desde disco cuando necesites acceder a sus
metadatos YAML (tags, aliases, status, fechas) por separado del texto, o antes
de modificar el frontmatter y volver a serializar con format_obsidian_note.
Es el primer paso del round-trip parse -> modificar -> format.
Gotchas
- Un bloque frontmatter vacio (
---\n---) parsea aNoneen YAML, que no es un dict, por lo que se trata como "sin frontmatter" y el contenido completo vuelve como body. Esto es intencional para mantener la inversa conformat_obsidian_note(que omite frontmatter vacio). - El
---de apertura debe estar en la primera linea exacta del contenido. Un---precedido de lineas en blanco o texto NO se considera frontmatter. - YAML invalido se trata como "sin frontmatter": devuelve el contenido como body en lugar de lanzar excepcion (funcion pura, sin error_type).