ANNONCE
Bienvenue sur mon blog ! Ceci est un exemple d'annonce.
En savoir plus

Exemples de blocs de code Firefly

Résumer cet article avec :
1002 mots
5 minutes
Exemples de blocs de code Firefly

Ici, nous explorons comment utiliser Expressive Code pour présenter des blocs de code. Les exemples fournis sont basés sur la documentation officielle, que vous pouvez consulter pour plus de détails.

Code expressif

Coloration syntaxique

Coloration syntaxique

Coloration syntaxique standard

console.log('Ce code a la coloration syntaxique !')

Rendu des séquences d’échappement ANSI

Terminal
[1;4mStandard ANSI colors:[0m
- Dimmed: [2;30m Black [2;31m Red [2;32m Green [2;33m Yellow [2;34m Blue [2;35m Magenta [2;36m Cyan [2;37m White [0m
- Foreground: [30m Black [31m Red [32m Green [33m Yellow [34m Blue [35m Magenta [36m Cyan [37m White [0m
- Background: [40m Black [41m Red [42m Green [43m Yellow [44m Blue [45m Magenta [46m Cyan [47m White [0m
- Reversed: [7;30m Black [7;31m Red [7;32m Green [7;33m Yellow [7;34m Blue [7;35m Magenta [7;36m Cyan [7;37m White [0m
[1;4m8-bit colors (showing colors 160-171 as an example):[0m
- Dimmed: [2;38;5;160m 160 [2;38;5;161m 161 [2;38;5;162m 162 [2;38;5;163m 163 [2;38;5;164m 164 [2;38;5;165m 165 [2;38;5;166m 166 [2;38;5;167m 167 [2;38;5;168m 168 [2;38;5;169m 169 [2;38;5;170m 170 [2;38;5;171m 171 [0m
- Foreground: [38;5;160m 160 [38;5;161m 161 [38;5;162m 162 [38;5;163m 163 [38;5;164m 164 [38;5;165m 165 [38;5;166m 166 [38;5;167m 167 [38;5;168m 168 [38;5;169m 169 [38;5;170m 170 [38;5;171m 171 [0m
- Background: [48;5;160m 160 [48;5;161m 161 [48;5;162m 162 [48;5;163m 163 [48;5;164m 164 [48;5;165m 165 [48;5;166m 166 [48;5;167m 167 [48;5;168m 168 [48;5;169m 169 [48;5;170m 170 [48;5;171m 171 [0m
- Reversed: [7;38;5;160m 160 [7;38;5;161m 161 [7;38;5;162m 162 [7;38;5;163m 163 [7;38;5;164m 164 [7;38;5;165m 165 [7;38;5;166m 166 [7;38;5;167m 167 [7;38;5;168m 168 [7;38;5;169m 169 [7;38;5;170m 170 [7;38;5;171m 171 [0m
[1;4m24-bit colors (full RGB):[0m
- Dimmed: [2;38;2;34;139;34m ForestGreen - RGB(34,139,34) [2;38;2;102;51;153m RebeccaPurple - RGB(102,51,153) [0m
- Foreground: [38;2;34;139;34m ForestGreen - RGB(34,139,34) [38;2;102;51;153m RebeccaPurple - RGB(102,51,153) [0m
- Background: [48;2;34;139;34m ForestGreen - RGB(34,139,34) [48;2;102;51;153m RebeccaPurple - RGB(102,51,153) [0m
- Reversed: [7;38;2;34;139;34m ForestGreen - RGB(34,139,34) [7;38;2;102;51;153m RebeccaPurple - RGB(102,51,153) [0m
[1;4mFont styles:[0m
- Default
- [1mBold[0m
- [2mDimmed[0m
- [3mItalic[0m
- [4mUnderline[0m
- [7mReversed[0m
- [9mStrikethrough[0m

Cadres éditeur et terminal

Cadres éditeur et terminal

Cadre éditeur de code

my-test-file.js
console.log('Exemple d\'attribut de titre')

src/content/index.html
<div>Exemple de commentaire de nom de fichier</div>

Cadre terminal

Terminal
echo "Ce cadre terminal n'a pas de titre"

Exemple de terminal PowerShell
Write-Output "Celui-ci a un titre !"

Redéfinir le type de cadre

echo "Regardez, pas de cadre !"

PowerShell Profile.ps1
# Sans redéfinition, ce serait un cadre terminal
function Watch-Tail { Get-Content -Tail 20 -Wait $args }
New-Alias tail Watch-Tail

Marqueurs de texte et de ligne

Marqueurs de texte et de ligne

Marquer des lignes entières et des plages de lignes

// Ligne 1 - ciblée par numéro de ligne
// Ligne 2
// Ligne 3
// Ligne 4 - ciblée par numéro de ligne
// Ligne 5
// Ligne 6
// Ligne 7 - ciblée par la plage "7-8"
// Ligne 8 - ciblée par la plage "7-8"

Choisir le type de marqueur de ligne (mark, ins, del)

line-markers.js
function demo() {
console.log('Cette ligne est marquée comme supprimée')
// Cette ligne et la suivante sont marquées comme insérées
console.log('Deuxième ligne insérée')
return 'Cette ligne utilise le marqueur neutre par défaut'
}

Ajouter des étiquettes aux marqueurs de ligne

labeled-line-markers.jsx
<button
role="button"
{...props}
value={value}
className={buttonClassName}
disabled={disabled}
active={active}
>
{children &&
!active &&
(typeof children === 'string' ? <span>{children}</span> : children)}
</button>

Ajouter des étiquettes longues sur des lignes séparées

labeled-line-markers.jsx
<button
role="button"
{...props}
value={value}
className={buttonClassName}
disabled={disabled}
active={active}
>
{children &&
!active &&
(typeof children === 'string' ? <span>{children}</span> : children)}
</button>

Utiliser une syntaxe de type diff

Cette ligne sera marquée comme insérée
Cette ligne sera marquée comme supprimée
Ceci est une ligne normale

--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+this is an actual diff file
-all contents will remain unmodified
no whitespace will be removed either

Combiner coloration syntaxique et syntaxe diff

function thisIsJavaScript() {
// Tout le bloc sera mis en évidence en JavaScript,
// et nous pouvons toujours y ajouter des marqueurs diff !
console.log('Ancien code à supprimer')
console.log('Nouveau code brillant !')
}

Marquer du texte spécifique dans une ligne

function demo() {
// Marquer n'importe quel texte donné dans la ligne
return 'Supporte plusieurs correspondances du texte donné';
}

Expressions régulières

console.log('Les mots yes et yep seront marqués.')

Échapper les barres obliques

Terminal
echo "Test" > /home/test.txt

Choisir le type de marqueur en ligne (mark, ins, del)

function demo() {
console.log('Voici les types de marqueurs ins et del');
// L'instruction return utilise le marqueur par défaut
return true;
}

Retour à la ligne automatique

Retour à la ligne automatique

Configurer le retour à la ligne par bloc

// Exemple avec retour à la ligne activé
function getLongString() {
return 'Ceci est une très longue chaîne de caractères qui ne tiendra probablement pas dans l\'espace disponible à moins que le conteneur ne soit très large'
}

// Exemple avec wrap=false
function getLongString() {
return 'Ceci est une très longue chaîne de caractères qui ne tiendra probablement pas dans l\'espace disponible à moins que le conteneur ne soit très large'
}

Configurer l’indentation du retour à la ligne

// Exemple preserveIndent (activé par défaut)
function getLongString() {
return 'Ceci est une très longue chaîne de caractères qui ne tiendra probablement pas dans l\'espace disponible à moins que le conteneur ne soit très large'
}

// Exemple preserveIndent=false
function getLongString() {
return 'Ceci est une très longue chaîne de caractères qui ne tiendra probablement pas dans l\'espace disponible à moins que le conteneur ne soit très large'
}

Sections repliables

Sections repliables

5 lignes masquées
// Tout ce code de configuration sera replié
import { someBoilerplateEngine } from '@example/some-boilerplate'
import { evenMoreBoilerplate } from '@example/even-more-boilerplate'
const engine = someBoilerplateEngine(evenMoreBoilerplate())
// Cette partie du code est visible par défaut
engine.doSomething(1, 2, 3, calcFn)
function calcFn() {
// Vous pouvez avoir plusieurs sections repliées
3 lignes masquées
const a = 1
const b = 2
const c = a + b
// Ceci restera visible
console.log(`Résultat : ${a} + ${b} = ${c}`)
return c
}
4 lignes masquées
// Tout le code jusqu'à la fin du bloc sera à nouveau replié
engine.closeConnection()
engine.freeMemory()
engine.shutdown({ reason: 'Fin du code de démonstration' })

Numéros de ligne

Numéros de ligne

Afficher les numéros de ligne par bloc

// Ce bloc de code affichera les numéros de ligne
console.log('Bonjour depuis la ligne 2 !')
console.log('Je suis à la ligne 3')

// Ce bloc désactive les numéros de ligne
console.log('Bonjour ?')
console.log('Désolé, savez-vous à quelle ligne je suis ?')

Modifier le numéro de ligne de départ

console.log('Bonjour depuis la ligne 5 !')
console.log('Je suis à la ligne 6')

Soutenir & Partager

Si cet article vous a aidé, partagez-le ou soutenez-moi !

Soutenir
Firefly
À propos de l'auteur
Firefly

Bienvenue sur mon blog.

Table des matières