Sto modificando alcune funzionalità con markdown su Discourse per soddisfare meglio le esigenze della mia community che proviene da un forum myBB.
Discourse è la mia prima esperienza con markdown e voglio adottare l’approccio “non smantellare una recinzione se non sai perché è lì”. Tuttavia, ho difficoltà a capire perché markdown esegue determinate azioni e sarei felice di avere alcune risorse che mi aiutino a capire (soprattutto se ci sono preoccupazioni per la sicurezza che potrei trascurare).
La risposta in questo argomento ha fornito alcuni buoni riferimenti generali, inclusa una discussione iniziale e un plugin (ora non più attivo):
E questo post è stato incredibilmente utile dal punto di vista dello sviluppo:
Ma, di nuovo, sto cercando di capire perché esistono determinate funzionalità, in modo da poter valutare al meglio la loro rimozione o modifica.
Le funzionalità attualmente nel mio mirino sono:
Rimozione delle interruzioni di riga consecutive senza </br> o altro codice.
Creazione automatica di blocchi di codice su righe con 4 o più spazi iniziali.
Rimozione degli spazi bianchi iniziali in una nuova riga.
Trasformazione di qualsiasi sequenza di numeri in un elenco numerato in ordine crescente consecutivo.
Sono molto interessato a questo argomento ma non ho le conoscenze per rispondere alla maggior parte delle tue domande.
Tuttavia,
Penso che Discourse voglia mantenere i post puliti e facili da leggere.
Rimuovendo le interruzioni di riga extra e tagliando gli spazi all’inizio delle righe, si assicura che i post abbiano un aspetto coerente.
Questo aiuta soprattutto quando gli utenti, a volte anche senza rendersene conto (ne conosco alcuni!), aggiungono spazi o righe casuali che potrebbero rendere il loro contenuto più difficile da leggere.
Può sembrare strano forzare questo, specialmente quando si desidera uno spazio nel proprio elenco, ma la mia ipotesi è che serva a mantenere gli elenchi numerati il più semplici possibile, senza la necessità di rinumerare ogni elemento quando se ne aggiunge uno nuovo al proprio post (o in un post wiki).
In realtà, mantenere tutto molto stretto può rendere le cose più difficili da leggere. Un paragrafo dopo un’immagine può essere un esempio.
Ma… sto usando <br /> quindi nessun problema.
Un altro ma… sono abbastanza sicuro che l’operazione di pulizia non abbia nulla a che fare con un’esperienza di lettura più pulita. Viene dal codice stesso. Qualcosa di simile alla dichiarazione molto stanca che il markdown è più facile da leggere a “livello di codice”. L’utente finale non si trova mai in quella situazione.
Bene. Questo è puro meta ora.
Ma mi rifiuto di credere che la pulizia delle linee e degli spazi extra stia effettivamente migliorando l’esperienza complessiva per l’utente finale.
Non sono sicuro se questo risolverà un tuo problema, ma Discourse ha un’impostazione del sito traditional markdown linebreaks che è disabilitata per impostazione predefinita. Quando abilitata, sono richiesti due spazi finali per creare un’interruzione di riga.
Potrebbe valere la pena consultare questa pagina e provare il suo tutorial di markdown di 10 minuti: Markdown Reference. Il tutorial per nuovi utenti di Discourse rimanda a quella pagina, ma probabilmente viene trascurato da molti utenti che seguono il tutorial:
Apprezzo molto l’intuizione. La mia community ha una vasta sottocommunity di giochi/narrazioni su forum in cui la libertà di formattazione tende a valere più della coerenza. Se il motivo principale di queste funzionalità è davvero quello di aiutare a mantenere un aspetto coerente e semplificato, è probabilmente sicuro eliminarle per il mio caso d’uso, o almeno fornire un’opzione selezionabile dall’utente.
Questo è un tutorial molto utile, e la sua enfasi sul “creare testo bellissimo” sembra seguire le idee di coerenza menzionate in precedenza. Grazie per averlo segnalato.
Nel fare alcune letture aggiuntive sul markdown ho trovato questo sito particolarmente illuminante.
Questa è, credo, la descrizione originale del markdown, come citato dal team di commonmark, e rivela che un elemento centrale del perché il markdown fa quello che fa è dovuto alla sua vicinanza all’html.
Ad esempio, la prima frase lì è:
Markdown è uno strumento di conversione da testo a HTML per scrittori web.
E penso che alcune di queste stranezze del markdown possano essere meno dovute alle loro proprietà organizzative e più a un desiderio di convertire in modo pulito il testo nel corrispondente codice html.
Questo spiega perché lo spazio bianco viene eliminato, perché l’html elimina il suo spazio bianco.
Anche il motivo per cui qualsiasi sequenza di numeri viene trasformata in un elenco numerato crescente diventa un po’ più chiaro con:
Quindi il markdown non si preoccupa nemmeno di guardare i numeri, perché gli elenchi ordinati in html non si preoccupano di assegnare numeri. (Il codice effettivo in markdown-it controlla il carattere nella prima posizione, ma solo per iniziare la numerazione da quel carattere).
Penso che ci sia di più oltre a questo, (come la coerenza della formattazione su più dispositivi) ma alcuni degli aspetti più bizzarri sembrano molto ispirati all’html.