A Ovest Di Paperino

Welcome to the dark side.

Windows Live Writer plugin: footnote

La palla di scrivere un post come quello di un paio di giorni fa, visto che il mio stile soffre da eccessi di "incisivi", è stata quella della formattazione delle note a piè pagina. I maligni si potrebbero chiedere chi me l'ha fatto fare. Anyway...

Onde ripeterlo senza farmi male, ho scritto un plugin per Windows Live Writer, il mio editor preferito. L'idea è semplice, cliccando su "Insert Footnote" compare questa finestra di dialogo:

In alto si sceglie il valore da mettere tra parentesi (quello che si vuole: un numero, una lettera, un asterisco) e lasciando la spunta in 'Copy to clipboard as well' il testo così formattato: [1] rimarrà nella clipboard pronto ad essere incollato a piè pagina.

Il codice dietro questa scemenza mi vergogno persino a condividerlo. In pratica non fa altro che generare HTML nella forma <sup>input</sup> senza alcun controllo. Il testo è limitato a 3 caratteri, quanto basta per mille note a piè pagina (se state scrivendo la Divina Commedia con Windows Live Writer, avete sbagliato tool). La parte più tricky riguarda il copiare il testo formattato nella clipboard. Purtroppo la clipboard per l'HTML ha bisogno di un po' di ciarle. In questo post è spiegato più o meno cosa fare. Io mi sono limitato banalmente a fare replace del contenuto tra StartFragment e EndFragment come da codice qui sotto:

public static string GetHtmlFragment(string htmlString)
{
	string htmlFragTemplate =
	@"Version:1.0
StartHTML:000125
EndHTML:000260
StartFragment:000209
EndFragment:000222
SourceURL:file:///C:/temp/test.htm
<HTML>
<head>
<title>HTML clipboard</title>
</head>
<body>
<!--StartFragment-->{0}<!--EndFragment-->
</body>
</html>";
	return String.Format(htmlFragTemplate, htmlString);
}

Siccome funziona non me ne preoccuperei della scarsa qualità del codice Stick out tongue (la formattazione sfasata è dovuta ai requirement della clipboard e la mia mancanza cronica di tempo). L'immagine per l'icona (rigorosamente 20x18) l'ho generata con InkScape previa purificazione via Paint. A quanto pare Windows Live Writer non digerisce bene i file che InkScape sputa di suo. Ecco il pulsante nel suo splendore:

 

Il file è qui. Le istruzioni sono semplici: scaricare e scompattare l'unica dll nel folder:

<Program Files>\Windows Live Writer\Plugins

Il codice è disponibile su richiesta! Wink Non mi rimane che dire enjoy!

-quack

Update: cogliendo il suggerimento di wisher, ho aggiunto un'altra opzione alla finestra di dialogo:

Add hyperlink crea un link interno tra la nota e il richiamo. Il problema è che al momento dell'incollatura Windows Live Writer fa pulizia dell'HTML e rimuove tutti gli attributi dal tag <a> ad esclusione di href. Per tale motivo visto che il funzionamento potrebbe essere leggermente contro-intuitivo, ho aggiunto una piccola demo d'uso in flash a questo link.

Mi scuso per i commenti che ho cancellato involontariamente insieme al post. Tongue Tied