Comment afficher correctement des exemples de code; comment se faire des manuels.

Afficher les lignes de code? Surligner un mot-clé? Préciser si on est en administrateur ou non?

J’expliquerai au maximum comment faire tout cela dans ce tuto. Avec en prime, l’utilisation de prismjs pour rendre plus facile la lecture du code.

Et accessoirement, comment afficher du markdown sur un site fait en markdown :laughing:

{{< details summary="See the details" >}}
This is a **bold** word.
{{< /details >}}
See the details

This is a bold word.

  
    ./MASUPERCOMMANDE
  


public class Program
{
    public static void Main(string[] args)
    {
        System.Console.WriteLine("Hello, World!");
    }
}

Explication de l’utilisation de Prims.

Je montre un exemple de chaque utilisation possible sur ce blog de l’affichage du code. Un exemple simple à copier puis à remplir de ce que l’on veut.

Afficher du code sans arguments

  • Afficher du code HTML

Donnera à l’affichage

  <p>Exemple</p>
  • Afficher du code C#

Donnera à l’affichage

public class Program
{
    public static void Main(string[] args)
    {
        System.Console.WriteLine("Hello, World!");
    }
}

Affichage de fichier en mode arborescence

La documentations de treeview

Ce que je tape dans mon fichier markdown:

```treeview
root_folder/
|-- a first folder/
|   |-- holidays.mov
|   |-- javascript-file.js
|   `-- some_picture.jpg
|-- documents/
|   |-- spreadsheet.xls
|   |-- manual.pdf
|   |-- document.docx
|   `-- presentation.ppt
|       `-- test    
|-- empty_folder/
|-- going deeper/
|   |-- going deeper/
|   |   `-- going deeper/
|   |        `-- going deeper/
|   |            `-- .secret_file
|   |-- style.css
|   `-- index.html
|-- music and movies/
|   |-- great-song.mp3
|   |-- S01E02.new.episode.avi
|   |-- S01E02.new.episode.nfo
|   `-- track 1.cda
|-- .gitignore
|-- .htaccess
|-- .npmignore
|-- archive 1.zip
|-- archive 2.tar.gz
|-- logo.svg
`-- README.md
```

Donnera à l’affichage

root_folder/
|-- a first folder/
|   |-- holidays.mov
|   |-- javascript-file.js
|   `-- some_picture.jpg
|-- documents/
|   |-- spreadsheet.xls
|   |-- manual.pdf
|   |-- document.docx
|   `-- presentation.ppt
|       `-- test    
|-- empty_folder/
|-- going deeper/
|   |-- going deeper/
|   |   `-- going deeper/
|   |        `-- going deeper/
|   |            `-- .secret_file
|   |-- style.css
|   `-- index.html
|-- music and movies/
|   |-- great-song.mp3
|   |-- S01E02.new.episode.avi
|   |-- S01E02.new.episode.nfo
|   `-- track 1.cda
|-- .gitignore
|-- .htaccess
|-- .npmignore
|-- archive 1.zip
|-- archive 2.tar.gz
|-- logo.svg
`-- README.md

Les différentes possibilités avec arguments

Afficher les numéros de ligne

La documentations de line-numbers

Ce que je tape dans mon fichier markdown:

<pre class="line-numbers language-none" data-start="42">
  <code>
    Hello,
    World!

    Foo
    Bar
  </code>
</pre>

Donnera à l’affichage

  
    Hello,
    World!

    Foo
    Bar
  

Affichage comme sur un terminal

La documentations de command-line

  • Commandes effectuées en root sur sa machine nommée “localhost”

Ce que je tape dans mon fichier markdown:

<pre class="command-line language-bash" data-user="root" data-host="localhost">
  <code>
    cd /usr/local/etc
    cp php.ini php.ini.bak
    vi php.ini
  </code>
</pre>

Donnera à l’affichage

  
    cd /usr/local/etc
    cp php.ini php.ini.bak
    vi php.ini
  

Commandes avec un résultat effectuées avec un utilisateur nommé “renaud” sur une machine nommée “remotehost”

Ce que je tape dans mon fichier markdown:

<pre
  class="command-line language-bash"
  data-user="renaud"
  data-host="remotehost"
  data-output="2, 4-8"
>
  <code>
    pwd
    /usr/home/renaud/bin
    ls -la
    total 2
    drwxr-xr-x   2 renaud  renaud     11 Jan 10 16:48 .
    drwxr--r-x  45 renaud  renaud     92 Feb 14 11:10 ..
    -rwxr-xr-x   1 renaud  renaud    444 Aug 25  2013 backup
    -rwxr-xr-x   1 renaud  renaud    642 Jan 17 14:42 deploy
  </code>
</pre>

Donnera à l’affichage

  
    pwd
    /usr/home/renaud/bin
    ls -la
    total 2
    drwxr-xr-x   2 renaud  renaud     11 Jan 10 16:48 .
    drwxr--r-x  45 renaud  renaud     92 Feb 14 11:10 ..
    -rwxr-xr-x   1 renaud  renaud    444 Aug 25  2013 backup
    -rwxr-xr-x   1 renaud  renaud    642 Jan 17 14:42 deploy
  

Affichage de la différence d’un fichier

La documentations de diff-highlight

Ce que je tape dans mon fichier markdown:

<pre class="language-diff-javascript diff-highlight">
  <code>
    @@ -4,6 +4,5 @@
    -    let foo = bar.baz([1, 2, 3]);
    -    foo = foo + 1;
    +    const foo = bar.baz([1, 2, 3]) + 1;
         console.log(`foo: ${foo}`);
  </code>
</pre>

Donnera à l’affichage

  
    @@ -4,6 +4,5 @@
    - let foo = bar.baz([1, 2, 3]);
    - foo = foo + 1;
    + const foo = bar.baz([1, 2, 3]) + 1;
         console.log(`foo: ${foo}`);
  

Trois façons de montrer du code html

La documentations de unescaped-markup

  • Par script

Ce que je tape dans mon fichier markdown:

<script type="text/plain" class="language-html">
  <p>Exemple</p>
</script>

Donnera à l’affichage

  • Par pre

Ce que je tape dans mon fichier markdown:

  <pre class="language-markup"><code><!--
  <p>Exemple</p>
--></code></pre>

Donnera à l’affichage

  • En une ligne seulement

Ce que je tape dans mon fichier markdown:

<code class="language-js"><!-- demoBtn.addEventListener("click", () => { ... }); --></code>

Donnera à l’affichage

Les plugins obligatoires pour que le reste fonctionne

Normalise les espaces ainsi que les retour à la ligne

La documentations de normalize-whitespace

Pas besoin de l’activer dans la page.

Ajoute la possibilité d’avoir des boutons avec action possible à l’affichage

La documentations de toolbar

Permet d’ajouter des boutons et des actions dans la partie pre et code

Obligatoire pour avoir le copier-coller.

Copier le contenu de la partie code

La documentations de copy-to-clipboard

Permet de copier/coller le contenu qui se trouve dans le pre ou code

Couleur pour les mots-clé

La documentations de highlight-keywords

Chaque mot-clé peut être configuré pour avoir une couleur différente.

Afficher le nom du language utilisé

La documentations de show-language

Ne pas utiliser

Ne pas utiliser car pour l’instant, il casse les couleurs modifiées du css en mode clair.

Configuration à mettre dans le hugo.toml

[markup]
  [markup.goldmark]
    [markup.goldmark.renderer]
      unsafe = true

#https://prismjs.com/#supported-languages
#mais limité par la version du thème gruvbox
#https://hugo-theme-gruvbox.schnerring.net/blog/prism-code-highlighting-showcase/#languages
[params.prism]
    languages = [
      "markup",
      "yaml", "toml",
      "css",
      "clike",
      "aspnet", "csharp",
      "bash",
      "javascript",
      "diff"
    ]
    plugins = [
      "normalize-whitespace", #https://prismjs.com/plugins/normalize-whitespace/
      # Doit être avant le copy-to-clipboard pour que celui-ci fonctionne
      "toolbar", # https://prismjs.com/plugins/toolbar/
      "copy-to-clipboard",#https://prismjs.com/plugins/copy-to-clipboard/
      "line-numbers", # https://prismjs.com/plugins/line-numbers/
      "command-line", #https://prismjs.com/plugins/command-line/
      "diff-highlight", #https://prismjs.com/plugins/diff-highlight/
      "highlight-keywords", #https://prismjs.com/plugins/highlight-keywords/
      # Casse les couleurs du css
      #"keep-markup", #https://prismjs.com/plugins/keep-markup/
      "show-language", #https://prismjs.com/plugins/show-language/
      "treeview", #https://prismjs.com/plugins/treeview/
      "unescaped-markup", #https://prismjs.com/plugins/unescaped-markup/
    ]