Markdown mirror: should it import back? (properties syntax, page tags and aliases)

Abierto
#1,440 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
18/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
markdown
Área
tooling

Línea de trabajo

This is an open design question, so the first step is a maintainer decision between options 1A/1B and 2A/2B, not code. Read ADR 0016 and docs/logseq-markdown-syntax.md for the mirror's property format, then block-properties-content in logseq.common.export.file, which drops db-attribute-properties (:block/tags, :block/alias). Only after a choice is agreed would the importer in logseq.graph-parser and tests change.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Two questions about the Markdown mirror (ADR 0016) and Logseq's own Markdown importer, found by fuzzing the loop mirror → import as a file graph → compare blocks.

ADR 0016 says the mirror is for files that can be "read by external tools, backed up, indexed, or inspected outside Logseq", and also that it "is not a backup format with guaranteed import fidelity". The answers depend on where between those two the mirror should sit.

1. Should the importer read the mirror's property syntax?

The mirror writes properties as list items with * (ADR Markdown Content 5, docs/logseq-markdown-syntax.md):

- Ship it
  * deadline:: Jan 1st, 2024
  * rating:: 5

The file-graph importer (logseq.graph-parser) reads properties only in the file-graph form, deadline:: Jan 1st, 2024 without the * . With the * it reads a list item with text, so every property of every type (date, number, url, checkbox, choice, node, default) is lost on import, and the * key:: value text ends up in the block.

  • A. Teach the importer that * key:: value is a property, so a mirror imports with its properties.
  • B. Leave it: the mirror is a readable copy, not something to import back.

2. How should the mirror write page tags and aliases?

Today the mirror writes neither (block-properties-content in logseq.common.export.file drops db-attribute-properties, which holds :block/tags and :block/alias, and the mirror adds tag tokens only to block lines). So a page tagged Book with alias Dorian has no trace of either in its file. Two ways to write them:

  • A. * tags:: [[Book]] and * alias:: [[Dorian]], the mirror's own property syntax (imports only with 1A).
  • B. tags:: [[Book]] and alias:: [[Dorian]], the file-graph form, which the importer already reads.

Whichever you prefer, happy to send the PR with tests.

Lenguaje dominante
Sin datos de lenguaje
Estrellas
29
Forks
2
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de logseq/db-test

Todos los issues de logseq/db-test

Issues similares

Más issues de DevTools

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.