textCodeToHtml, conversion de style pour publication de code exécutable

Catégorie : application OS X
Licence : Open Source
Version : 1.3, 07 Juin 2017

Résumé : Utilitaire de gestion de l’affichage de code source dans des pages html ou sur WordPress.

Présentation :

J’ai longtemps recherché une solution pouvant afficher de manière efficace du code source (C++, Objective-C, …) sur le Web et notamment sur ce site ; une solution longtemps adoptée était SyntaxHighlighter, qui avait pour inconvénient de demander l’installation d’un plugin, assez lourde (ralentissement notable lors du chargement des pages, car interprétées en temps réel), et peu pratique à installer et configurer.

Travaillant mes notes et articles directement depuis Xcode, qui gère parfaitement le .rtf, et y intégrant des portions de code par copier/coller (les attributs de police et de couleurs sot conservés), ma solution a été finalement d’écrire une application qui identifie dans un document texte « riche » (RTF, Word), les occurrences de style et les transforme s’ils correspondent à ceux reconnus, en code CSS.

Ainsi, l’extrait de code suivant (affichage d’une courbe mathématique dans une NSView) :

// line at 0:
NSBezierPath *path = [[NSBezierPath alloc] init];
[path moveToPoint:NSMakePoint(x0, yMid)];
[path lineToPoint:NSMakePoint(x1, yMid)];
// first point:
CGFloat x = x0;
CGFloat y = yMid + dw97IBuffer[0] * dy;
[path moveToPoint:NSMakePoint(x, y)];

sera transformé en

<span class="cppcode"><span class="comment">// line at 0:</span></span>
<span class="cppcode"><span class="className">NSBezierPath</span></span> *path = [[<span class="cppcode"><span class="className">NSBezierPath</span></span> <span class="cppcode"><span class="function">alloc</span></span>] <span class="cppcode"><span class="function">init</span></span>];
[path <span class="cppcode"><span class="function">moveToPoint</span></span>:<span class="cppcode"><span class="function">NSMakePoint</span></span>(x0, yMid)];
[path <span class="cppcode"><span class="function">lineToPoint</span></span>:<span class="cppcode"><span class="function">NSMakePoint</span></span>(x1, yMid)];
<span class="cppcode"><span class="comment">// first point:</span></span>
<span class="cppcode"><span class="className">CGFloat</span></span> x = x0;
<span class="cppcode"><span class="className">CGFloat</span></span> y = yMid + <span class="cppcode"><span class="instanceVar">dw97IBuffer</span></span>[<span class="cppcode"><span class="character">0</span></span>] * dy;
[path <span class="cppcode"><span class="function">moveToPoint</span></span>:<span class="cppcode"><span class="function">NSMakePoint</span></span>(x, y)];

et le CSS généré sera :

<STYLE>
.cppcode {
font-family: "Lucida Console", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
font-size: 1.0em; /* white-space:pre; */ color: black; }
span.cppcode .comment {
color:rgb(0, 116, 0); }
span.cppcode .string {
color:rgb(196, 26, 0); }
span.cppcode .character {
color:rgb(28, 0, 207); }
span.cppcode .keyword {
color:rgb(128, 0, 128); }
span.cppcode .instanceVar {
color:rgb(63, 110, 116); }
span.cppcode .macro {
color:rgb(100, 56, 32); }
span.cppcode .className {
color:rgb(92, 38, 153); }
span.cppcode .function {
color:rgb(46, 13, 110); }
span.cppcode .invite {
color:rgb(81, 112, 255); }
</STYLE>

Utilisation :

– WordPress : le fichier .txt du code est à coller dans un nouvel article, le fichier .txt des définitions CSS sera à copier/coller dans vos préférences WordPress
– page HTML : utiliser le fichier .html généré

Obtenir le code :

Le code source de l’application est publié sur GitLab, et à été configuré pour fonctionner en Intégration Continue.
Vous pouvez l’obtenir à l’adresse suivante :
https://gitlab.com/tontonCD/textCodeToHtml/tree/master

Important :

Il s’agit d’une version de travail !
L’application ne peut être lancée telle quelle, son projet doit être, au moins la première fois, chargé puis exécuté par Xcode, pour ces raisons :
- le nom du fichier à traiter et son emplacement sur disque, sont codés en dur !
– les définitions des styles devant être reconnus comme code, sont codées en dur !
– autres « réglages » à configurer…
– notez également que le code semble manquer d’un bon nettoyage, ceci est voulu dans le but de présenter son évolution au cours des commits successifs.

Version Log (last entry) :

#1.3 – 2017/06/07
– FIX (features): implemented the Open Chooser,
– removed *.md from Target Membership ; actually not anymore warning at compile time,
– FIX (information): html file name and input file name were exchanged when displayed,
– FIX (cosmetic): the Text View is made non editable
– FIX (important): the WebView did seem not defined; added the WebKit framework
– FIX (important): the TableView didn’t display
– FIX (cosmetic): the application will now quit when the last window closes

Technologies utilisées :

(todo)

Social tagging: > > > >

Laisser un commentaire