È un piccolo strumento per generare siti web statici, prende ispirazione da Jekyll, soprattutto il nome (Dr. Jekyll e Mr. Hyde). Jekyll l'ho usato per un po' di tempo su GitHub, poi lo provai anche sul mio computer ma lo trovai (tutt'ora) un po' macchinoso. I file md se volevo usarli con qualche altro strumento avrei dovuto ripulirli dalle intestazioni che Jekyll richiede per definire le properietà delle singole pagine. La mia idea è quella di avere un file per il contenuto della singola pagina web totalmente pulita, i metadati devono essere salvati su file esterni, proprio per questo motivo ho creato Hyde.
La sua forza sta nella semplicità di utilizzo. Non è stata reinventata la ruota; Hyde è stato scritto in Ruby e fa uso di template ERB. Il principio di funzionamento è quello di avere una pagina master che definisce il layout del contenuto del sito web e dei file (per il momento ci si limita ai file HTML) che vengono inglobati. In questo modo è possibile separare la grafica dal contenuto.
Di seguito viene mostrato un esempio di un sito con sole due pagine. Per
prima cosa si definisce un file master.rhtml
che serve da
template.
<html>
<head>
<title><%= @title %></title>
</head>
<body>
<div style="border: 1px solid orange">
<%= render @pageFileName %>
</div>
</body>
</html>
Le variabili usate sono le seguenti:
@title
è il titolo della pagina, viene definito nel file config;@pageFileName
è il nome del file da renderizzare, in questo esempio vengono renderizzati
i file pagina1.rhtml
e pagina2.rhtml
.
<h1>Pagina uno</h1>
<p>Contenuto della pagina 1.</p>
<a href="pagina2.html">Pagina 2 ></a>
pagina2.rhtml
<h1>Pagina due</h1>
<p>Contenuto della pagina 2.</p>
<a href="pagina1.html">< Pagina 1</a>
pagina1.rhtml.config
title: Pagina 1
pagina2.rhtml.config
title: Pagina 2
Dopo aver creato i file, si avrà la seguente situazione:
$ ls -1
master.rhtml
pagina1.rhtml
pagina1.rhtml.config
pagina2.rhtml
pagina2.rhtml.config
A questo punto, si eseguono i seguenti comandi:
hyde -f pagina1.rhtml > pagina1.html
hyde -f pagina2.rhtml > pagina2.html
Aprire i due file HTML (pagina1.html e pagina2.html) sul browser.