Tullio Facchinetti

mdt - Visualizzatore di file markdown per il terminale

by Andrea Catena

Categories: article thesis lang_it article_it


mdt logo

Il linguaggio Markdown

Il linguaggio Markdown è un linguaggio di markup progettato per avere una sintassi del testo semplice, al fine di semplificare la scrittura e permettere una facile conversione in altri formati.

Attualmente è il linguaggio più utilizzato per scrivere documentazione di programmi, wiki e note.

Anche se non si vede, questa stessa pagina è stata scritta in linguaggio Markdown, ed è stata poi convertita in HTML da un generatore di siti statici.

La tesi

La tesi di Andrea Catena ha portato alla realizzazione di un applicazione da terminale per la visualizzazione di file Markdown con la possibilità di utilizzare dei temi (o stili) preimpostati, e permettere la creazione di temi personalizzati.

L’applicazione è stata pubblicata come software opensource su GitHub con licenza GPLv3.

Obbiettivi

Gli obiettivi del progetto sono:

Per la realizzazione di questi obbiettivi è stato utilizzato il linguaggio di programmazione Python affiancato dalle seguenti librerie:

Requisiti

I requisiti prefissati sono stati:

Temi e stili

Lo stile utilizzato per la visualizzazione del file Markdown permette di specificare gli attributi “visuali” del testo, così come si fa con i CSS per le pagine HTML. E’ possibile indicare i colori per il testo e lo sfondo, e alcuni altri aspetti di formattazione, come l’indentazione e i margini.

Gli stili tengono ovviamente in considerazione il fatto che il terminale ha limitate capacità grafiche, e quindi le possibilità di personalizzare lo stile sono anch’esse molto più limitate di quanto avviene, per esempio, per le pagine HTML.

Gli stili sono specificati tramite in JSON. Un estratto di un file di specifica dello stile è il seguente:

{
  "document": {
    "prefix": "",
    "suffix": "",
    "margin": 2
  },
  "paragraph": {
    "prefix": "",
    "suffix": "\n",
    "color": "",
    "background_color": "",
    "bold": false,
    "underline": false,
    "blink": false
  },
  "h1": {
    "prefix": "# ",
    "suffix": "\n",
    "color": "red",
    "background_color": "",
    "bold": "",
    "underline": false,
    "blink": false
  },
  ...

Questo formato è stato ispirato dal formato utilizzato dal programma glow, che con qualche limitazione rispetto ad mdt, punta anch’esso alla visualizzazione di file Markdown nel terminale.

Funzionalità implementate

Cercando di prendere spunto da programmi con obiettivi simili, come il già citato glow e mdv, si è puntato a sopperire ad alcune alle loro mancanze e sono ritenute utili per l’uso di uno strumento come quello predisposto.

Alcune di queste funzionalità sono le seguenti:

L’esecuzione del comando mdt senza alcun argomento permette di cominciare ad esplorare le funzionalità del programma:

$ mdt --help
Usage: mdt_parser.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  gallery  Shows a gallery with the available themes.
  show     Display the specified Markdown file.
  themes   Lists of available themes.

Esempi di output sono i seguenti:

Esempio di output prodotto da md`.

Altro esempio di output prodotto da mdt.

Conclusione

In conclusione questo progetto è stato realizzato come strumento volto alla combinazione delle caratteristiche più interessanti di programmi analoghi ponendo particolare enfasi sulla semplicità di configurazione del tema/stile.


Highlights

  • Students and theses
  • Publications
  • Thesis topics
  • Curated awesome list of CLI apps
  • Last updates (English)

  • Students and theses ()
  • Students and theses - English ()
  • Learn enough C to survive ()
  • Workflow for writing theses collaboratively ()
  • Guidelines for theses and presentations ()
  • Projects ()
  • Shortcuts for Bash ()
  • Last updates (Italian)

  • Risultati FdI 21-25 Novembre 2022 ()
  • Studenti e tesi ()
  • Risultati FdI 29 Settembre 2022 ()
  • Risultati FdI 02 Settembre 2022 ()
  • Risultati FdI 28 Luglio 2022 ()
  • Risultati FdI 29 Giugno 2022 ()
  • Interfacciamento client-server con il simulatore di propagazione del calore Energy2D ()
  • List of categories

    article article_en article_it C courses fdi lang_en lang_it latex programming project research results robotics software teaching thesis tips