diff --git a/.gitignore b/.gitignore index 4fb08a4..53d450b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ -*.html *.gz temp/* -temp2/* -!LICENSE.html mdp.php -style.min.css +antopie/css +antopie/*.html +docs diff --git a/README.md b/README.md index 9aef747..2dc556e 100755 --- a/README.md +++ b/README.md @@ -1,42 +1,52 @@ # Présentation -Ceci est le code source du [site web d'Antopie](https://antopie.org). -C'est un générateur de sites statiques en PHP. +Ceci est le code source du générateur de sites statiques qui créé le [site web d'Antopie](https://antopie.org). # Utilisation -Placer les pages dans `pages/.md`. Le format est principalement du Markdown Extra mais il est aussi possible de rajouter de l'HTML et du PHP. Elles sont ensuite transformées par `compil.php` en pages HTML statiques. +Placer les pages dans `/md/.md`. Le format est principalement du Markdown Extra mais il est aussi possible de rajouter de l'HTML et du PHP. Elles sont ensuite transformées par `compil.php` en pages HTML statiques, placées dans `/.html` `compil.php` prend 2 arguments : * `pw`, mot de passe définit dans mdp.php +* `site`, nom du dossier du site * `as`, qui dépend de l'endroit où sera déployé le site Pour déployer en DNS en liant vers `page`, utiliser `as=dns`. Pour déployer en Onion en liant vert `page`, utiliser `as=onion`. Pour déployer en DNS en liant vert `page.html`, ignorer `as`. -Exemple : http://tructructruc.onion/web/compil.php?as=onion&pw=change-moi +Exemple : http://tructructruc.onion/web/compil.php?as=onion&pw=change-moi&site=antopie -Les droits d'écriture sont requis sur l'ensemble du dossier par l'user qui exécute PHP. +Les droits d'écriture sont requis sur /css et temp/ par l'user qui exécute PHP. + +`compil.php` va chercher à utiliser [static-compress](https://github.com/neosmart/static-compress) dans `/usr/local/bin/static-compress` pour compresser les fichiers CSS et HTML créés. + +``` +$ cargo install static-compress +$ sudo mv ~/.cargo/bin/static-compress /usr/local/bin/ +``` # Bibliothèques utilisées -Le dossier bibli contient les dépendances incluses dans ce site. +Le dossier `bibli` contient les dépendances incluses dans le générateur de sites : -| Nom | Description | Source | -| --------------- | --------------------------------- | ------------------------------------------- | -| ubuntu | La police Ubuntu | https://design.ubuntu.com/font | -| fontello | Pack d'icônes | http://fontello.com | -| lesserphp | Compilateur Less en PHP | https://github.com/MarcusSchwarz/lesserphp | -| konami-js | Le code de Konami | https://snaptortoise.github.io/konami-js | -| gomez css | Gomez du jeu vidéo Fez en CSS | https://github.com/maisano/gomez-css | -| static-compress | Compression de fichiers statiques | https://github.com/neosmart/static-compress | -| parsedown | Compilateur Markdown en PHP | https://parsedown.org | +| Nom | Description | Source | +| --------- | --------------------------- | ------------------------------------------ | +| lesserphp | Compilateur Less en PHP | https://github.com/MarcusSchwarz/lesserphp | +| parsedown | Compilateur Markdown en PHP | https://parsedown.org | + +Il y a aussi quelques dépendances spécifiques au site d'Antopie : + +| Nom | Description | Source | +| --------- | ------------------- | ---------------------------------------- | +| fontello | Pack d'icônes | http://fontello.com | +| konami-js | Le code de Konami | https://snaptortoise.github.io/konami-js | +| gomez css | Gomez de Fez en CSS | https://github.com/maisano/gomez-css | # Licence -Le site web d'Antopie est un logiciel libre ; vous pouvez le diffuser et le modifier suivant les termes de la GNU Affero General Public License telle que publiée par la Free Software Foundation ; soit la version 3 de cette licence, soit (à votre convenance) une version ultérieure. +Le générateur de sites web d'Antopie est un logiciel libre ; vous pouvez le diffuser et le modifier suivant les termes de la GNU Affero General Public License telle que publiée par la Free Software Foundation ; soit la version 3 de cette licence, soit (à votre convenance) une version ultérieure. -Le site web d'Antopie est diffusé dans l’espoir qu’il sera utile, mais SANS AUCUNE GARANTIE ; sans même une garantie implicite de COMMERCIALISATION ou d’ADÉQUATION À UN USAGE PARTICULIER. Voyez la GNU Affero General Public License pour plus de détails. +Le générateur de sites web d'Antopie est diffusé dans l’espoir qu’il sera utile, mais SANS AUCUNE GARANTIE ; sans même une garantie implicite de COMMERCIALISATION ou d’ADÉQUATION À UN USAGE PARTICULIER. Voyez la GNU Affero General Public License pour plus de détails. Vous devriez avoir reçu une copie de la GNU Affero General Public License avec ce code. Sinon, consultez https://www.gnu.org/licenses/ diff --git a/clr.php b/antopie/clr.php old mode 100755 new mode 100644 similarity index 97% rename from clr.php rename to antopie/clr.php index 0c8b9d4..4b7eff2 --- a/clr.php +++ b/antopie/clr.php @@ -108,7 +108,7 @@ $bhex = sprintf("%02X",round($b)); $rgbhex = $rhex . $ghex . $bhex; ?> - + @@ -128,7 +128,7 @@ $rgbhex = $rhex . $ghex . $bhex; } #txt { - font-family: "Ubuntu", sans-serif; + font-family: system-ui, sans-serif; font-size: 50px; color: ; padding: 10px; diff --git a/bibli/fontello/LICENSE.txt b/antopie/fontello/LICENSE.txt old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/LICENSE.txt rename to antopie/fontello/LICENSE.txt diff --git a/bibli/fontello/README.txt b/antopie/fontello/README.txt old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/README.txt rename to antopie/fontello/README.txt diff --git a/bibli/fontello/config.json b/antopie/fontello/config.json old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/config.json rename to antopie/fontello/config.json diff --git a/bibli/fontello/css/animation.css b/antopie/fontello/css/animation.css old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/css/animation.css rename to antopie/fontello/css/animation.css diff --git a/bibli/fontello/css/fontello-codes.css b/antopie/fontello/css/fontello-codes.css old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/css/fontello-codes.css rename to antopie/fontello/css/fontello-codes.css diff --git a/bibli/fontello/css/fontello-embedded.css b/antopie/fontello/css/fontello-embedded.css old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/css/fontello-embedded.css rename to antopie/fontello/css/fontello-embedded.css diff --git a/bibli/fontello/css/fontello-ie7-codes.css b/antopie/fontello/css/fontello-ie7-codes.css old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/css/fontello-ie7-codes.css rename to antopie/fontello/css/fontello-ie7-codes.css diff --git a/bibli/fontello/css/fontello-ie7.css b/antopie/fontello/css/fontello-ie7.css old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/css/fontello-ie7.css rename to antopie/fontello/css/fontello-ie7.css diff --git a/bibli/fontello/css/fontello.css b/antopie/fontello/css/fontello.css old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/css/fontello.css rename to antopie/fontello/css/fontello.css diff --git a/bibli/fontello/css/fontello.min.css b/antopie/fontello/css/fontello.min.css similarity index 100% rename from bibli/fontello/css/fontello.min.css rename to antopie/fontello/css/fontello.min.css diff --git a/bibli/fontello/demo.html b/antopie/fontello/demo.html old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/demo.html rename to antopie/fontello/demo.html diff --git a/bibli/fontello/font/fontello.eot b/antopie/fontello/font/fontello.eot old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/font/fontello.eot rename to antopie/fontello/font/fontello.eot diff --git a/bibli/fontello/font/fontello.svg b/antopie/fontello/font/fontello.svg old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/font/fontello.svg rename to antopie/fontello/font/fontello.svg diff --git a/bibli/fontello/font/fontello.ttf b/antopie/fontello/font/fontello.ttf old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/font/fontello.ttf rename to antopie/fontello/font/fontello.ttf diff --git a/bibli/fontello/font/fontello.woff b/antopie/fontello/font/fontello.woff old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/font/fontello.woff rename to antopie/fontello/font/fontello.woff diff --git a/bibli/fontello/font/fontello.woff2 b/antopie/fontello/font/fontello.woff2 old mode 100755 new mode 100644 similarity index 100% rename from bibli/fontello/font/fontello.woff2 rename to antopie/fontello/font/fontello.woff2 diff --git a/bibli/gomez/gomez.css b/antopie/gomez/gomez.css old mode 100755 new mode 100644 similarity index 100% rename from bibli/gomez/gomez.css rename to antopie/gomez/gomez.css diff --git a/bibli/gomez/gomez.min.css b/antopie/gomez/gomez.min.css old mode 100755 new mode 100644 similarity index 100% rename from bibli/gomez/gomez.min.css rename to antopie/gomez/gomez.min.css diff --git a/img/404fourmie.png b/antopie/img/404fourmie.png old mode 100755 new mode 100644 similarity index 100% rename from img/404fourmie.png rename to antopie/img/404fourmie.png diff --git a/img/antopiev5-350-fs8.png b/antopie/img/antopiev5-350-fs8.png similarity index 100% rename from img/antopiev5-350-fs8.png rename to antopie/img/antopiev5-350-fs8.png diff --git a/img/antopiev5-350.png b/antopie/img/antopiev5-350.png similarity index 100% rename from img/antopiev5-350.png rename to antopie/img/antopiev5-350.png diff --git a/img/antopiev5-350.webp b/antopie/img/antopiev5-350.webp similarity index 100% rename from img/antopiev5-350.webp rename to antopie/img/antopiev5-350.webp diff --git a/img/antopiev5-400.png b/antopie/img/antopiev5-400.png similarity index 100% rename from img/antopiev5-400.png rename to antopie/img/antopiev5-400.png diff --git a/img/antopiev5-500.png b/antopie/img/antopiev5-500.png old mode 100755 new mode 100644 similarity index 100% rename from img/antopiev5-500.png rename to antopie/img/antopiev5-500.png diff --git a/img/antopiev5-500.webp b/antopie/img/antopiev5-500.webp old mode 100755 new mode 100644 similarity index 100% rename from img/antopiev5-500.webp rename to antopie/img/antopiev5-500.webp diff --git a/img/antopiev5.svg b/antopie/img/antopiev5.svg old mode 100755 new mode 100644 similarity index 100% rename from img/antopiev5.svg rename to antopie/img/antopiev5.svg diff --git a/img/ban.png b/antopie/img/ban.png similarity index 100% rename from img/ban.png rename to antopie/img/ban.png diff --git a/img/icons/128.png b/antopie/img/icons/128.png old mode 100755 new mode 100644 similarity index 100% rename from img/icons/128.png rename to antopie/img/icons/128.png diff --git a/img/icons/128.webp b/antopie/img/icons/128.webp old mode 100755 new mode 100644 similarity index 100% rename from img/icons/128.webp rename to antopie/img/icons/128.webp diff --git a/img/icons/16.png b/antopie/img/icons/16.png old mode 100755 new mode 100644 similarity index 100% rename from img/icons/16.png rename to antopie/img/icons/16.png diff --git a/img/icons/16.webp b/antopie/img/icons/16.webp old mode 100755 new mode 100644 similarity index 100% rename from img/icons/16.webp rename to antopie/img/icons/16.webp diff --git a/img/icons/256.png b/antopie/img/icons/256.png old mode 100755 new mode 100644 similarity index 100% rename from img/icons/256.png rename to antopie/img/icons/256.png diff --git a/img/icons/256.webp b/antopie/img/icons/256.webp old mode 100755 new mode 100644 similarity index 100% rename from img/icons/256.webp rename to antopie/img/icons/256.webp diff --git a/img/icons/32.png b/antopie/img/icons/32.png old mode 100755 new mode 100644 similarity index 100% rename from img/icons/32.png rename to antopie/img/icons/32.png diff --git a/img/icons/32.webp b/antopie/img/icons/32.webp old mode 100755 new mode 100644 similarity index 100% rename from img/icons/32.webp rename to antopie/img/icons/32.webp diff --git a/img/icons/512.png b/antopie/img/icons/512.png old mode 100755 new mode 100644 similarity index 100% rename from img/icons/512.png rename to antopie/img/icons/512.png diff --git a/img/icons/512.webp b/antopie/img/icons/512.webp old mode 100755 new mode 100644 similarity index 100% rename from img/icons/512.webp rename to antopie/img/icons/512.webp diff --git a/img/icons/64.png b/antopie/img/icons/64.png old mode 100755 new mode 100644 similarity index 100% rename from img/icons/64.png rename to antopie/img/icons/64.png diff --git a/img/icons/64.webp b/antopie/img/icons/64.webp old mode 100755 new mode 100644 similarity index 100% rename from img/icons/64.webp rename to antopie/img/icons/64.webp diff --git a/img/logos/bitwarden.png b/antopie/img/logos/bitwarden.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/bitwarden.png rename to antopie/img/logos/bitwarden.png diff --git a/img/logos/bitwarden.webp b/antopie/img/logos/bitwarden.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/bitwarden.webp rename to antopie/img/logos/bitwarden.webp diff --git a/img/logos/diagrams.png b/antopie/img/logos/diagrams.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/diagrams.png rename to antopie/img/logos/diagrams.png diff --git a/img/logos/diagrams.webp b/antopie/img/logos/diagrams.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/diagrams.webp rename to antopie/img/logos/diagrams.webp diff --git a/img/logos/element.png b/antopie/img/logos/element.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/element.png rename to antopie/img/logos/element.png diff --git a/img/logos/element.webp b/antopie/img/logos/element.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/element.webp rename to antopie/img/logos/element.webp diff --git a/antopie/img/logos/etherpad.png b/antopie/img/logos/etherpad.png new file mode 100644 index 0000000..ffc4e01 Binary files /dev/null and b/antopie/img/logos/etherpad.png differ diff --git a/antopie/img/logos/etherpad.webp b/antopie/img/logos/etherpad.webp new file mode 100644 index 0000000..197b9f1 Binary files /dev/null and b/antopie/img/logos/etherpad.webp differ diff --git a/img/logos/gitea.png b/antopie/img/logos/gitea.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/gitea.png rename to antopie/img/logos/gitea.png diff --git a/antopie/img/logos/gitea.webp b/antopie/img/logos/gitea.webp new file mode 100644 index 0000000..4c987ca Binary files /dev/null and b/antopie/img/logos/gitea.webp differ diff --git a/img/logos/jirafeau.png b/antopie/img/logos/jirafeau.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/jirafeau.png rename to antopie/img/logos/jirafeau.png diff --git a/img/logos/jirafeau.webp b/antopie/img/logos/jirafeau.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/jirafeau.webp rename to antopie/img/logos/jirafeau.webp diff --git a/img/logos/libreqr.png b/antopie/img/logos/libreqr.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/libreqr.png rename to antopie/img/logos/libreqr.png diff --git a/img/logos/libreqr.webp b/antopie/img/logos/libreqr.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/libreqr.webp rename to antopie/img/logos/libreqr.webp diff --git a/antopie/img/logos/matrix.png b/antopie/img/logos/matrix.png new file mode 100644 index 0000000..ea4d967 Binary files /dev/null and b/antopie/img/logos/matrix.png differ diff --git a/antopie/img/logos/matrix.webp b/antopie/img/logos/matrix.webp new file mode 100644 index 0000000..0e72794 Binary files /dev/null and b/antopie/img/logos/matrix.webp differ diff --git a/img/logos/nextcloud.png b/antopie/img/logos/nextcloud.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/nextcloud.png rename to antopie/img/logos/nextcloud.png diff --git a/img/logos/nextcloud.webp b/antopie/img/logos/nextcloud.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/nextcloud.webp rename to antopie/img/logos/nextcloud.webp diff --git a/img/logos/opensondage.png b/antopie/img/logos/opensondage.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/opensondage.png rename to antopie/img/logos/opensondage.png diff --git a/img/logos/opensondage.webp b/antopie/img/logos/opensondage.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/opensondage.webp rename to antopie/img/logos/opensondage.webp diff --git a/img/logos/origine/bitwarden.png b/antopie/img/logos/origine/bitwarden.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/bitwarden.png rename to antopie/img/logos/origine/bitwarden.png diff --git a/img/logos/origine/diagrams.jpg b/antopie/img/logos/origine/diagrams.jpg old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/diagrams.jpg rename to antopie/img/logos/origine/diagrams.jpg diff --git a/img/logos/origine/element.png b/antopie/img/logos/origine/element.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/element.png rename to antopie/img/logos/origine/element.png diff --git a/img/logos/etherpad.png b/antopie/img/logos/origine/etherpad-white.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/etherpad.png rename to antopie/img/logos/origine/etherpad-white.png diff --git a/img/logos/origine/etherpad.png b/antopie/img/logos/origine/etherpad.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/etherpad.png rename to antopie/img/logos/origine/etherpad.png diff --git a/img/logos/origine/gitea.png b/antopie/img/logos/origine/gitea.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/gitea.png rename to antopie/img/logos/origine/gitea.png diff --git a/img/logos/origine/jirafeau.png b/antopie/img/logos/origine/jirafeau.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/jirafeau.png rename to antopie/img/logos/origine/jirafeau.png diff --git a/img/logos/origine/matrix.png b/antopie/img/logos/origine/matrix.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/matrix.png rename to antopie/img/logos/origine/matrix.png diff --git a/img/logos/origine/nextcloud.png b/antopie/img/logos/origine/nextcloud.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/nextcloud.png rename to antopie/img/logos/origine/nextcloud.png diff --git a/img/logos/origine/peertube.png b/antopie/img/logos/origine/peertube.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/peertube.png rename to antopie/img/logos/origine/peertube.png diff --git a/img/logos/origine/pleroma.png b/antopie/img/logos/origine/pleroma.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/pleroma.png rename to antopie/img/logos/origine/pleroma.png diff --git a/img/logos/origine/plume.png b/antopie/img/logos/origine/plume.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/plume.png rename to antopie/img/logos/origine/plume.png diff --git a/img/logos/origine/privatebin.png b/antopie/img/logos/origine/privatebin.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/privatebin.png rename to antopie/img/logos/origine/privatebin.png diff --git a/img/logos/origine/qr.png b/antopie/img/logos/origine/qr.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/qr.png rename to antopie/img/logos/origine/qr.png diff --git a/img/logos/origine/riot.png b/antopie/img/logos/origine/riot.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/riot.png rename to antopie/img/logos/origine/riot.png diff --git a/img/logos/origine/rssbridge.png b/antopie/img/logos/origine/rssbridge.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/rssbridge.png rename to antopie/img/logos/origine/rssbridge.png diff --git a/img/logos/origine/searx_logo.svg b/antopie/img/logos/origine/searx_logo.svg old mode 100755 new mode 100644 similarity index 100% rename from img/logos/origine/searx_logo.svg rename to antopie/img/logos/origine/searx_logo.svg diff --git a/img/logos/peertube.png b/antopie/img/logos/peertube.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/peertube.png rename to antopie/img/logos/peertube.png diff --git a/img/logos/peertube.webp b/antopie/img/logos/peertube.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/peertube.webp rename to antopie/img/logos/peertube.webp diff --git a/img/logos/pleroma.png b/antopie/img/logos/pleroma.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/pleroma.png rename to antopie/img/logos/pleroma.png diff --git a/img/logos/pleroma.webp b/antopie/img/logos/pleroma.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/pleroma.webp rename to antopie/img/logos/pleroma.webp diff --git a/img/logos/plume.png b/antopie/img/logos/plume.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/plume.png rename to antopie/img/logos/plume.png diff --git a/img/logos/plume.webp b/antopie/img/logos/plume.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/plume.webp rename to antopie/img/logos/plume.webp diff --git a/img/logos/privatebin.png b/antopie/img/logos/privatebin.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/privatebin.png rename to antopie/img/logos/privatebin.png diff --git a/img/logos/privatebin.webp b/antopie/img/logos/privatebin.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/privatebin.webp rename to antopie/img/logos/privatebin.webp diff --git a/img/logos/rssbridge.png b/antopie/img/logos/rssbridge.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/rssbridge.png rename to antopie/img/logos/rssbridge.png diff --git a/img/logos/rssbridge.webp b/antopie/img/logos/rssbridge.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/rssbridge.webp rename to antopie/img/logos/rssbridge.webp diff --git a/img/logos/searx.png b/antopie/img/logos/searx.png old mode 100755 new mode 100644 similarity index 100% rename from img/logos/searx.png rename to antopie/img/logos/searx.png diff --git a/img/logos/searx.webp b/antopie/img/logos/searx.webp old mode 100755 new mode 100644 similarity index 100% rename from img/logos/searx.webp rename to antopie/img/logos/searx.webp diff --git a/bibli/konami.js b/antopie/konami.js old mode 100755 new mode 100644 similarity index 100% rename from bibli/konami.js rename to antopie/konami.js diff --git a/pages/404.md b/antopie/md/404.md old mode 100755 new mode 100644 similarity index 100% rename from pages/404.md rename to antopie/md/404.md diff --git a/pages/autres-initiatives.md b/antopie/md/autres-initiatives.md old mode 100755 new mode 100644 similarity index 93% rename from pages/autres-initiatives.md rename to antopie/md/autres-initiatives.md index 06da894..fdecf5c --- a/pages/autres-initiatives.md +++ b/antopie/md/autres-initiatives.md @@ -5,9 +5,6 @@ Cette page liste d'autres initiative de décentraliser et décommercialiser Inte [**42l**](https://42l.fr/) : Services originaux, CHATONS, Paris -[**DryCat**](https://www.drycat.fr/) -: Hetzner, CHATONS, Nantes - [**TeDomum**](https://tedomum.net/) : CHATONS diff --git a/antopie/md/cgu.md b/antopie/md/cgu.md new file mode 100644 index 0000000..ab903aa --- /dev/null +++ b/antopie/md/cgu.md @@ -0,0 +1,15 @@ + +## Préambule + +Antopie est un ensemble de services Internet créé en France par une seule personne y résidant. L'utilisation de ces services oblige la pleine acceptation des présentes conditions. + +* Celles-ci peuvent être mises à jour et modifiées à tout moment. +* Seule leur dernière version est applicable. + +## Conditions + +* Antopie est soumise à toutes les restrictions et obligations de la loi française. Cela prévaut partout. +* Antopie se dégage de toutes responsabilités. Les services peuvent être à tout moment modifiés ou interrompus, temporairement ou définitivement, avec ou sans préavis. +* L'utilisation d'Antopie pour une communication publique est régie par le manifeste sur le contenu d'Antopie. +* Antopie est ouverte à toute conscience à priori. +* Vous pouvez contacter l'administrataire d'Antopie par courriel : [miraty+legal@antopie.org](mailto:miraty+legal@antopie.org). diff --git a/pages/contact.md b/antopie/md/contact.md old mode 100755 new mode 100644 similarity index 75% rename from pages/contact.md rename to antopie/md/contact.md index 4d6d6a9..4b2b0b6 --- a/pages/contact.md +++ b/antopie/md/contact.md @@ -1,5 +1,5 @@ Vous pouvez me contacter par l'un des moyens suivants : * Mail : [miraty+antopie@antopie.org](mailto:miraty+antopie@antopie.org) OpenPGP : [`B16B 12A8 957B 2EC7 9659 04A6 B82D 15F0 3E67 B2B5`](/B16B12A8957B2EC7965904A6B82D15F03E67B2B5.asc) -* Matrix : @miraty:matrix.antopie.org -* Fédiverse : [@miraty@plero.antopie.org](https://plero.antopie.org/miraty) +* Matrix : `@miraty:matrix.antopie.org` +* Fédiverse : `@miraty@plero.antopie.org` diff --git a/pages/courriel.md b/antopie/md/courriel.md old mode 100755 new mode 100644 similarity index 100% rename from pages/courriel.md rename to antopie/md/courriel.md diff --git a/pages/details-techniques.md b/antopie/md/details-techniques.md old mode 100755 new mode 100644 similarity index 70% rename from pages/details-techniques.md rename to antopie/md/details-techniques.md index 23e4f5c..5bef2a5 --- a/pages/details-techniques.md +++ b/antopie/md/details-techniques.md @@ -13,7 +13,7 @@ Une tour nommée Pastèque avec : ## Système -[YunoHost](https://yunohost.org) 4.0 (basé sur [Debian](https://www.debian.org) 10) et son écosystème : Nginx, Postfix, Fail2ban... +[YunoHost](https://yunohost.org) 4 (basé sur [Debian](https://www.debian.org) 10) et son écosystème : Nginx, Postfix, Fail2ban... ## DNS @@ -23,20 +23,23 @@ Il est enregistré dans la [HSTS Preload List](https://hstspreload.org). ## Onion -En plus de l'accès par le DNS, plusieurs services sont aussi accessibles en `.onion`, par Tor. Il s'agit des mêmes serveurs qui tournent derrière, et leurs URLs d'accès Web sont interchangeables. Le support de l'Onion est récent, et des modifications importantes pourraient survenir dessus. +En plus de l'accès par le DNS, plusieurs services sont aussi accessibles en `.onion`, par Tor. Il s'agit des mêmes serveurs qui tournent derrière, et leurs URLs d'accès Web sont interchangeables. ## Internet Pastèque est connectée à Internet via une connexion du FAI Free en fibre optique (FTTH) à Paris. -Le débit maximal disponible varie entre 50 Mo/s (400 Mbit/s) et 100 Mo/s (800 Mbit/s). Adresse IPv6 : `2a01:e34:ec23:b760:5604:a6ff:fec4:58bd` Adresse IPv4 : `78.194.59.118` -## Sauvegarde +## Sauvegardes Des sauvegardes sont faites régulièrement avec le [système intégré à YunoHost](https://yunohost.org/#/backup). -PeerTube et Nextcloud ne sont pas sauvegardées car cela prendrait trop de place. -Les sauvegardes sont copiées sur un disque dans la même pièce. +Les données contenues dans PeerTube et Nextcloud ne sont pas sauvegardées car cela utiliserait trop de place. +Les sauvegardes sont copiées sur un autre disque dans la même pièce tous les 14 jours. + +## Journaux de connexion + +Le serveur utilise la configuration par défaut de YunoHost pour les journaux de connexion (logs), dont la durée de conservation est de 14 jours pour Nginx. ## Relai Tor diff --git a/pages/index.md b/antopie/md/index.md old mode 100755 new mode 100644 similarity index 94% rename from pages/index.md rename to antopie/md/index.md index eee9289..d5e78f2 --- a/pages/index.md +++ b/antopie/md/index.md @@ -11,21 +11,21 @@ Le compte @Antopie@mamot.fr ([R 'plume.webp', -'peertube' => 'peertube.webp', -'gitea' => 'gitea.webp', -'libreqr' => 'libreqr.webp', -'bitwarden' => 'bitwarden.webp', -'nextcloud' => 'nextcloud.webp', -'synapse' => 'matrix.webp', -'element' => 'element.webp', -'privatebin' => 'privatebin.webp', -'jirafeau' => 'jirafeau.webp', -'rssbridge' => 'rssbridge.webp', -'searx' => 'searx.webp', -'etherpad' => 'etherpad.webp', -'diagrams' => 'diagrams.webp', -'opensondage' => 'opensondage.webp', +'plume' => 'plume', +'peertube' => 'peertube', +'gitea' => 'gitea', +'libreqr' => 'libreqr', +'bitwarden' => 'bitwarden', +'nextcloud' => 'nextcloud', +'synapse' => 'matrix', +'element' => 'element', +'privatebin' => 'privatebin', +'jirafeau' => 'jirafeau', +'rssbridge' => 'rssbridge', +'searx' => 'searx', +'etherpad' => 'etherpad', +'diagrams' => 'diagrams', +'opensondage' => 'opensondage', 'iprefua' => NULL, ); @@ -94,7 +94,7 @@ $descService = array( 'bitwarden' => 'Générez, enregistrez et synchronisez des mots ou phrases de passe fortes.', 'nextcloud' => 'Synchronisation de fichiers, de contacts (CardDAV), d’agenda (CalDAV), Carnet , et plein d’autres fonctionnalités grâce à des extensions.', 'synapse' => 'Un serveur Matrix, qui est un protocole internet moderne pour la communication écrite, audio ou vidéo.', -'element' => 'Client Web pour Matrix. Autrefois nommé Riot.', +'element' => 'Client Web pour Matrix.', 'privatebin' => 'Partagez des textes, codes sources ou Markdown rapidement.', 'jirafeau' => 'Partagez rapidement n’importe quel fichier avec n’importe qui.', 'rssbridge' => 'Exportez les données de centaines de sites aux formats Atom, JSON, HTML, Mrss ou texte.', @@ -203,7 +203,11 @@ $aboutService = array( foreach($descService as $codeService => $descService) { ?>
-
+
+ + + +
+ +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the “Software”), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bibli/parsedown-extra-plugin/ParsedownExtraPlugin.php b/bibli/parsedown-extra-plugin/ParsedownExtraPlugin.php new file mode 100644 index 0000000..a12a6c7 --- /dev/null +++ b/bibli/parsedown-extra-plugin/ParsedownExtraPlugin.php @@ -0,0 +1,579 @@ +'; + + protected $regexAttribute = '(?:[#.][-\w:\\\]+[ ]*|[-\w:\\\]+(?:=(?:["\'][^\n]*?["\']|[^\s]+)?)?[ ]*)'; + + # Method aliases for every configuration property + public function __call($key, array $arguments = array()) { + $property = lcfirst(substr($key, 3)); + if (strpos($key, 'set') === 0 && property_exists($this, $property)) { + $this->{$property} = $arguments[0]; + return $this; + } + throw new Exception('Method ' . $key . ' does not exists.'); + } + + public function __construct() { + if (version_compare(parent::version, '0.8.0-beta-1') < 0) { + throw new Exception('ParsedownExtraPlugin requires a later version of Parsedown'); + } + $this->BlockTypes['!'][] = 'Image'; + parent::__construct(); + } + + protected function blockAbbreviation($Line) { + // Allow empty abbreviations + if (preg_match('/^\*\[(.+?)\]:[ ]*$/', $Line['text'], $matches)) { + $this->DefinitionData['Abbreviation'][$matches[1]] = null; + return array('hidden' => true); + } + return parent::blockAbbreviation($Line); + } + + protected function blockCodeComplete($Block) { + $this->doSetAttributes($Block['element']['element'], $this->blockCodeAttributes); + $this->doSetContent($Block['element']['element'], $this->blockCodeHtml, true); + // Put code attributes on parent element + if ($this->codeAttributesOnParent) { + if ($this->codeAttributesOnParent === true) { + // $this->codeAttributesOnParent = array_keys($Block['element']['element']['attributes']); + $this->codeAttributesOnParent = array('class', 'id'); + } + foreach ((array) $this->codeAttributesOnParent as $Name) { + if (isset($Block['element']['element']['attributes'][$Name])) { + $Block['element']['attributes'][$Name] = $Block['element']['element']['attributes'][$Name]; + unset($Block['element']['element']['attributes'][$Name]); + } + } + } + $Block['element']['element']['rawHtml'] = $Block['element']['element']['text']; + $Block['element']['element']['allowRawHtmlInSafeMode'] = true; + unset($Block['element']['element']['text']); + return $Block; + } + + protected function blockFencedCode($Line) { + // Re-enable the multiple class name feature + $Line['text'] = strtr(trim($Line['text']), array( + ' ' => "\x1A", + '.' => "\x1A." + )); + // Enable custom attribute syntax on code block + $Attributes = array(); + if (strpos($Line['text'], '{') !== false && substr($Line['text'], -1) === '}') { + $Parts = explode('{', $Line['text'], 2); + $Attributes = $this->parseAttributeData(strtr(substr($Parts[1], 0, -1), "\x1A", ' ')); + $Line['text'] = trim($Parts[0]); + } + if (!$Block = parent::blockFencedCode($Line)) { + return; + } + if ($Attributes) { + $Block['element']['element']['attributes'] = $Attributes; + } else if (isset($Block['element']['element']['attributes']['class'])) { + $Classes = explode("\x1A", strtr($Block['element']['element']['attributes']['class'], ' ', "\x1A")); + // `~~~ php` → `
`
+            // `~~~ php html` → `
`
+            // `~~~ .php` → `
`
+            // `~~~ .php.html` → `
`
+            // `~~~ .php html` → `
`
+            // `~~~ {.php #foo}` → `
`
+            $Results = [];
+            foreach ($Classes as $Class) {
+                if ($Class === "" || $Class === str_replace('%s', "", $this->blockCodeClassFormat)) {
+                    continue;
+                }
+                if ($Class[0] === '.') {
+                    $Results[] = substr($Class, 1);
+                } else {
+                    $Results[] = sprintf($this->blockCodeClassFormat, $Class);
+                }
+            }
+            $Block['element']['element']['attributes']['class'] = implode(' ', array_unique($Results));
+        }
+        return $Block;
+    }
+
+    protected function blockFencedCodeComplete($Block) {
+        return $this->blockCodeComplete($Block);
+    }
+
+    protected function blockHeader($Line) {
+        if (!$Block = parent::blockHeader($Line)) {
+            return;
+        }
+        $Level = strspn($Line['text'], '#');
+        $this->doSetAttributes($Block['element'], $this->headerAttributes, array($Level));
+        $this->doSetContent($Block['element'], $this->headerText, false, 'argument', array($Level));
+        return $Block;
+    }
+
+    protected function blockImage($Line) {
+        if (!$this->figuresEnabled) {
+            return;
+        }
+        // Match exactly an image syntax in a paragraph (with optional custom attributes, and optional hard break marker)
+        if (preg_match('/^\!\[[^\n]*?\](\[[^\n]*?\]|\([^\n]*?\))(\s*\{' . $this->regexAttribute . '+?\})?([ ]{2})?$/', $Line['text'])) {
+            $Block = array(
+                'description' => "",
+                'element' => array(
+                    'name' => 'figure',
+                    'attributes' => array(),
+                    'elements' => array(
+                        $this->inlineImage($Line)
+                    )
+                )
+            );
+            $this->doSetAttributes($Block['element'], $this->figureAttributes);
+            return $Block;
+        }
+        return;
+    }
+
+    protected function blockImageComplete($Block) {
+        if (!empty($Block['description'])) {
+            $Description = $Block['description'];
+            $Block['element']['elements'][] = array(
+                'name' => 'figcaption',
+                'rawHtml' => $this->{strpos($Description, "\n\n") === false ? 'line' : 'text'}(trim($Description, "\n"))
+            );
+            // unset($Block['description']);
+        }
+        if ($this->imageAttributesOnParent) {
+            $Inline = $Block['element']['elements'][0];
+            if ($this->imageAttributesOnParent === true) {
+                $this->imageAttributesOnParent = array_keys($Inline['element']['attributes']);
+            }
+            foreach ((array) $this->imageAttributesOnParent as $Name) {
+                if (isset($Inline['element']['attributes'][$Name])) {
+                    // Merge class names
+                    if (
+                        $Name === 'class' &&
+                        isset($Block['element']['attributes'][$Name]) &&
+                        isset($Inline['element']['attributes'][$Name])
+                    ) {
+                        $Classes = array_merge(
+                            explode(' ', $Block['element']['attributes'][$Name]),
+                            explode(' ', $Inline['element']['attributes'][$Name])
+                        );
+                        sort($Classes);
+                        $Block['element']['attributes']['class'] = implode(' ', array_unique(array_filter($Classes)));
+                        unset($Block['element']['elements'][0]['element']['attributes'][$Name]);
+                        continue;
+                    }
+                    $Block['element']['attributes'][$Name] = $Inline['element']['attributes'][$Name];
+                    unset($Block['element']['elements'][0]['element']['attributes'][$Name]);
+                }
+            }
+        }
+        return $Block;
+    }
+
+    protected function blockImageContinue($Line, array $Block) {
+        if (isset($Block['complete'])) {
+            return;
+        }
+        if (isset($Block['interrupted'])) {
+            $Block['description'] .= "\n";
+            unset($Block['interrupted']);
+        }
+        if ($Line['indent'] === 0) {
+            $Block['complete'] = true;
+            return;
+        }
+        if ($Line['indent'] > 0 && $Line['indent'] < 4) {
+            $Block['description'] .= "\n" . $Line['text'];
+            return $Block;
+        }
+        return;
+    }
+
+    protected function blockQuoteComplete($Block) {
+        $this->doSetAttributes($Block['element'], $this->blockQuoteAttributes);
+        $this->doSetContent($Block['element'], $this->blockQuoteText, false, 'arguments');
+        return $Block;
+    }
+
+    protected function blockSetextHeader($Line, array $Block = null) {
+        if (!$Block = parent::blockSetextHeader($Line, $Block)) {
+            return;
+        }
+        $Level = $Line['text'][0] === '=' ? 1 : 2;
+        $this->doSetAttributes($Block['element'], $this->headerAttributes, array($Level));
+        $this->doSetContent($Block['element'], $this->headerText, false, 'argument', array($Level));
+        return $Block;
+    }
+
+    protected function blockTableContinue($Line, array $Block) {
+        if (!$Block = parent::blockTableContinue($Line, $Block)) {
+            return;
+        }
+        $Aligns = $Block['alignments'];
+        // `` or ``
+        foreach ($Block['element']['elements'] as $Index0 => &$Element0) {
+            // ``
+            foreach ($Element0['elements'] as $Index1 => &$Element1) {
+                // `` or ``
+                foreach ($Element1['elements'] as $Index2 => &$Element2) {
+                    $this->doSetAttributes($Element2, $this->tableColumnAttributes, array($Aligns[$Index2], $Index2, $Index1));
+                }
+            }
+        }
+        return $Block;
+    }
+
+    protected function blockTableComplete($Block) {
+        $this->doSetAttributes($Block['element'], $this->tableAttributes);
+        return $Block;
+    }
+
+    protected function buildFootnoteElement() {
+        $DefinitionData = $this->DefinitionData['Footnote'];
+        if (!$Footnotes = parent::buildFootnoteElement()) {
+            return;
+        }
+        $DefinitionKey = array_keys($DefinitionData);
+        $DefinitionData = array_values($DefinitionData);
+        $this->doSetAttributes($Footnotes, $this->footnoteAttributes);
+        foreach ($Footnotes['elements'][1]['elements'] as $Index0 => &$Element0) {
+            $Name = $DefinitionKey[$Index0];
+            $Count = $DefinitionData[$Index0]['count'];
+            $Args = array(is_numeric($Name) ? (float) $Name : $Name, $Count);
+            $this->doSetAttributes($Element0, $this->footnoteBackReferenceAttributes, $Args);
+            foreach ($Element0['elements'] as $Index1 => &$Element1) {
+                $Count = 0;
+                foreach ($Element1['elements'] as $Index2 => &$Element2) {
+                    if (!isset($Element2['name']) || $Element2['name'] !== 'a') {
+                        continue;
+                    }
+                    $Args[1] = ++$Count;
+                    $this->doSetAttributes($Element2, $this->footnoteBackLinkAttributes, $Args);
+                    $this->doSetContent($Element2, $this->footnoteBackLinkHtml, false, 'rawHtml');
+                }
+            }
+        }
+        return $Footnotes;
+    }
+
+    protected function doGetAttributes($Element) {
+        if (isset($Element['attributes'])) {
+            return (array) $Element['attributes'];
+        }
+        return array();
+    }
+
+    protected function doGetContent($Element) {
+        if (isset($Element['text'])) {
+            return $Element['text'];
+        }
+        if (isset($Element['rawHtml'])) {
+            return $Element['rawHtml'];
+        }
+        if (isset($Element['handler']['argument'])) {
+            return implode("\n", (array) $Element['handler']['argument']);
+        }
+        return null;
+    }
+
+    private function doSetLink($Excerpt, $Function) {
+        if (!$Inline = call_user_func('parent::' . $Function, $Excerpt)) {
+            return;
+        }
+        $this->doSetAttributes($Inline['element'], $this->linkAttributes, array($this->isLocal($Inline['element'], 'href')));
+        $this->doSetData($this->DefinitionData['Reference'], $this->referenceData);
+        return $Inline;
+    }
+
+    protected function doSetAttributes(&$Element, $From, $Args = array()) {
+        $Attributes = $this->doGetAttributes($Element);
+        $Content = $this->doGetContent($Element);
+        if (is_callable($From)) {
+            $Args = array_merge(array($Content, $Attributes, &$Element), $Args);
+            $Element['attributes'] = array_replace($Attributes, (array) call_user_func_array($From, $Args));
+        } else {
+            $Element['attributes'] = array_replace($Attributes, (array) $From);
+        }
+    }
+
+    protected function doSetContent(&$Element, $From, $Esc = false, $Mode = 'text', $Args = array()) {
+        $Attributes = $this->doGetAttributes($Element);
+        $Content = $this->doGetContent($Element);
+        if ($Esc) {
+            $Content = parent::escape($Content, true);
+        }
+        if (is_callable($From)) {
+            $Args = array_merge(array($Content, $Attributes, &$Element), $Args);
+            $Content = call_user_func_array($From, $Args);
+        } else if (!empty($From)) {
+            $Content = sprintf($From, $Content);
+        }
+        if ($Mode === 'arguments') {
+            $Element['handler']['argument'] = explode("\n", $Content);
+        } else if ($Mode === 'argument') {
+            $Element['handler']['argument'] = $Content;
+        } else {
+            $Element[$Mode] = $Content;
+        }
+    }
+
+    protected function doSetData(&$To, $From) {
+        $To = array_replace((array) $To, (array) $From);
+    }
+
+    protected function element(array $Element) {
+        if (!$Any = parent::element($Element)) {
+            return;
+        }
+        if (substr($Any, -3) === ' />') {
+            if (is_callable($this->voidElementSuffix)) {
+                $Attributes = $this->doGetAttributes($Element);
+                $Content = $this->doGetContent($Element);
+                $Suffix = call_user_func_array($this->voidElementSuffix, [$Content, $Attributes, &$Element]);
+            } else {
+                $Suffix = $this->voidElementSuffix;
+            }
+            $Any = substr_replace($Any, $Suffix, -3);
+        }
+        return $Any;
+    }
+
+    protected function inlineCode($Excerpt) {
+        if (!$Inline = parent::inlineCode($Excerpt)) {
+            return;
+        }
+        $this->doSetAttributes($Inline['element'], $this->codeAttributes);
+        $this->doSetContent($Inline['element'], $this->codeHtml, true);
+        $Inline['element']['rawHtml'] = $Inline['element']['text'];
+        $Inline['element']['allowRawHtmlInSafeMode'] = true;
+        unset($Inline['element']['text']);
+        return $Inline;
+    }
+
+    protected function inlineFootnoteMarker($Excerpt) {
+        if (!$Inline = parent::inlineFootnoteMarker($Excerpt)) {
+            return;
+        }
+        $Name = null;
+        if (preg_match('/^\[\^(.+?)\]/', $Excerpt['text'], $matches)) {
+            $Name = $matches[1];
+        }
+        $Args = array(is_numeric($Name) ? (float) $Name : $Name, $this->DefinitionData['Footnote'][$Name]['count']);
+        $this->doSetAttributes($Inline['element'], $this->footnoteReferenceAttributes, $Args);
+        $this->doSetAttributes($Inline['element']['element'], $this->footnoteLinkAttributes, $Args);
+        $this->doSetContent($Inline['element']['element'], $this->footnoteLinkHtml, false, 'text', $Args);
+        $Inline['element']['element']['rawHtml'] = $Inline['element']['element']['text'];
+        $Inline['element']['element']['allowRawHtmlInSafeMode'] = true;
+        unset($Inline['element']['element']['text']);
+        return $Inline;
+    }
+
+    protected function inlineImage($Excerpt) {
+        if (!$Inline = parent::inlineImage($Excerpt)) {
+            return;
+        }
+        $this->doSetAttributes($Inline['element'], $this->imageAttributes, array($this->isLocal($Inline['element'], 'src')));
+        return $Inline;
+    }
+
+    protected function inlineLink($Excerpt) {
+        return $this->doSetLink($Excerpt, __FUNCTION__);
+    }
+
+    protected function inlineText($Text) {
+        $this->doSetData($this->DefinitionData['Abbreviation'], $this->abbreviationData);
+        return parent::inlineText($Text);
+    }
+
+    protected function inlineUrl($Excerpt) {
+        return $this->doSetLink($Excerpt, __FUNCTION__);
+    }
+
+    protected function inlineUrlTag($Excerpt) {
+        return $this->doSetLink($Excerpt, __FUNCTION__);
+    }
+
+    protected function isLocal($Element, $Key) {
+        $Link = isset($Element['attributes'][$Key]) ? (string) $Element['attributes'][$Key] : null;
+        if (
+            // ``
+            $Link === "" ||
+            // ``
+            // ``
+            // ``
+            // ``
+            // ``
+            strpos('./?&#', $Link[0]) !== false && strpos($Link, '//') !== 0 ||
+            // ``
+            strpos($Link, 'data:') === 0 ||
+            // ``
+            strpos($Link, 'javascript:') === 0 ||
+            // ``
+            strpos($Link, 'mailto:') === 0
+        ) {
+            return true;
+        }
+        if (isset($_SERVER['HTTP_HOST'])) {
+            $Host = $_SERVER['HTTP_HOST'];
+        } else if (isset($_SERVER['SERVER_NAME'])) {
+            $Host = $_SERVER['SERVER_NAME'];
+        } else {
+            $Host = "";
+        }
+        // ``
+        if (strpos($Link, '//') === 0 && strpos($Link, '//' . $Host) !== 0) {
+            return false;
+        }
+        if (
+            // ``
+            strpos($Link, 'https://' . $Host) === 0 ||
+            // ``
+            strpos($Link, 'http://' . $Host) === 0
+        ) {
+            return true;
+        }
+        // ``
+        return strpos($Link, '://') === false;
+    }
+
+    protected function parseAttributeData($attributeString) {
+        // Allow compact attributes
+        $attributeString = strtr($attributeString, array(
+            '#' => ' #',
+            '.' => ' .'
+        ));
+        if (strpos($attributeString, '="') !== false || strpos($attributeString, "='") !== false) {
+            $attributeString = preg_replace_callback('#([-\w]+=)(["\'])([^\n]*?)\2#', function($matches) {
+                $value = strtr($matches[3], array(
+                    ' #' => '#',
+                    ' .' => '.',
+                    ' ' => "\x1A"
+                ));
+                return $matches[1] . $matches[2] . $value . $matches[2];
+            }, $attributeString);
+        }
+        $Attributes = array();
+        foreach (explode(' ', $attributeString) as $v) {
+            if (!$v) {
+                continue;
+            }
+            // `{#foo}`
+            if ($v[0] === '#' && isset($v[1])) {
+                $Attributes['id'] = substr($v, 1);
+            // `{.foo}`
+            } else if ($v[0] === '.' && isset($v[1])) {
+                $Attributes['class'][] = substr($v, 1);
+            // ~
+            } else if (strpos($v, '=') !== false) {
+                $vv = explode('=', $v, 2);
+                // `{foo=}`
+                if ($vv[1] === "") {
+                    if ($vv[0] === 'class') {
+                        continue;
+                    }
+                    $Attributes[$vv[0]] = "";
+                // `{foo="bar baz"}`
+                // `{foo='bar baz'}`
+                } else if ($vv[1][0] === '"' && substr($vv[1], -1) === '"' || $vv[1][0] === "'" && substr($vv[1], -1) === "'") {
+                    $values = stripslashes(strtr(substr(substr($vv[1], 1), 0, -1), "\x1A", ' '));
+                    if ($vv[0] === 'class' && isset($Attributes[$vv[0]])) {
+                        $values = explode(' ', $values);
+                        $Attributes[$vv[0]] = array_merge($Attributes[$vv[0]], $values);
+                    } else {
+                        $Attributes[$vv[0]] = $values;
+                    }
+                // `{foo=bar}`
+                } else {
+                    if ($vv[0] === 'class' && isset($Attributes[$vv[0]])) {
+                        $Attributes[$vv[0]] = array_merge($Attributes[$vv[0]], [$vv[1]]);
+                    } else {
+                        $Attributes[$vv[0]] = $vv[1];
+                    }
+                }
+            // `{foo}`
+            } else {
+                if ($v === 'class' && isset($Attributes[$v])) {
+                    continue;
+                }
+                $Attributes[$v] = $v;
+            }
+        }
+        if (isset($Attributes['class'])) {
+            $Attributes['class'] = implode(' ', array_unique((array) $Attributes['class']));
+        }
+        return $Attributes;
+    }
+
+}
diff --git a/bibli/parsedown-extra-plugin/README.md b/bibli/parsedown-extra-plugin/README.md
new file mode 100644
index 0000000..c94df09
--- /dev/null
+++ b/bibli/parsedown-extra-plugin/README.md
@@ -0,0 +1,317 @@
+Extension for [Parsedown Extra](https://github.com/erusev/parsedown-extra)
+==========================================================================
+
+> Configurable Markdown to HTML converter with Parsedown Extra.
+
+![Parsedown Logo](https://user-images.githubusercontent.com/1669261/109982015-10e2c300-7d34-11eb-93bd-5f103b9d5165.png)
+
+
+Contents
+--------
+
+ - [Usage](#usage)
+ - [Features](#features)
+ - [Property Aliases as Methods](#property-aliases-as-methods)
+
+
+Usage
+-----
+
+### Manual
+
+Include `ParsedownExtraPlugin.php` just after the `Parsedown.php` and `ParsedownExtra.php` file:
+
+~~~ .php
+require 'Parsedown.php';
+require 'ParsedownExtra.php';
+require 'ParsedownExtraPlugin.php';
+
+# Create
+$Parsedown = new ParsedownExtraPlugin;
+
+# Configure
+$Parsedown->voidElementSuffix = '>'; // HTML5
+
+# Use
+echo $Parsedown->text('# Header {.sth}');
+~~~
+
+### Composer
+
+From the file manager interface, create a `composer.json` file in your project folder, then add this content:
+
+~~~ .json
+{
+  "minimum-stability": "dev"
+}
+~~~
+
+From the command line interface, navigate to your project folder then run this command:
+
+~~~ .sh
+composer require taufik-nurrohman/parsedown-extra-plugin
+~~~
+
+From the file manager interface, create an `index.php` file in your project folder then require the auto-loader file:
+
+~~~ .php
+require 'vendor/autoload.php';
+
+# Create
+$Parsedown = new ParsedownExtraPlugin;
+
+# Configure
+$Parsedown->voidElementSuffix = '>'; // HTML5
+
+# Use
+echo $Parsedown->text('# Header {.sth}');
+~~~
+
+
+Features
+--------
+
+### HTML or XHTML
+
+~~~ .php
+$Parsedown->voidElementSuffix = '>'; // HTML5
+~~~
+
+### Predefined Abbreviations
+
+~~~ .php
+$Parsedown->abbreviationData = [
+    'CSS' => 'Cascading Style Sheet',
+    'HTML' => 'Hyper Text Markup Language',
+    'JS' => 'JavaScript'
+];
+~~~
+
+### Predefined Reference Links and Images
+
+~~~ .php
+$Parsedown->referenceData = [
+    'mecha-cms' => [
+        'url' => 'https://mecha-cms.com',
+        'title' => 'Mecha CMS'
+    ],
+    'test-image' => [
+        'url' => 'http://example.com/favicon.ico',
+        'title' => 'Test Image'
+    ]
+);
+~~~
+
+### Automatic `rel="nofollow"` Attribute on External Links
+
+~~~ .php
+$Parsedown->linkAttributes = function($Text, $Attributes, &$Element, $Internal) {
+    if (!$Internal) {
+        return [
+            'rel' => 'nofollow',
+            'target' => '_blank';
+        ];
+    }
+    return [];
+};
+~~~
+
+### Automatic `id` Attribute on Headers
+
+~~~ .php
+$Parsedown->headerAttributes = function($Text, $Attributes, &$Element, $Level) {
+    $Id = $Attributes['id'] ?? trim(preg_replace('/[^a-z\d\x{4e00}-\x{9fa5}]+/u', '-', strtolower($Text)), '-');
+    return ['id' => $Id];
+};
+~~~
+
+### Automatic Figure Elements
+
+Every image markup that appears alone in a paragraph will be converted into a figure element automatically.
+
+~~~ .php
+$Parsedown->figuresEnabled = true;
+$Parsedown->figureAttributes = ['class' => 'image'];
+
+$Parsedown->imageAttributesOnParent = ['class', 'id'];
+~~~
+
+To add a caption below the image, prepend at least one space but less than four spaces to turn the paragraph sequence that comes after the image into an image caption.
+
+~~~ .markdown
+This is a paragraph.
+
+![Image](/path/to/image.jpg)
+ Image caption.
+
+This is a paragraph.
+
+![Image](/path/to/image.jpg)
+
+ Image caption in a paragraph tag.
+
+This is a paragraph.
+
+![Image](/path/to/image.jpg)
+
+    This is a code block.
+
+This is a paragraph.
+~~~
+
+FYI, this format is also valid for average Markdown files. And so, it will degraded gracefully when parsed by other Markdown converters.
+
+### Custom Code Block Class Format
+
+~~~ .php
+$Parsedown->blockCodeClassFormat = 'language-%s';
+~~~
+
+### Custom Code Block Contents
+
+~~~ .php
+$Parsedown->codeHtml = '%s';
+$Parsedown->blockCodeHtml = '%s';
+~~~
+
+~~~ .php
+// 
+function doApplyHighlighter(string $Text, array $ClassList, &$Element) {
+    $Highlight = new \Highlight\Highlighter;
+    $Highlight->setAutodetectLanguages($ClassList);
+    $Highlighted = $Highlight->highlightAuto($Text);
+    $Element['attributes']['class'] = 'hljs ' . $Highlighted->language;
+    return $Highlighted->value;
+}
+
+$Parsedown->codeHtml = function($Text, $Attributes, &$Element) {
+    return doApplyHighlighter($Text, [], $Element);
+};
+
+$Parsedown->blockCodeHtml = function($Text, $Attributes, &$Element) {
+    $ClassList = array_filter(explode(' ', $Attributes['class'] ?? ""));
+    return doApplyHighlighter($Text, $ClassList, $Element);
+};
+~~~
+
+### Put `` Attributes on `
` Element
+
+~~~ .php
+$Parsedown->codeAttributesOnParent = true;
+~~~
+
+### Custom Quote Block Class
+
+~~~ .php
+$Parsedown->blockQuoteAttributes = ['class' => 'quote'];
+~~~
+
+~~~ .php
+$Parsedown->blockQuoteAttributes = function($Text, $Attributes, &$Element) {
+    if (strpos($Text, '**Danger:** ') === 0) {
+        return ['class' => 'alert alert-danger'];
+    }
+    if (strpos($Text, '**Info:** ') === 0) {
+        return ['class' => 'alert alert-info'];
+    }
+    return [];
+};
+~~~
+
+### Custom Table Attributes
+
+~~~ .php
+$Parsedown->tableAttributes = ['border' => 1];
+~~~
+
+### Custom Table Alignment Class
+
+~~~ .php
+$Parsedown->tableColumnAttributes = function($Text, $Attributes, &$Element, $Align) {
+    return [
+        'class' => $Align ? 'text-' . $Align : null,
+        'style' => null // Remove inline styles
+    ];
+};
+~~~
+
+### Custom Footnote ID Format
+
+~~~ .php
+$Parsedown->footnoteLinkAttributes = function($Number, $Attributes, &$Element, $Name) {
+    return ['href' => '#to:' . $Name];
+};
+
+$Parsedown->footnoteReferenceAttributes = function($Number, $Attributes, &$Element, $Name, $Index) {
+    return ['id' => 'from:' . $Name . '.' . $Index];
+};
+
+$Parsedown->footnoteBackLinkAttributes = function($Number, $Attributes, &$Element, $Name, $Index) {
+    return ['href' => '#from:' . $Name . '.' . $Index];
+};
+
+$Parsedown->footnoteBackReferenceAttributes = function($Number, $Attributes, &$Element, $Name, $Total) {
+    return ['id' => 'to:' . $Name];
+};
+~~~
+
+### Custom Footnote Class
+
+~~~ .php
+$Parsedown->footnoteAttributes = ['class' => 'notes'];
+~~~
+
+### Custom Footnote Link Text
+
+~~~ .php
+$Parsedown->footnoteLinkHtml = '[%s]';
+~~~
+
+### Custom Footnote Back Link Text
+
+~~~ .php
+$Parsedown->footnoteBackLinkHtml = '';
+~~~
+
+### Advance Attribute Parser
+
+ - `{#foo}` → ``
+ - `{#foo#bar}` → ``
+ - `{.foo}` → ``
+ - `{.foo.bar}` → ``
+ - `{#foo.bar.baz}` → ``
+ - `{#foo .bar .baz}` → `` (white-space before `#` and `.` becomes optional in my extension)
+ - `{foo="bar"}` → ``
+ - `{foo="bar baz"}` → ``
+ - `{foo='bar'}` → ``
+ - `{foo='bar baz'}` → ``
+ - `{foo=bar}` → ``
+ - `{foo=}` → ``
+ - `{foo}` → ``
+ - `{foo=bar baz}` → ``
+ - `{#a#b.c.d e="f" g="h i" j='k' l='m n' o=p q= r s t="u#v.w.x y=z"}` → ``
+
+### Code Block Class Without `language-` Prefix
+
+Dot prefix in class name are now becomes optional, custom attributes syntax also acceptable:
+
+ - `php` → `
`
+ - `php html` → `
`
+ - `.php` → `
`
+ - `.php.html` → `
`
+ - `.php html` → `
`
+ - `{.php #foo}` → `
`
+
+
+Property Aliases as Methods
+---------------------------
+
+Property aliases are available as methods just to follow the way **Parsedown** set its configuration data. It uses PHP `__call` method to generate the class methods automatically:
+
+~~~ .php
+// This is ...
+$Parsedown->setBlockCodeHtml(function() { ... });
+
+// ... equal to this
+$Parsedown->blockCodeHtml = function() { ... };
+~~~
diff --git a/bibli/parsedown-extra/LICENSE.txt b/bibli/parsedown-extra/LICENSE.txt
new file mode 100644
index 0000000..baca86f
--- /dev/null
+++ b/bibli/parsedown-extra/LICENSE.txt
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Emanuil Rusev, erusev.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/bibli/parsedown/ParsedownExtra.php b/bibli/parsedown-extra/ParsedownExtra.php
old mode 100755
new mode 100644
similarity index 59%
rename from bibli/parsedown/ParsedownExtra.php
rename to bibli/parsedown-extra/ParsedownExtra.php
index 632ba84..8cdb5d2
--- a/bibli/parsedown/ParsedownExtra.php
+++ b/bibli/parsedown-extra/ParsedownExtra.php
@@ -17,13 +17,13 @@ class ParsedownExtra extends Parsedown
 {
     # ~
 
-    const version = '0.8.1';
+    const version = '0.8.0';
 
     # ~
 
     function __construct()
     {
-        if (version_compare(parent::version, '1.7.4') < 0)
+        if (version_compare(parent::version, '1.7.1') < 0)
         {
             throw new Exception('ParsedownExtra requires a later version of Parsedown');
         }
@@ -43,7 +43,13 @@ class ParsedownExtra extends Parsedown
 
     function text($text)
     {
-        $markup = parent::text($text);
+        $Elements = $this->textElements($text);
+
+        # convert to markup
+        $markup = $this->elements($Elements);
+
+        # trim line breaks
+        $markup = trim($markup, "\n");
 
         # merge consecutive dl elements
 
@@ -139,25 +145,27 @@ class ParsedownExtra extends Parsedown
 
     protected function blockDefinitionList($Line, $Block)
     {
-        if ( ! isset($Block) or isset($Block['type']))
+        if ( ! isset($Block) or $Block['type'] !== 'Paragraph')
         {
             return;
         }
 
         $Element = array(
             'name' => 'dl',
-            'handler' => 'elements',
-            'text' => array(),
+            'elements' => array(),
         );
 
-        $terms = explode("\n", $Block['element']['text']);
+        $terms = explode("\n", $Block['element']['handler']['argument']);
 
         foreach ($terms as $term)
         {
-            $Element['text'] []= array(
+            $Element['elements'] []= array(
                 'name' => 'dt',
-                'handler' => 'line',
-                'text' => $term,
+                'handler' => array(
+                    'function' => 'lineElements',
+                    'argument' => $term,
+                    'destination' => 'elements'
+                ),
             );
         }
 
@@ -185,15 +193,17 @@ class ParsedownExtra extends Parsedown
 
             if (isset($Block['interrupted']))
             {
-                $Block['dd']['handler'] = 'text';
-                $Block['dd']['text'] .= "\n\n";
+                $Block['dd']['handler']['function'] = 'textElements';
+                $Block['dd']['handler']['argument'] .= "\n\n";
+
+                $Block['dd']['handler']['destination'] = 'elements';
 
                 unset($Block['interrupted']);
             }
 
             $text = substr($Line['body'], min($Line['indent'], 4));
 
-            $Block['dd']['text'] .= "\n" . $text;
+            $Block['dd']['handler']['argument'] .= "\n" . $text;
 
             return $Block;
         }
@@ -206,17 +216,13 @@ class ParsedownExtra extends Parsedown
     {
         $Block = parent::blockHeader($Line);
 
-        if (! isset($Block)) {
-            return null;
-        }
-
-        if (preg_match('/[ #]*{('.$this->regexAttribute.'+)}[ ]*$/', $Block['element']['text'], $matches, PREG_OFFSET_CAPTURE))
+        if ($Block !== null && preg_match('/[ #]*{('.$this->regexAttribute.'+)}[ ]*$/', $Block['element']['handler']['argument'], $matches, PREG_OFFSET_CAPTURE))
         {
             $attributeString = $matches[1][0];
 
             $Block['element']['attributes'] = $this->parseAttributeData($attributeString);
 
-            $Block['element']['text'] = substr($Block['element']['text'], 0, $matches[0][1]);
+            $Block['element']['handler']['argument'] = substr($Block['element']['handler']['argument'], 0, $matches[0][1]);
         }
 
         return $Block;
@@ -225,11 +231,98 @@ class ParsedownExtra extends Parsedown
     #
     # Markup
 
+    protected function blockMarkup($Line)
+    {
+        if ($this->markupEscaped or $this->safeMode)
+        {
+            return;
+        }
+
+        if (preg_match('/^<(\w[\w-]*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches))
+        {
+            $element = strtolower($matches[1]);
+
+            if (in_array($element, $this->textLevelElements))
+            {
+                return;
+            }
+
+            $Block = array(
+                'name' => $matches[1],
+                'depth' => 0,
+                'element' => array(
+                    'rawHtml' => $Line['text'],
+                    'autobreak' => true,
+                ),
+            );
+
+            $length = strlen($matches[0]);
+            $remainder = substr($Line['text'], $length);
+
+            if (trim($remainder) === '')
+            {
+                if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
+                {
+                    $Block['closed'] = true;
+                    $Block['void'] = true;
+                }
+            }
+            else
+            {
+                if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
+                {
+                    return;
+                }
+                if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder))
+                {
+                    $Block['closed'] = true;
+                }
+            }
+
+            return $Block;
+        }
+    }
+
+    protected function blockMarkupContinue($Line, array $Block)
+    {
+        if (isset($Block['closed']))
+        {
+            return;
+        }
+
+        if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open
+        {
+            $Block['depth'] ++;
+        }
+
+        if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close
+        {
+            if ($Block['depth'] > 0)
+            {
+                $Block['depth'] --;
+            }
+            else
+            {
+                $Block['closed'] = true;
+            }
+        }
+
+        if (isset($Block['interrupted']))
+        {
+            $Block['element']['rawHtml'] .= "\n";
+            unset($Block['interrupted']);
+        }
+
+        $Block['element']['rawHtml'] .= "\n".$Line['body'];
+
+        return $Block;
+    }
+
     protected function blockMarkupComplete($Block)
     {
         if ( ! isset($Block['void']))
         {
-            $Block['markup'] = $this->processTag($Block['markup']);
+            $Block['element']['rawHtml'] = $this->processTag($Block['element']['rawHtml']);
         }
 
         return $Block;
@@ -242,17 +335,13 @@ class ParsedownExtra extends Parsedown
     {
         $Block = parent::blockSetextHeader($Line, $Block);
 
-        if (! isset($Block)) {
-            return null;
-        }
-
-        if (preg_match('/[ ]*{('.$this->regexAttribute.'+)}[ ]*$/', $Block['element']['text'], $matches, PREG_OFFSET_CAPTURE))
+        if ($Block !== null && preg_match('/[ ]*{('.$this->regexAttribute.'+)}[ ]*$/', $Block['element']['handler']['argument'], $matches, PREG_OFFSET_CAPTURE))
         {
             $attributeString = $matches[1][0];
 
             $Block['element']['attributes'] = $this->parseAttributeData($attributeString);
 
-            $Block['element']['text'] = substr($Block['element']['text'], 0, $matches[0][1]);
+            $Block['element']['handler']['argument'] = substr($Block['element']['handler']['argument'], 0, $matches[0][1]);
         }
 
         return $Block;
@@ -286,8 +375,7 @@ class ParsedownExtra extends Parsedown
             $Element = array(
                 'name' => 'sup',
                 'attributes' => array('id' => 'fnref'.$this->DefinitionData['Footnote'][$name]['count'].':'.$name),
-                'handler' => 'element',
-                'text' => array(
+                'element' => array(
                     'name' => 'a',
                     'attributes' => array('href' => '#fn:'.$name, 'class' => 'footnote-ref'),
                     'text' => $this->DefinitionData['Footnote'][$name]['number'],
@@ -310,11 +398,7 @@ class ParsedownExtra extends Parsedown
     {
         $Link = parent::inlineLink($Excerpt);
 
-        if (! isset($Link)) {
-            return null;
-        }
-
-        $remainder = substr($Excerpt['text'], $Link['extent']);
+        $remainder = $Link !== null ? substr($Excerpt['text'], $Link['extent']) : '';
 
         if (preg_match('/^[ ]*{('.$this->regexAttribute.'+)}/', $remainder, $matches))
         {
@@ -330,21 +414,52 @@ class ParsedownExtra extends Parsedown
     # ~
     #
 
-    protected function unmarkedText($text)
+    private $currentAbreviation;
+    private $currentMeaning;
+
+    protected function insertAbreviation(array $Element)
     {
-        $text = parent::unmarkedText($text);
+        if (isset($Element['text']))
+        {
+            $Element['elements'] = self::pregReplaceElements(
+                '/\b'.preg_quote($this->currentAbreviation, '/').'\b/',
+                array(
+                    array(
+                        'name' => 'abbr',
+                        'attributes' => array(
+                            'title' => $this->currentMeaning,
+                        ),
+                        'text' => $this->currentAbreviation,
+                    )
+                ),
+                $Element['text']
+            );
+
+            unset($Element['text']);
+        }
+
+        return $Element;
+    }
+
+    protected function inlineText($text)
+    {
+        $Inline = parent::inlineText($text);
 
         if (isset($this->DefinitionData['Abbreviation']))
         {
             foreach ($this->DefinitionData['Abbreviation'] as $abbreviation => $meaning)
             {
-                $pattern = '/\b'.preg_quote($abbreviation, '/').'\b/';
+                $this->currentAbreviation = $abbreviation;
+                $this->currentMeaning = $meaning;
 
-                $text = preg_replace($pattern, ''.$abbreviation.'', $text);
+                $Inline['element'] = $this->elementApplyRecursiveDepthFirst(
+                    array($this, 'insertAbreviation'),
+                    $Inline['element']
+                );
             }
         }
 
-        return $text;
+        return $Inline;
     }
 
     #
@@ -360,18 +475,21 @@ class ParsedownExtra extends Parsedown
 
         $Block['dd'] = array(
             'name' => 'dd',
-            'handler' => 'line',
-            'text' => $text,
+            'handler' => array(
+                'function' => 'lineElements',
+                'argument' => $text,
+                'destination' => 'elements'
+            ),
         );
 
         if (isset($Block['interrupted']))
         {
-            $Block['dd']['handler'] = 'text';
+            $Block['dd']['handler']['function'] = 'textElements';
 
             unset($Block['interrupted']);
         }
 
-        $Block['element']['text'] []= & $Block['dd'];
+        $Block['element']['elements'] []= & $Block['dd'];
 
         return $Block;
     }
@@ -381,15 +499,11 @@ class ParsedownExtra extends Parsedown
         $Element = array(
             'name' => 'div',
             'attributes' => array('class' => 'footnotes'),
-            'handler' => 'elements',
-            'text' => array(
-                array(
-                    'name' => 'hr',
-                ),
+            'elements' => array(
+                array('name' => 'hr'),
                 array(
                     'name' => 'ol',
-                    'handler' => 'elements',
-                    'text' => array(),
+                    'elements' => array(),
                 ),
             ),
         );
@@ -405,34 +519,68 @@ class ParsedownExtra extends Parsedown
 
             $text = $DefinitionData['text'];
 
-            $text = parent::text($text);
+            $textElements = parent::textElements($text);
 
             $numbers = range(1, $DefinitionData['count']);
 
-            $backLinksMarkup = '';
+            $backLinkElements = array();
 
             foreach ($numbers as $number)
             {
-                $backLinksMarkup .= ' ';
+                $backLinkElements[] = array('text' => ' ');
+                $backLinkElements[] = array(
+                    'name' => 'a',
+                    'attributes' => array(
+                        'href' => "#fnref$number:$definitionId",
+                        'rev' => 'footnote',
+                        'class' => 'footnote-backref',
+                    ),
+                    'rawHtml' => '↩',
+                    'allowRawHtmlInSafeMode' => true,
+                    'autobreak' => false,
+                );
             }
 
-            $backLinksMarkup = substr($backLinksMarkup, 1);
+            unset($backLinkElements[0]);
 
-            if (substr($text, - 4) === '

') + $n = count($textElements) -1; + + if ($textElements[$n]['name'] === 'p') { - $backLinksMarkup = ' '.$backLinksMarkup; + $backLinkElements = array_merge( + array( + array( + 'rawHtml' => ' ', + 'allowRawHtmlInSafeMode' => true, + ), + ), + $backLinkElements + ); - $text = substr_replace($text, $backLinksMarkup.'

', - 4); + unset($textElements[$n]['name']); + + $textElements[$n] = array( + 'name' => 'p', + 'elements' => array_merge( + array($textElements[$n]), + $backLinkElements + ), + ); } else { - $text .= "\n".'

'.$backLinksMarkup.'

'; + $textElements[] = array( + 'name' => 'p', + 'elements' => $backLinkElements + ); } - $Element['text'][1]['text'] []= array( + $Element['elements'][1]['elements'] []= array( 'name' => 'li', 'attributes' => array('id' => 'fn:'.$definitionId), - 'rawHtml' => "\n".$text."\n", + 'elements' => array_merge( + $textElements + ), ); } diff --git a/bibli/parsedown-extra/README.md b/bibli/parsedown-extra/README.md new file mode 100644 index 0000000..cee4b54 --- /dev/null +++ b/bibli/parsedown-extra/README.md @@ -0,0 +1,31 @@ +> You might also like [Caret](http://caret.io?ref=parsedown) - our Markdown editor for the Desktop. + +## Parsedown Extra + +[![Build Status](https://img.shields.io/travis/erusev/parsedown-extra/master.svg?style=flat-square)](https://travis-ci.org/erusev/parsedown-extra) + +An extension of [Parsedown](http://parsedown.org) that adds support for [Markdown Extra](https://michelf.ca/projects/php-markdown/extra/). + +[See Demo](http://parsedown.org/extra/) + +### Installation + +Include both `Parsedown.php` and `ParsedownExtra.php` or install [the composer package](https://packagist.org/packages/erusev/parsedown-extra). + +### Example + +``` php +$Extra = new ParsedownExtra(); + +echo $Extra->text('# Header {.sth}'); # prints:

Header

+``` + +### Questions + +**Who uses Parsedown Extra?** + +[October CMS](http://octobercms.com/), [Bolt CMS](http://bolt.cm/), [Kirby CMS](http://getkirby.com/), [Grav CMS](http://getgrav.org/), [Statamic CMS](http://www.statamic.com/) and [more](https://www.versioneye.com/php/erusev:parsedown-extra/references). + +**How can I help?** + +Use it, star it, share it and in case you feel generous, [donate some money](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2). diff --git a/bibli/parsedown/Parsedown.php b/bibli/parsedown/Parsedown.php index 1b9d6d5..ae0cbde 100755 --- a/bibli/parsedown/Parsedown.php +++ b/bibli/parsedown/Parsedown.php @@ -17,11 +17,24 @@ class Parsedown { # ~ - const version = '1.7.4'; + const version = '1.8.0-beta-7'; # ~ function text($text) + { + $Elements = $this->textElements($text); + + # convert to markup + $markup = $this->elements($Elements); + + # trim line breaks + $markup = trim($markup, "\n"); + + return $markup; + } + + protected function textElements($text) { # make sure no definitions are set $this->DefinitionData = array(); @@ -36,12 +49,7 @@ class Parsedown $lines = explode("\n", $text); # iterate through lines to identify blocks - $markup = $this->lines($lines); - - # trim line breaks - $markup = trim($markup, "\n"); - - return $markup; + return $this->linesElements($lines); } # @@ -84,12 +92,22 @@ class Parsedown protected $safeMode; + function setStrictMode($strictMode) + { + $this->strictMode = (bool) $strictMode; + + return $this; + } + + protected $strictMode; + protected $safeLinksWhitelist = array( 'http://', 'https://', 'ftp://', 'ftps://', 'mailto:', + 'tel:', 'data:image/png;base64,', 'data:image/gif;base64,', 'data:image/jpeg;base64,', @@ -143,6 +161,12 @@ class Parsedown protected function lines(array $lines) { + return $this->elements($this->linesElements($lines)); + } + + protected function linesElements(array $lines) + { + $Elements = array(); $CurrentBlock = null; foreach ($lines as $line) @@ -151,35 +175,25 @@ class Parsedown { if (isset($CurrentBlock)) { - $CurrentBlock['interrupted'] = true; + $CurrentBlock['interrupted'] = (isset($CurrentBlock['interrupted']) + ? $CurrentBlock['interrupted'] + 1 : 1 + ); } continue; } - if (strpos($line, "\t") !== false) + while (($beforeTab = strstr($line, "\t", true)) !== false) { - $parts = explode("\t", $line); + $shortage = 4 - mb_strlen($beforeTab, 'utf-8') % 4; - $line = $parts[0]; - - unset($parts[0]); - - foreach ($parts as $part) - { - $shortage = 4 - mb_strlen($line, 'utf-8') % 4; - - $line .= str_repeat(' ', $shortage); - $line .= $part; - } + $line = $beforeTab + . str_repeat(' ', $shortage) + . substr($line, strlen($beforeTab) + 1) + ; } - $indent = 0; - - while (isset($line[$indent]) and $line[$indent] === ' ') - { - $indent ++; - } + $indent = strspn($line, ' '); $text = $indent > 0 ? substr($line, $indent) : $line; @@ -191,7 +205,8 @@ class Parsedown if (isset($CurrentBlock['continuable'])) { - $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock); + $methodName = 'block' . $CurrentBlock['type'] . 'Continue'; + $Block = $this->$methodName($Line, $CurrentBlock); if (isset($Block)) { @@ -203,7 +218,8 @@ class Parsedown { if ($this->isBlockCompletable($CurrentBlock['type'])) { - $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + $methodName = 'block' . $CurrentBlock['type'] . 'Complete'; + $CurrentBlock = $this->$methodName($CurrentBlock); } } } @@ -229,7 +245,7 @@ class Parsedown foreach ($blockTypes as $blockType) { - $Block = $this->{'block'.$blockType}($Line, $CurrentBlock); + $Block = $this->{"block$blockType"}($Line, $CurrentBlock); if (isset($Block)) { @@ -237,7 +253,10 @@ class Parsedown if ( ! isset($Block['identified'])) { - $Blocks []= $CurrentBlock; + if (isset($CurrentBlock)) + { + $Elements[] = $this->extractElement($CurrentBlock); + } $Block['identified'] = true; } @@ -255,13 +274,21 @@ class Parsedown # ~ - if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted'])) + if (isset($CurrentBlock) and $CurrentBlock['type'] === 'Paragraph') { - $CurrentBlock['element']['text'] .= "\n".$text; + $Block = $this->paragraphContinue($Line, $CurrentBlock); + } + + if (isset($Block)) + { + $CurrentBlock = $Block; } else { - $Blocks []= $CurrentBlock; + if (isset($CurrentBlock)) + { + $Elements[] = $this->extractElement($CurrentBlock); + } $CurrentBlock = $this->paragraph($Line); @@ -273,45 +300,47 @@ class Parsedown if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type'])) { - $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + $methodName = 'block' . $CurrentBlock['type'] . 'Complete'; + $CurrentBlock = $this->$methodName($CurrentBlock); } # ~ - $Blocks []= $CurrentBlock; - - unset($Blocks[0]); - - # ~ - - $markup = ''; - - foreach ($Blocks as $Block) + if (isset($CurrentBlock)) { - if (isset($Block['hidden'])) - { - continue; - } - - $markup .= "\n"; - $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']); + $Elements[] = $this->extractElement($CurrentBlock); } - $markup .= "\n"; - # ~ - return $markup; + return $Elements; + } + + protected function extractElement(array $Component) + { + if ( ! isset($Component['element'])) + { + if (isset($Component['markup'])) + { + $Component['element'] = array('rawHtml' => $Component['markup']); + } + elseif (isset($Component['hidden'])) + { + $Component['element'] = array(); + } + } + + return $Component['element']; } protected function isBlockContinuable($Type) { - return method_exists($this, 'block'.$Type.'Continue'); + return method_exists($this, 'block' . $Type . 'Continue'); } protected function isBlockCompletable($Type) { - return method_exists($this, 'block'.$Type.'Complete'); + return method_exists($this, 'block' . $Type . 'Complete'); } # @@ -319,7 +348,7 @@ class Parsedown protected function blockCode($Line, $Block = null) { - if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted'])) + if (isset($Block) and $Block['type'] === 'Paragraph' and ! isset($Block['interrupted'])) { return; } @@ -331,8 +360,7 @@ class Parsedown $Block = array( 'element' => array( 'name' => 'pre', - 'handler' => 'element', - 'text' => array( + 'element' => array( 'name' => 'code', 'text' => $text, ), @@ -349,16 +377,16 @@ class Parsedown { if (isset($Block['interrupted'])) { - $Block['element']['text']['text'] .= "\n"; + $Block['element']['element']['text'] .= str_repeat("\n", $Block['interrupted']); unset($Block['interrupted']); } - $Block['element']['text']['text'] .= "\n"; + $Block['element']['element']['text'] .= "\n"; $text = substr($Line['body'], 4); - $Block['element']['text']['text'] .= $text; + $Block['element']['element']['text'] .= $text; return $Block; } @@ -366,10 +394,6 @@ class Parsedown protected function blockCodeComplete($Block) { - $text = $Block['element']['text']['text']; - - $Block['element']['text']['text'] = $text; - return $Block; } @@ -383,13 +407,16 @@ class Parsedown return; } - if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!') + if (strpos($Line['text'], '$/', $Line['text'])) + if (strpos($Line['text'], '-->') !== false) { $Block['closed'] = true; } @@ -405,9 +432,9 @@ class Parsedown return; } - $Block['markup'] .= "\n" . $Line['body']; + $Block['element']['rawHtml'] .= "\n" . $Line['body']; - if (preg_match('/-->$/', $Line['text'])) + if (strpos($Line['text'], '-->') !== false) { $Block['closed'] = true; } @@ -420,47 +447,56 @@ class Parsedown protected function blockFencedCode($Line) { - if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([^`]+)?[ ]*$/', $Line['text'], $matches)) + $marker = $Line['text'][0]; + + $openerLength = strspn($Line['text'], $marker); + + if ($openerLength < 3) { - $Element = array( - 'name' => 'code', - 'text' => '', - ); - - if (isset($matches[1])) - { - /** - * https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#classes - * Every HTML element may have a class attribute specified. - * The attribute, if specified, must have a value that is a set - * of space-separated tokens representing the various classes - * that the element belongs to. - * [...] - * The space characters, for the purposes of this specification, - * are U+0020 SPACE, U+0009 CHARACTER TABULATION (tab), - * U+000A LINE FEED (LF), U+000C FORM FEED (FF), and - * U+000D CARRIAGE RETURN (CR). - */ - $language = substr($matches[1], 0, strcspn($matches[1], " \t\n\f\r")); - - $class = 'language-'.$language; - - $Element['attributes'] = array( - 'class' => $class, - ); - } - - $Block = array( - 'char' => $Line['text'][0], - 'element' => array( - 'name' => 'pre', - 'handler' => 'element', - 'text' => $Element, - ), - ); - - return $Block; + return; } + + $infostring = trim(substr($Line['text'], $openerLength), "\t "); + + if (strpos($infostring, '`') !== false) + { + return; + } + + $Element = array( + 'name' => 'code', + 'text' => '', + ); + + if ($infostring !== '') + { + /** + * https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#classes + * Every HTML element may have a class attribute specified. + * The attribute, if specified, must have a value that is a set + * of space-separated tokens representing the various classes + * that the element belongs to. + * [...] + * The space characters, for the purposes of this specification, + * are U+0020 SPACE, U+0009 CHARACTER TABULATION (tab), + * U+000A LINE FEED (LF), U+000C FORM FEED (FF), and + * U+000D CARRIAGE RETURN (CR). + */ + $language = substr($infostring, 0, strcspn($infostring, " \t\n\f\r")); + + $Element['attributes'] = array('class' => "language-$language"); + } + + $Block = array( + 'char' => $marker, + 'openerLength' => $openerLength, + 'element' => array( + 'name' => 'pre', + 'element' => $Element, + ), + ); + + return $Block; } protected function blockFencedCodeContinue($Line, $Block) @@ -472,31 +508,28 @@ class Parsedown if (isset($Block['interrupted'])) { - $Block['element']['text']['text'] .= "\n"; + $Block['element']['element']['text'] .= str_repeat("\n", $Block['interrupted']); unset($Block['interrupted']); } - if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text'])) - { - $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1); + if (($len = strspn($Line['text'], $Block['char'])) >= $Block['openerLength'] + and chop(substr($Line['text'], $len), ' ') === '' + ) { + $Block['element']['element']['text'] = substr($Block['element']['element']['text'], 1); $Block['complete'] = true; return $Block; } - $Block['element']['text']['text'] .= "\n".$Line['body']; + $Block['element']['element']['text'] .= "\n" . $Line['body']; return $Block; } protected function blockFencedCodeComplete($Block) { - $text = $Block['element']['text']['text']; - - $Block['element']['text']['text'] = $text; - return $Block; } @@ -505,71 +538,103 @@ class Parsedown protected function blockHeader($Line) { - if (isset($Line['text'][1])) + $level = strspn($Line['text'], '#'); + + if ($level > 6) { - $level = 1; - - while (isset($Line['text'][$level]) and $Line['text'][$level] === '#') - { - $level ++; - } - - if ($level > 6) - { - return; - } - - $text = trim($Line['text'], '# '); - - $Block = array( - 'element' => array( - 'name' => 'h' . min(6, $level), - 'text' => $text, - 'handler' => 'line', - ), - ); - - return $Block; + return; } + + $text = trim($Line['text'], '#'); + + if ($this->strictMode and isset($text[0]) and $text[0] !== ' ') + { + return; + } + + $text = trim($text, ' '); + + $Block = array( + 'element' => array( + 'name' => 'h' . $level, + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $text, + 'destination' => 'elements', + ) + ), + ); + + return $Block; } # # List - protected function blockList($Line) + protected function blockList($Line, array $CurrentBlock = null) { - list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]'); + list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]{1,9}+[.\)]'); - if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches)) + if (preg_match('/^('.$pattern.'([ ]++|$))(.*+)/', $Line['text'], $matches)) { + $contentIndent = strlen($matches[2]); + + if ($contentIndent >= 5) + { + $contentIndent -= 1; + $matches[1] = substr($matches[1], 0, -$contentIndent); + $matches[3] = str_repeat(' ', $contentIndent) . $matches[3]; + } + elseif ($contentIndent === 0) + { + $matches[1] .= ' '; + } + + $markerWithoutWhitespace = strstr($matches[1], ' ', true); + $Block = array( 'indent' => $Line['indent'], 'pattern' => $pattern, + 'data' => array( + 'type' => $name, + 'marker' => $matches[1], + 'markerType' => ($name === 'ul' ? $markerWithoutWhitespace : substr($markerWithoutWhitespace, -1)), + ), 'element' => array( 'name' => $name, - 'handler' => 'elements', + 'elements' => array(), ), ); + $Block['data']['markerTypeRegex'] = preg_quote($Block['data']['markerType'], '/'); - if($name === 'ol') + if ($name === 'ol') { - $listStart = stristr($matches[0], '.', true); + $listStart = ltrim(strstr($matches[1], $Block['data']['markerType'], true), '0') ?: '0'; - if($listStart !== '1') + if ($listStart !== '1') { + if ( + isset($CurrentBlock) + and $CurrentBlock['type'] === 'Paragraph' + and ! isset($CurrentBlock['interrupted']) + ) { + return; + } + $Block['element']['attributes'] = array('start' => $listStart); } } $Block['li'] = array( 'name' => 'li', - 'handler' => 'li', - 'text' => array( - $matches[2], - ), + 'handler' => array( + 'function' => 'li', + 'argument' => !empty($matches[3]) ? array($matches[3]) : array(), + 'destination' => 'elements' + ) ); - $Block['element']['text'] []= & $Block['li']; + $Block['element']['elements'] []= & $Block['li']; return $Block; } @@ -577,11 +642,27 @@ class Parsedown protected function blockListContinue($Line, array $Block) { - if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches)) + if (isset($Block['interrupted']) and empty($Block['li']['handler']['argument'])) { + return null; + } + + $requiredIndent = ($Block['indent'] + strlen($Block['data']['marker'])); + + if ($Line['indent'] < $requiredIndent + and ( + ( + $Block['data']['type'] === 'ol' + and preg_match('/^[0-9]++'.$Block['data']['markerTypeRegex'].'(?:[ ]++(.*)|$)/', $Line['text'], $matches) + ) or ( + $Block['data']['type'] === 'ul' + and preg_match('/^'.$Block['data']['markerTypeRegex'].'(?:[ ]++(.*)|$)/', $Line['text'], $matches) + ) + ) + ) { if (isset($Block['interrupted'])) { - $Block['li']['text'] []= ''; + $Block['li']['handler']['argument'] []= ''; $Block['loose'] = true; @@ -592,42 +673,54 @@ class Parsedown $text = isset($matches[1]) ? $matches[1] : ''; + $Block['indent'] = $Line['indent']; + $Block['li'] = array( 'name' => 'li', - 'handler' => 'li', - 'text' => array( - $text, - ), + 'handler' => array( + 'function' => 'li', + 'argument' => array($text), + 'destination' => 'elements' + ) ); - $Block['element']['text'] []= & $Block['li']; + $Block['element']['elements'] []= & $Block['li']; return $Block; } + elseif ($Line['indent'] < $requiredIndent and $this->blockList($Line)) + { + return null; + } if ($Line['text'][0] === '[' and $this->blockReference($Line)) { return $Block; } - if ( ! isset($Block['interrupted'])) + if ($Line['indent'] >= $requiredIndent) { - $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + if (isset($Block['interrupted'])) + { + $Block['li']['handler']['argument'] []= ''; - $Block['li']['text'] []= $text; + $Block['loose'] = true; + + unset($Block['interrupted']); + } + + $text = substr($Line['body'], $requiredIndent); + + $Block['li']['handler']['argument'] []= $text; return $Block; } - if ($Line['indent'] > 0) + if ( ! isset($Block['interrupted'])) { - $Block['li']['text'] []= ''; + $text = preg_replace('/^[ ]{0,'.$requiredIndent.'}+/', '', $Line['body']); - $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); - - $Block['li']['text'] []= $text; - - unset($Block['interrupted']); + $Block['li']['handler']['argument'] []= $text; return $Block; } @@ -637,11 +730,11 @@ class Parsedown { if (isset($Block['loose'])) { - foreach ($Block['element']['text'] as &$li) + foreach ($Block['element']['elements'] as &$li) { - if (end($li['text']) !== '') + if (end($li['handler']['argument']) !== '') { - $li['text'] []= ''; + $li['handler']['argument'] []= ''; } } } @@ -654,13 +747,16 @@ class Parsedown protected function blockQuote($Line) { - if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + if (preg_match('/^>[ ]?+(.*+)/', $Line['text'], $matches)) { $Block = array( 'element' => array( 'name' => 'blockquote', - 'handler' => 'lines', - 'text' => (array) $matches[1], + 'handler' => array( + 'function' => 'linesElements', + 'argument' => (array) $matches[1], + 'destination' => 'elements', + ) ), ); @@ -670,23 +766,21 @@ class Parsedown protected function blockQuoteContinue($Line, array $Block) { - if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + if (isset($Block['interrupted'])) { - if (isset($Block['interrupted'])) - { - $Block['element']['text'] []= ''; + return; + } - unset($Block['interrupted']); - } - - $Block['element']['text'] []= $matches[1]; + if ($Line['text'][0] === '>' and preg_match('/^>[ ]?+(.*+)/', $Line['text'], $matches)) + { + $Block['element']['handler']['argument'] []= $matches[1]; return $Block; } if ( ! isset($Block['interrupted'])) { - $Block['element']['text'] []= $Line['text']; + $Block['element']['handler']['argument'] []= $Line['text']; return $Block; } @@ -697,11 +791,13 @@ class Parsedown protected function blockRule($Line) { - if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text'])) + $marker = $Line['text'][0]; + + if (substr_count($Line['text'], $marker) >= 3 and chop($Line['text'], " $marker") === '') { $Block = array( 'element' => array( - 'name' => 'hr' + 'name' => 'hr', ), ); @@ -714,12 +810,12 @@ class Parsedown protected function blockSetextHeader($Line, array $Block = null) { - if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + if ( ! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted'])) { return; } - if (chop($Line['text'], $Line['text'][0]) === '') + if ($Line['indent'] < 4 and chop(chop($Line['text'], ' '), $Line['text'][0]) === '') { $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2'; @@ -737,7 +833,7 @@ class Parsedown return; } - if (preg_match('/^<(\w[\w-]*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches)) + if (preg_match('/^<[\/]?+(\w*)(?:[ ]*+'.$this->regexHtmlAttribute.')*+[ ]*+(\/)?>/', $Line['text'], $matches)) { $element = strtolower($matches[1]); @@ -748,72 +844,24 @@ class Parsedown $Block = array( 'name' => $matches[1], - 'depth' => 0, - 'markup' => $Line['text'], + 'element' => array( + 'rawHtml' => $Line['text'], + 'autobreak' => true, + ), ); - $length = strlen($matches[0]); - - $remainder = substr($Line['text'], $length); - - if (trim($remainder) === '') - { - if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) - { - $Block['closed'] = true; - - $Block['void'] = true; - } - } - else - { - if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) - { - return; - } - - if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder)) - { - $Block['closed'] = true; - } - } - return $Block; } } protected function blockMarkupContinue($Line, array $Block) { - if (isset($Block['closed'])) + if (isset($Block['closed']) or isset($Block['interrupted'])) { return; } - if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open - { - $Block['depth'] ++; - } - - if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close - { - if ($Block['depth'] > 0) - { - $Block['depth'] --; - } - else - { - $Block['closed'] = true; - } - } - - if (isset($Block['interrupted'])) - { - $Block['markup'] .= "\n"; - - unset($Block['interrupted']); - } - - $Block['markup'] .= "\n".$Line['body']; + $Block['element']['rawHtml'] .= "\n" . $Line['body']; return $Block; } @@ -823,24 +871,20 @@ class Parsedown protected function blockReference($Line) { - if (preg_match('/^\[(.+?)\]:[ ]*?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches)) - { + if (strpos($Line['text'], ']') !== false + and preg_match('/^\[(.+?)\]:[ ]*+?(?:[ ]+["\'(](.+)["\')])?[ ]*+$/', $Line['text'], $matches) + ) { $id = strtolower($matches[1]); $Data = array( 'url' => $matches[2], - 'title' => null, + 'title' => isset($matches[3]) ? $matches[3] : null, ); - if (isset($matches[3])) - { - $Data['title'] = $matches[3]; - } - $this->DefinitionData['Reference'][$id] = $Data; $Block = array( - 'hidden' => true, + 'element' => array(), ); return $Block; @@ -852,109 +896,125 @@ class Parsedown protected function blockTable($Line, array $Block = null) { - if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + if ( ! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted'])) { return; } - if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '') - { - $alignments = array(); - - $divider = $Line['text']; - - $divider = trim($divider); - $divider = trim($divider, '|'); - - $dividerCells = explode('|', $divider); - - foreach ($dividerCells as $dividerCell) - { - $dividerCell = trim($dividerCell); - - if ($dividerCell === '') - { - continue; - } - - $alignment = null; - - if ($dividerCell[0] === ':') - { - $alignment = 'left'; - } - - if (substr($dividerCell, - 1) === ':') - { - $alignment = $alignment === 'left' ? 'center' : 'right'; - } - - $alignments []= $alignment; - } - - # ~ - - $HeaderElements = array(); - - $header = $Block['element']['text']; - - $header = trim($header); - $header = trim($header, '|'); - - $headerCells = explode('|', $header); - - foreach ($headerCells as $index => $headerCell) - { - $headerCell = trim($headerCell); - - $HeaderElement = array( - 'name' => 'th', - 'text' => $headerCell, - 'handler' => 'line', - ); - - if (isset($alignments[$index])) - { - $alignment = $alignments[$index]; - - $HeaderElement['attributes'] = array( - 'style' => 'text-align: '.$alignment.';', - ); - } - - $HeaderElements []= $HeaderElement; - } - - # ~ - - $Block = array( - 'alignments' => $alignments, - 'identified' => true, - 'element' => array( - 'name' => 'table', - 'handler' => 'elements', - ), - ); - - $Block['element']['text'] []= array( - 'name' => 'thead', - 'handler' => 'elements', - ); - - $Block['element']['text'] []= array( - 'name' => 'tbody', - 'handler' => 'elements', - 'text' => array(), - ); - - $Block['element']['text'][0]['text'] []= array( - 'name' => 'tr', - 'handler' => 'elements', - 'text' => $HeaderElements, - ); - - return $Block; + if ( + strpos($Block['element']['handler']['argument'], '|') === false + and strpos($Line['text'], '|') === false + and strpos($Line['text'], ':') === false + or strpos($Block['element']['handler']['argument'], "\n") !== false + ) { + return; } + + if (chop($Line['text'], ' -:|') !== '') + { + return; + } + + $alignments = array(); + + $divider = $Line['text']; + + $divider = trim($divider); + $divider = trim($divider, '|'); + + $dividerCells = explode('|', $divider); + + foreach ($dividerCells as $dividerCell) + { + $dividerCell = trim($dividerCell); + + if ($dividerCell === '') + { + return; + } + + $alignment = null; + + if ($dividerCell[0] === ':') + { + $alignment = 'left'; + } + + if (substr($dividerCell, - 1) === ':') + { + $alignment = $alignment === 'left' ? 'center' : 'right'; + } + + $alignments []= $alignment; + } + + # ~ + + $HeaderElements = array(); + + $header = $Block['element']['handler']['argument']; + + $header = trim($header); + $header = trim($header, '|'); + + $headerCells = explode('|', $header); + + if (count($headerCells) !== count($alignments)) + { + return; + } + + foreach ($headerCells as $index => $headerCell) + { + $headerCell = trim($headerCell); + + $HeaderElement = array( + 'name' => 'th', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $headerCell, + 'destination' => 'elements', + ) + ); + + if (isset($alignments[$index])) + { + $alignment = $alignments[$index]; + + $HeaderElement['attributes'] = array( + 'style' => "text-align: $alignment;", + ); + } + + $HeaderElements []= $HeaderElement; + } + + # ~ + + $Block = array( + 'alignments' => $alignments, + 'identified' => true, + 'element' => array( + 'name' => 'table', + 'elements' => array(), + ), + ); + + $Block['element']['elements'] []= array( + 'name' => 'thead', + ); + + $Block['element']['elements'] []= array( + 'name' => 'tbody', + 'elements' => array(), + ); + + $Block['element']['elements'][0]['elements'] []= array( + 'name' => 'tr', + 'elements' => $HeaderElements, + ); + + return $Block; } protected function blockTableContinue($Line, array $Block) @@ -964,7 +1024,7 @@ class Parsedown return; } - if ($Line['text'][0] === '|' or strpos($Line['text'], '|')) + if (count($Block['alignments']) === 1 or $Line['text'][0] === '|' or strpos($Line['text'], '|')) { $Elements = array(); @@ -973,22 +1033,27 @@ class Parsedown $row = trim($row); $row = trim($row, '|'); - preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches); + preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]++`|`)++/', $row, $matches); - foreach ($matches[0] as $index => $cell) + $cells = array_slice($matches[0], 0, count($Block['alignments'])); + + foreach ($cells as $index => $cell) { $cell = trim($cell); $Element = array( 'name' => 'td', - 'handler' => 'line', - 'text' => $cell, + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $cell, + 'destination' => 'elements', + ) ); if (isset($Block['alignments'][$index])) { $Element['attributes'] = array( - 'style' => 'text-align: '.$Block['alignments'][$index].';', + 'style' => 'text-align: ' . $Block['alignments'][$index] . ';', ); } @@ -997,11 +1062,10 @@ class Parsedown $Element = array( 'name' => 'tr', - 'handler' => 'elements', - 'text' => $Elements, + 'elements' => $Elements, ); - $Block['element']['text'][1]['text'] []= $Element; + $Block['element']['elements'][1]['elements'] []= $Element; return $Block; } @@ -1013,13 +1077,27 @@ class Parsedown protected function paragraph($Line) { - $Block = array( + return array( + 'type' => 'Paragraph', 'element' => array( 'name' => 'p', - 'text' => $Line['text'], - 'handler' => 'line', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $Line['text'], + 'destination' => 'elements', + ), ), ); + } + + protected function paragraphContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + $Block['element']['handler']['argument'] .= "\n".$Line['text']; return $Block; } @@ -1029,13 +1107,11 @@ class Parsedown # protected $InlineTypes = array( - '"' => array('SpecialCharacter'), '!' => array('Image'), '&' => array('SpecialCharacter'), '*' => array('Emphasis'), ':' => array('Url'), - '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'), - '>' => array('SpecialCharacter'), + '<' => array('UrlTag', 'EmailTag', 'Markup'), '[' => array('Link'), '_' => array('Emphasis'), '`' => array('Code'), @@ -1045,15 +1121,28 @@ class Parsedown # ~ - protected $inlineMarkerList = '!"*_&[:<>`~\\'; + protected $inlineMarkerList = '!*_&[:<`~\\'; # # ~ # - public function line($text, $nonNestables=array()) + public function line($text, $nonNestables = array()) { - $markup = ''; + return $this->elements($this->lineElements($text, $nonNestables)); + } + + protected function lineElements($text, $nonNestables = array()) + { + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + $Elements = array(); + + $nonNestables = (empty($nonNestables) + ? array() + : array_combine($nonNestables, $nonNestables) + ); # $excerpt is based on the first occurrence of a marker @@ -1061,7 +1150,7 @@ class Parsedown { $marker = $excerpt[0]; - $markerPosition = strpos($text, $marker); + $markerPosition = strlen($text) - strlen($excerpt); $Excerpt = array('text' => $excerpt, 'context' => $text); @@ -1069,12 +1158,12 @@ class Parsedown { # check to see if the current inline type is nestable in the current context - if ( ! empty($nonNestables) and in_array($inlineType, $nonNestables)) + if (isset($nonNestables[$inlineType])) { continue; } - $Inline = $this->{'inline'.$inlineType}($Excerpt); + $Inline = $this->{"inline$inlineType"}($Excerpt); if ( ! isset($Inline)) { @@ -1097,19 +1186,21 @@ class Parsedown # cause the new element to 'inherit' our non nestables - foreach ($nonNestables as $non_nestable) - { - $Inline['element']['nonNestables'][] = $non_nestable; - } + + $Inline['element']['nonNestables'] = isset($Inline['element']['nonNestables']) + ? array_merge($Inline['element']['nonNestables'], $nonNestables) + : $nonNestables + ; # the text that comes before the inline $unmarkedText = substr($text, 0, $Inline['position']); # compile the unmarked text - $markup .= $this->unmarkedText($unmarkedText); + $InlineText = $this->inlineText($unmarkedText); + $Elements[] = $InlineText['element']; # compile the inline - $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']); + $Elements[] = $this->extractElement($Inline); # remove the examined text $text = substr($text, $Inline['position'] + $Inline['extent']); @@ -1121,28 +1212,57 @@ class Parsedown $unmarkedText = substr($text, 0, $markerPosition + 1); - $markup .= $this->unmarkedText($unmarkedText); + $InlineText = $this->inlineText($unmarkedText); + $Elements[] = $InlineText['element']; $text = substr($text, $markerPosition + 1); } - $markup .= $this->unmarkedText($text); + $InlineText = $this->inlineText($text); + $Elements[] = $InlineText['element']; - return $markup; + foreach ($Elements as &$Element) + { + if ( ! isset($Element['autobreak'])) + { + $Element['autobreak'] = false; + } + } + + return $Elements; } # # ~ # + protected function inlineText($text) + { + $Inline = array( + 'extent' => strlen($text), + 'element' => array(), + ); + + $Inline['element']['elements'] = self::pregReplaceElements( + $this->breaksEnabled ? '/[ ]*+\n/' : '/(?:[ ]*+\\\\|[ ]{2,}+)\n/', + array( + array('name' => 'br'), + array('text' => "\n"), + ), + $text + ); + + return $Inline; + } + protected function inlineCode($Excerpt) { $marker = $Excerpt['text'][0]; - if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(? strlen($matches[0]), @@ -1156,13 +1276,19 @@ class Parsedown protected function inlineEmailTag($Excerpt) { - if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches)) - { + $hostnameLabel = '[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?'; + + $commonMarkEmail = '[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]++@' + . $hostnameLabel . '(?:\.' . $hostnameLabel . ')*'; + + if (strpos($Excerpt['text'], '>') !== false + and preg_match("/^<((mailto:)?$commonMarkEmail)>/i", $Excerpt['text'], $matches) + ){ $url = $matches[1]; if ( ! isset($matches[2])) { - $url = 'mailto:' . $url; + $url = "mailto:$url"; } return array( @@ -1204,8 +1330,11 @@ class Parsedown 'extent' => strlen($matches[0]), 'element' => array( 'name' => $emphasis, - 'handler' => 'line', - 'text' => $matches[1], + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $matches[1], + 'destination' => 'elements', + ) ), ); } @@ -1215,7 +1344,7 @@ class Parsedown if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters)) { return array( - 'markup' => $Excerpt['text'][1], + 'element' => array('rawHtml' => $Excerpt['text'][1]), 'extent' => 2, ); } @@ -1243,8 +1372,9 @@ class Parsedown 'name' => 'img', 'attributes' => array( 'src' => $Link['element']['attributes']['href'], - 'alt' => $Link['element']['text'], + 'alt' => $Link['element']['handler']['argument'], ), + 'autobreak' => true, ), ); @@ -1259,9 +1389,12 @@ class Parsedown { $Element = array( 'name' => 'a', - 'handler' => 'line', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => null, + 'destination' => 'elements', + ), 'nonNestables' => array('Url', 'Link'), - 'text' => null, 'attributes' => array( 'href' => null, 'title' => null, @@ -1274,7 +1407,7 @@ class Parsedown if (preg_match('/\[((?:[^][]++|(?R))*+)\]/', $remainder, $matches)) { - $Element['text'] = $matches[1]; + $Element['handler']['argument'] = $matches[1]; $extent += strlen($matches[0]); @@ -1285,7 +1418,7 @@ class Parsedown return; } - if (preg_match('/^[(]\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+("[^"]*"|\'[^\']*\'))?\s*[)]/', $remainder, $matches)) + if (preg_match('/^[(]\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+("[^"]*+"|\'[^\']*+\'))?\s*+[)]/', $remainder, $matches)) { $Element['attributes']['href'] = $matches[1]; @@ -1300,14 +1433,14 @@ class Parsedown { if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches)) { - $definition = strlen($matches[1]) ? $matches[1] : $Element['text']; + $definition = strlen($matches[1]) ? $matches[1] : $Element['handler']['argument']; $definition = strtolower($definition); $extent += strlen($matches[0]); } else { - $definition = strtolower($Element['text']); + $definition = strtolower($Element['handler']['argument']); } if ( ! isset($this->DefinitionData['Reference'][$definition])) @@ -1334,26 +1467,26 @@ class Parsedown return; } - if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w[\w-]*[ ]*>/s', $Excerpt['text'], $matches)) + if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w[\w-]*+[ ]*+>/s', $Excerpt['text'], $matches)) { return array( - 'markup' => $matches[0], + 'element' => array('rawHtml' => $matches[0]), 'extent' => strlen($matches[0]), ); } - if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches)) + if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches)) { return array( - 'markup' => $matches[0], + 'element' => array('rawHtml' => $matches[0]), 'extent' => strlen($matches[0]), ); } - if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w[\w-]*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches)) + if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w[\w-]*+(?:[ ]*+'.$this->regexHtmlAttribute.')*+[ ]*+\/?>/s', $Excerpt['text'], $matches)) { return array( - 'markup' => $matches[0], + 'element' => array('rawHtml' => $matches[0]), 'extent' => strlen($matches[0]), ); } @@ -1361,23 +1494,16 @@ class Parsedown protected function inlineSpecialCharacter($Excerpt) { - if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text'])) - { + if (substr($Excerpt['text'], 1, 1) !== ' ' and strpos($Excerpt['text'], ';') !== false + and preg_match('/^&(#?+[0-9a-zA-Z]++);/', $Excerpt['text'], $matches) + ) { return array( - 'markup' => '&', - 'extent' => 1, + 'element' => array('rawHtml' => '&' . $matches[1] . ';'), + 'extent' => strlen($matches[0]), ); } - $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot'); - - if (isset($SpecialCharacter[$Excerpt['text'][0]])) - { - return array( - 'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';', - 'extent' => 1, - ); - } + return; } protected function inlineStrikethrough($Excerpt) @@ -1393,8 +1519,11 @@ class Parsedown 'extent' => strlen($matches[0]), 'element' => array( 'name' => 'del', - 'text' => $matches[1], - 'handler' => 'line', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $matches[1], + 'destination' => 'elements', + ) ), ); } @@ -1407,8 +1536,9 @@ class Parsedown return; } - if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE)) - { + if (strpos($Excerpt['context'], 'http') !== false + and preg_match('/\bhttps?+:[\/]{2}[^\s<]+\b\/*+/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE) + ) { $url = $matches[0][0]; $Inline = array( @@ -1429,7 +1559,7 @@ class Parsedown protected function inlineUrlTag($Excerpt) { - if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches)) + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w++:\/{2}[^ >]++)>/i', $Excerpt['text'], $matches)) { $url = $matches[1]; @@ -1450,23 +1580,112 @@ class Parsedown protected function unmarkedText($text) { - if ($this->breaksEnabled) - { - $text = preg_replace('/[ ]*\n/', "
\n", $text); - } - else - { - $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "
\n", $text); - $text = str_replace(" \n", "\n", $text); - } - - return $text; + $Inline = $this->inlineText($text); + return $this->element($Inline['element']); } # # Handlers # + protected function handle(array $Element) + { + if (isset($Element['handler'])) + { + if (!isset($Element['nonNestables'])) + { + $Element['nonNestables'] = array(); + } + + if (is_string($Element['handler'])) + { + $function = $Element['handler']; + $argument = $Element['text']; + unset($Element['text']); + $destination = 'rawHtml'; + } + else + { + $function = $Element['handler']['function']; + $argument = $Element['handler']['argument']; + $destination = $Element['handler']['destination']; + } + + $Element[$destination] = $this->{$function}($argument, $Element['nonNestables']); + + if ($destination === 'handler') + { + $Element = $this->handle($Element); + } + + unset($Element['handler']); + } + + return $Element; + } + + protected function handleElementRecursive(array $Element) + { + return $this->elementApplyRecursive(array($this, 'handle'), $Element); + } + + protected function handleElementsRecursive(array $Elements) + { + return $this->elementsApplyRecursive(array($this, 'handle'), $Elements); + } + + protected function elementApplyRecursive($closure, array $Element) + { + $Element = call_user_func($closure, $Element); + + if (isset($Element['elements'])) + { + $Element['elements'] = $this->elementsApplyRecursive($closure, $Element['elements']); + } + elseif (isset($Element['element'])) + { + $Element['element'] = $this->elementApplyRecursive($closure, $Element['element']); + } + + return $Element; + } + + protected function elementApplyRecursiveDepthFirst($closure, array $Element) + { + if (isset($Element['elements'])) + { + $Element['elements'] = $this->elementsApplyRecursiveDepthFirst($closure, $Element['elements']); + } + elseif (isset($Element['element'])) + { + $Element['element'] = $this->elementsApplyRecursiveDepthFirst($closure, $Element['element']); + } + + $Element = call_user_func($closure, $Element); + + return $Element; + } + + protected function elementsApplyRecursive($closure, array $Elements) + { + foreach ($Elements as &$Element) + { + $Element = $this->elementApplyRecursive($closure, $Element); + } + + return $Elements; + } + + protected function elementsApplyRecursiveDepthFirst($closure, array $Elements) + { + foreach ($Elements as &$Element) + { + $Element = $this->elementApplyRecursiveDepthFirst($closure, $Element); + } + + return $Elements; + } + protected function element(array $Element) { if ($this->safeMode) @@ -1474,18 +1693,28 @@ class Parsedown $Element = $this->sanitiseElement($Element); } - $markup = '<'.$Element['name']; + # identity map if element has no handler + $Element = $this->handle($Element); - if (isset($Element['attributes'])) + $hasName = isset($Element['name']); + + $markup = ''; + + if ($hasName) { - foreach ($Element['attributes'] as $name => $value) - { - if ($value === null) - { - continue; - } + $markup .= '<' . $Element['name']; - $markup .= ' '.$name.'="'.self::escape($value).'"'; + if (isset($Element['attributes'])) + { + foreach ($Element['attributes'] as $name => $value) + { + if ($value === null) + { + continue; + } + + $markup .= " $name=\"".self::escape($value).'"'; + } } } @@ -1500,35 +1729,40 @@ class Parsedown elseif (isset($Element['rawHtml'])) { $text = $Element['rawHtml']; + $allowRawHtmlInSafeMode = isset($Element['allowRawHtmlInSafeMode']) && $Element['allowRawHtmlInSafeMode']; $permitRawHtml = !$this->safeMode || $allowRawHtmlInSafeMode; } - if (isset($text)) + $hasContent = isset($text) || isset($Element['element']) || isset($Element['elements']); + + if ($hasContent) { - $markup .= '>'; + $markup .= $hasName ? '>' : ''; - if (!isset($Element['nonNestables'])) + if (isset($Element['elements'])) { - $Element['nonNestables'] = array(); + $markup .= $this->elements($Element['elements']); } - - if (isset($Element['handler'])) + elseif (isset($Element['element'])) { - $markup .= $this->{$Element['handler']}($text, $Element['nonNestables']); - } - elseif (!$permitRawHtml) - { - $markup .= self::escape($text, true); + $markup .= $this->element($Element['element']); } else { - $markup .= $text; + if (!$permitRawHtml) + { + $markup .= self::escape($text, true); + } + else + { + $markup .= $text; + } } - $markup .= ''; + $markup .= $hasName ? '' : ''; } - else + elseif ($hasName) { $markup .= ' />'; } @@ -1540,12 +1774,26 @@ class Parsedown { $markup = ''; + $autoBreak = true; + foreach ($Elements as $Element) { - $markup .= "\n" . $this->element($Element); + if (empty($Element)) + { + continue; + } + + $autoBreakNext = (isset($Element['autobreak']) + ? $Element['autobreak'] : isset($Element['name']) + ); + // (autobreak === false) covers both sides of an element + $autoBreak = !$autoBreak ? $autoBreak : $autoBreakNext; + + $markup .= ($autoBreak ? "\n" : '') . $this->element($Element); + $autoBreak = $autoBreakNext; } - $markup .= "\n"; + $markup .= $autoBreak ? "\n" : ''; return $markup; } @@ -1554,21 +1802,49 @@ class Parsedown protected function li($lines) { - $markup = $this->lines($lines); + $Elements = $this->linesElements($lines); - $trimmedMarkup = trim($markup); - - if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '

') - { - $markup = $trimmedMarkup; - $markup = substr($markup, 3); - - $position = strpos($markup, "

"); - - $markup = substr_replace($markup, '', $position, 4); + if ( ! in_array('', $lines) + and isset($Elements[0]) and isset($Elements[0]['name']) + and $Elements[0]['name'] === 'p' + ) { + unset($Elements[0]['name']); } - return $markup; + return $Elements; + } + + # + # AST Convenience + # + + /** + * Replace occurrences $regexp with $Elements in $text. Return an array of + * elements representing the replacement. + */ + protected static function pregReplaceElements($regexp, $Elements, $text) + { + $newElements = array(); + + while (preg_match($regexp, $text, $matches, PREG_OFFSET_CAPTURE)) + { + $offset = $matches[0][1]; + $before = substr($text, 0, $offset); + $after = substr($text, $offset + strlen($matches[0][0])); + + $newElements[] = array('text' => $before); + + foreach ($Elements as $Element) + { + $newElements[] = $Element; + } + + $text = $after; + } + + $newElements[] = array('text' => $text); + + return $newElements; } # @@ -1590,6 +1866,12 @@ class Parsedown 'img' => 'src', ); + if ( ! isset($Element['name'])) + { + unset($Element['attributes']); + return $Element; + } + if (isset($safeUrlNameToAtt[$Element['name']])) { $Element = $this->filterUnsafeUrlInAttribute($Element, $safeUrlNameToAtt[$Element['name']]); @@ -1679,12 +1961,12 @@ class Parsedown # Read-Only protected $specialCharacters = array( - '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', + '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', '~' ); protected $StrongRegex = array( - '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', - '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', + '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*+[*])+?)[*]{2}(?![*])/s', + '_' => '/^__((?:\\\\_|[^_]|_[^_]*+_)+?)__(?!_)/us', ); protected $EmRegex = array( @@ -1692,7 +1974,7 @@ class Parsedown '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', ); - protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?'; + protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*+(?:\s*+=\s*+(?:[^"\'=<>`\s]+|"[^"]*+"|\'[^\']*+\'))?+'; protected $voidElements = array( 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', diff --git a/bibli/parsedown/README.md b/bibli/parsedown/README.md index b5d9ed2..a4b8c63 100755 --- a/bibli/parsedown/README.md +++ b/bibli/parsedown/README.md @@ -1,49 +1,61 @@ -> I also make [Caret](https://caret.io?ref=parsedown) - a Markdown editor for Mac and PC. + -## Parsedown +

Parsedown

-[![Build Status](https://img.shields.io/travis/erusev/parsedown/master.svg?style=flat-square)](https://travis-ci.org/erusev/parsedown) - +

Parsedown

-Better Markdown Parser in PHP +[![Build Status](https://travis-ci.org/erusev/parsedown.svg)](https://travis-ci.org/erusev/parsedown) +[![Total Downloads](https://poser.pugx.org/erusev/parsedown/d/total.svg)](https://packagist.org/packages/erusev/parsedown) +[![Version](https://poser.pugx.org/erusev/parsedown/v/stable.svg)](https://packagist.org/packages/erusev/parsedown) +[![License](https://poser.pugx.org/erusev/parsedown/license.svg)](https://packagist.org/packages/erusev/parsedown) -[Demo](http://parsedown.org/demo) | -[Benchmarks](http://parsedown.org/speed) | -[Tests](http://parsedown.org/tests/) | -[Documentation](https://github.com/erusev/parsedown/wiki/) +Better Markdown Parser in PHP - Demo. -### Features +## Features * One File * No Dependencies -* Super Fast +* [Super Fast](http://parsedown.org/speed) * Extensible -* [GitHub flavored](https://help.github.com/articles/github-flavored-markdown) -* Tested in 5.3 to 7.1 and in HHVM +* [GitHub flavored](https://github.github.com/gfm) +* [Tested](http://parsedown.org/tests/) in 5.3 to 7.3 * [Markdown Extra extension](https://github.com/erusev/parsedown-extra) -### Installation +## Installation -Include `Parsedown.php` or install [the composer package](https://packagist.org/packages/erusev/parsedown). +Install the [composer package]: -### Example + composer require erusev/parsedown -``` php +Or download the [latest release] and include `Parsedown.php` + +[composer package]: https://packagist.org/packages/erusev/parsedown "The Parsedown package on packagist.org" +[latest release]: https://github.com/erusev/parsedown/releases/latest "The latest release of Parsedown" + +## Example + +```php $Parsedown = new Parsedown(); echo $Parsedown->text('Hello _Parsedown_!'); # prints:

Hello Parsedown!

``` +You can also parse inline markdown only: + +```php +echo $Parsedown->line('Hello _Parsedown_!'); # prints: Hello Parsedown! +``` + More examples in [the wiki](https://github.com/erusev/parsedown/wiki/) and in [this video tutorial](http://youtu.be/wYZBY8DEikI). -### Security +## Security Parsedown is capable of escaping user-input within the HTML that it generates. Additionally Parsedown will apply sanitisation to additional scripting vectors (such as scripting link destinations) that are introduced by the markdown syntax itself. To tell Parsedown that it is processing untrusted user-input, use the following: + ```php -$parsedown = new Parsedown; -$parsedown->setSafeMode(true); +$Parsedown->setSafeMode(true); ``` If instead, you wish to allow HTML within untrusted user-input, but still want output to be free from XSS it is recommended that you make use of a HTML sanitiser that allows HTML tags to be whitelisted, like [HTML Purifier](http://htmlpurifier.org/). @@ -54,18 +66,19 @@ In both cases you should strongly consider employing defence-in-depth measures, Safe mode does not necessarily yield safe results when using extensions to Parsedown. Extensions should be evaluated on their own to determine their specific safety against XSS. -### Escaping HTML -> ⚠️  **WARNING:** This method isn't safe from XSS! +## Escaping HTML + +> **WARNING:** This method isn't safe from XSS! If you wish to escape HTML **in trusted input**, you can use the following: + ```php -$parsedown = new Parsedown; -$parsedown->setMarkupEscaped(true); +$Parsedown->setMarkupEscaped(true); ``` Beware that this still allows users to insert unsafe scripting vectors, such as links like `[xss](javascript:alert%281%29)`. -### Questions +## Questions **How does Parsedown work?** @@ -79,8 +92,12 @@ It passes most of the CommonMark tests. Most of the tests that don't pass deal w **Who uses it?** -[Laravel Framework](https://laravel.com/), [Bolt CMS](http://bolt.cm/), [Grav CMS](http://getgrav.org/), [Herbie CMS](http://www.getherbie.org/), [Kirby CMS](http://getkirby.com/), [October CMS](http://octobercms.com/), [Pico CMS](http://picocms.org), [Statamic CMS](http://www.statamic.com/), [phpDocumentor](http://www.phpdoc.org/), [RaspberryPi.org](http://www.raspberrypi.org/), [Symfony demo](https://github.com/symfony/symfony-demo) and [more](https://packagist.org/packages/erusev/parsedown/dependents). +[Laravel Framework](https://laravel.com/), [Bolt CMS](http://bolt.cm/), [Grav CMS](http://getgrav.org/), [Herbie CMS](http://www.getherbie.org/), [Kirby CMS](http://getkirby.com/), [October CMS](http://octobercms.com/), [Pico CMS](http://picocms.org), [Statamic CMS](http://www.statamic.com/), [phpDocumentor](http://www.phpdoc.org/), [RaspberryPi.org](http://www.raspberrypi.org/), [Symfony Demo](https://github.com/symfony/demo) and [more](https://packagist.org/packages/erusev/parsedown/dependents). **How can I help?** Use it, star it, share it and if you feel generous, [donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2). + +**What else should I know?** + +I also make [Nota](https://nota.md/) — a writing app designed for Markdown files :) diff --git a/bibli/ubuntu/.gitignore b/bibli/ubuntu/.gitignore deleted file mode 100755 index ee9cdde..0000000 --- a/bibli/ubuntu/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -webify diff --git a/bibli/ubuntu/CHANGELOG.md b/bibli/ubuntu/CHANGELOG.md deleted file mode 100755 index 23c8a87..0000000 --- a/bibli/ubuntu/CHANGELOG.md +++ /dev/null @@ -1,35 +0,0 @@ -## Changelog - -### v0.1.13 -- Add woff2 files (thanks, @rene-s) - -### v0.1.12 -- Fix missing webfont files - -### v0.1.11 -- Create `package.json` for NPM -- Create `composer.json` for Packagist - -### v0.1.10 -- Improve documentation -- Minify the pure CSS file - -### v0.1.8, v0.1.9 -- Fix problems with the invalid bower.json - -### v0.1.5 – Fixes and improvements -- Greek and Cyrillic charsets added -- Project page created - -### v0.1.3 -- Fixes an issue with sprockets stack creating final files for each *.scss -file instead of importing them to be compiled later as a whole. - -### v0.1.2 -- LESS and SASS files/descriptors available -- The font family is divided into three different files: Ubuntu (ubuntu-base); -Ubuntu Condensed (ubuntu-condensed); and Ubuntu Monospace (ubuntu-mono) - -### v0.1.1 -- Font files provided -- CSS descriptor available diff --git a/bibli/ubuntu/MIT-LICENSE b/bibli/ubuntu/MIT-LICENSE deleted file mode 100755 index 73cb5e2..0000000 --- a/bibli/ubuntu/MIT-LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2016 Ewerton Assis - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the “Software”), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/bibli/ubuntu/README.md b/bibli/ubuntu/README.md deleted file mode 100755 index b54da4c..0000000 --- a/bibli/ubuntu/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Ubuntu Font Family - -> Ubuntu Font Family Bower-ready (also SCSS-ready, LESS-ready, and plain CSS-ready) - -## How to use it - -0. Install it from [Bower](http://bower.io/) - - ```sh - $ bower install [--save] ubuntu-fontface - ``` - - or from [NPM](http://npmjs.com/) - - ```sh - $ npm install [--save] ubuntu-fontface - ``` - -1. Import it on SCSS/LESS/CSS source code. Assuming `{BOWER_PATH}` is `bower_components/`; `{SUFFIX}` options -are `-base`, `-condensed` and `-mono`; `{EXTENSION}` options are `css`, `less`, `scss`, depending -whether you're using pure CSS, [SCSS](http://sass-lang.com/) or [LESS](http://lesscss.org/). The `{SUFFIX}` is -not available if you're importing the pure CSS file. A minified file is available for the pure CSS version. - - ```css - @import "{BOWER_PATH}/ubuntu-fontface/ubuntu{SUFFIX}.{EXTENSION}"; - ``` - -2. If you need any help (or have found any bug 🐞), please post it on -[/issues](//github.com/earaujoassis/ubuntu-fontface/issues). Thank you! - -## Contributors - -- Pavel Rykov ([@PavelRykov](https://github.com/PavelRykov)) -- Jordan Last ([@lastmjs](https://github.com/lastmjs)) -- Rene Schmidt ([@rene-s](https://github.com/rene-s)) - -## License - -The Ubuntu Font Family is distributed under the [Ubuntu Font Licence](http://font.ubuntu.com/licence/). - -The source code in this project is distributed under the [MIT License](http://earaujoassis.mit-license.org/) © Ewerton Assis diff --git a/bibli/ubuntu/UBUNTU-FONT-LICENSE b/bibli/ubuntu/UBUNTU-FONT-LICENSE deleted file mode 100755 index 5a002cf..0000000 --- a/bibli/ubuntu/UBUNTU-FONT-LICENSE +++ /dev/null @@ -1,94 +0,0 @@ -Ubuntu Font License v1.0 - -PREAMBLE -This licence allows the licensed fonts to be used, studied, modified and -redistributed freely. The fonts, including any derivative works, can be -bundled, embedded, and redistributed provided the terms of this licence -are met. The fonts and derivatives, however, cannot be released under -any other licence. The requirement for fonts to remain under this -licence does not require any document created using the fonts or their -derivatives to be published under this licence, as long as the primary -purpose of the document is not to be a vehicle for the distribution of -the fonts. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this licence and clearly marked as such. This may -include source files, build scripts and documentation. - -"Original Version" refers to the collection of Font Software components -as received under this licence. - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to -a new environment. - -"Copyright Holder(s)" refers to all individuals and companies who have a -copyright ownership of the Font Software. - -"Substantially Changed" refers to Modified Versions which can be easily -identified as dissimilar to the Font Software by users of the Font -Software comparing the Original Version with the Modified Version. - -To "Propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification and with or without charging -a redistribution fee), making available to the public, and in some -countries other activities as well. - -PERMISSION & CONDITIONS -This licence does not grant any rights under trademark law and all such -rights are reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of the Font Software, to propagate the Font Software, subject to -the below conditions: - -1) Each copy of the Font Software must contain the above copyright -notice and this licence. These can be included either as stand-alone -text files, human-readable headers or in the appropriate machine- -readable metadata fields within text or binary files as long as those -fields can be easily viewed by the user. - -2) The font name complies with the following: -(a) The Original Version must retain its name, unmodified. -(b) Modified Versions which are Substantially Changed must be renamed to -avoid use of the name of the Original Version or similar names entirely. -(c) Modified Versions which are not Substantially Changed must be -renamed to both (i) retain the name of the Original Version and (ii) add -additional naming elements to distinguish the Modified Version from the -Original Version. The name of such Modified Versions must be the name of -the Original Version, with "derivative X" where X represents the name of -the new work, appended to that name. - -3) The name(s) of the Copyright Holder(s) and any contributor to the -Font Software shall not be used to promote, endorse or advertise any -Modified Version, except (i) as required by this licence, (ii) to -acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with -their explicit written permission. - -4) The Font Software, modified or unmodified, in part or in whole, must -be distributed entirely under this licence, and must not be distributed -under any other licence. The requirement for fonts to remain under this -licence does not affect any document created using the Font Software, -except any version of the Font Software extracted from a document -created using the Font Software may only be distributed under this -licence. - -TERMINATION -This licence becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF -COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER -DEALINGS IN THE FONT SOFTWARE. diff --git a/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.eot b/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.eot deleted file mode 100755 index 9be35a0..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.svg b/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.svg deleted file mode 100755 index 8991b3f..0000000 --- a/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.svg +++ /dev/null @@ -1,2405 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.ttf b/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.ttf deleted file mode 100755 index 72a5a99..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.woff b/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.woff deleted file mode 100755 index 5e1a99d..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.woff2 b/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.woff2 deleted file mode 100755 index c5c0efc..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-bold-italic-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-bold-webfont.eot b/bibli/ubuntu/fonts/ubuntu-bold-webfont.eot deleted file mode 100755 index 4eff319..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-bold-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-bold-webfont.svg b/bibli/ubuntu/fonts/ubuntu-bold-webfont.svg deleted file mode 100755 index f9fd661..0000000 --- a/bibli/ubuntu/fonts/ubuntu-bold-webfont.svg +++ /dev/null @@ -1,2405 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntu-bold-webfont.ttf b/bibli/ubuntu/fonts/ubuntu-bold-webfont.ttf deleted file mode 100755 index b173da2..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-bold-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-bold-webfont.woff b/bibli/ubuntu/fonts/ubuntu-bold-webfont.woff deleted file mode 100755 index 5486801..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-bold-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-bold-webfont.woff2 b/bibli/ubuntu/fonts/ubuntu-bold-webfont.woff2 deleted file mode 100755 index 20fef3d..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-bold-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-condensed-webfont.eot b/bibli/ubuntu/fonts/ubuntu-condensed-webfont.eot deleted file mode 100755 index f571d5d..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-condensed-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-condensed-webfont.svg b/bibli/ubuntu/fonts/ubuntu-condensed-webfont.svg deleted file mode 100755 index 0f872a4..0000000 --- a/bibli/ubuntu/fonts/ubuntu-condensed-webfont.svg +++ /dev/null @@ -1,2401 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntu-condensed-webfont.ttf b/bibli/ubuntu/fonts/ubuntu-condensed-webfont.ttf deleted file mode 100755 index 602a3ee..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-condensed-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-condensed-webfont.woff b/bibli/ubuntu/fonts/ubuntu-condensed-webfont.woff deleted file mode 100755 index a5a252c..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-condensed-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-condensed-webfont.woff2 b/bibli/ubuntu/fonts/ubuntu-condensed-webfont.woff2 deleted file mode 100755 index 5f48280..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-condensed-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.eot b/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.eot deleted file mode 100755 index fb5af35..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.svg b/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.svg deleted file mode 100755 index cfc2162..0000000 --- a/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.svg +++ /dev/null @@ -1,2405 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.ttf b/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.ttf deleted file mode 100755 index c6cec55..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.woff b/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.woff deleted file mode 100755 index 91b3786..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.woff2 b/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.woff2 deleted file mode 100755 index 5844f9f..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-light-italic-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-light-webfont.eot b/bibli/ubuntu/fonts/ubuntu-light-webfont.eot deleted file mode 100755 index 5b030ee..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-light-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-light-webfont.svg b/bibli/ubuntu/fonts/ubuntu-light-webfont.svg deleted file mode 100755 index cdfc81d..0000000 --- a/bibli/ubuntu/fonts/ubuntu-light-webfont.svg +++ /dev/null @@ -1,2405 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntu-light-webfont.ttf b/bibli/ubuntu/fonts/ubuntu-light-webfont.ttf deleted file mode 100755 index ed0f5bc..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-light-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-light-webfont.woff b/bibli/ubuntu/fonts/ubuntu-light-webfont.woff deleted file mode 100755 index a492156..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-light-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-light-webfont.woff2 b/bibli/ubuntu/fonts/ubuntu-light-webfont.woff2 deleted file mode 100755 index b355e18..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-light-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.eot b/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.eot deleted file mode 100755 index 4ee7202..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.svg b/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.svg deleted file mode 100755 index ed74849..0000000 --- a/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.svg +++ /dev/null @@ -1,2405 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.ttf b/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.ttf deleted file mode 100755 index e8d186c..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.woff b/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.woff deleted file mode 100755 index a9d05d8..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.woff2 b/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.woff2 deleted file mode 100755 index 4c316b8..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-medium-italic-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-medium-webfont.eot b/bibli/ubuntu/fonts/ubuntu-medium-webfont.eot deleted file mode 100755 index 6a8ba70..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-medium-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-medium-webfont.svg b/bibli/ubuntu/fonts/ubuntu-medium-webfont.svg deleted file mode 100755 index a30ae93..0000000 --- a/bibli/ubuntu/fonts/ubuntu-medium-webfont.svg +++ /dev/null @@ -1,2405 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntu-medium-webfont.ttf b/bibli/ubuntu/fonts/ubuntu-medium-webfont.ttf deleted file mode 100755 index ca9c03a..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-medium-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-medium-webfont.woff b/bibli/ubuntu/fonts/ubuntu-medium-webfont.woff deleted file mode 100755 index d116e5e..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-medium-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-medium-webfont.woff2 b/bibli/ubuntu/fonts/ubuntu-medium-webfont.woff2 deleted file mode 100755 index 055e4cf..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-medium-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.eot b/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.eot deleted file mode 100755 index b2dfdc2..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.svg b/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.svg deleted file mode 100755 index 91d08d8..0000000 --- a/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.svg +++ /dev/null @@ -1,2405 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.ttf b/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.ttf deleted file mode 100755 index 4f2d2bc..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.woff b/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.woff deleted file mode 100755 index 298bc58..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.woff2 b/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.woff2 deleted file mode 100755 index 90af5d7..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-regular-italic-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-regular-webfont.eot b/bibli/ubuntu/fonts/ubuntu-regular-webfont.eot deleted file mode 100755 index 87f22e6..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-regular-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-regular-webfont.svg b/bibli/ubuntu/fonts/ubuntu-regular-webfont.svg deleted file mode 100755 index 542bc76..0000000 --- a/bibli/ubuntu/fonts/ubuntu-regular-webfont.svg +++ /dev/null @@ -1,2405 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntu-regular-webfont.ttf b/bibli/ubuntu/fonts/ubuntu-regular-webfont.ttf deleted file mode 100755 index d748728..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-regular-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-regular-webfont.woff b/bibli/ubuntu/fonts/ubuntu-regular-webfont.woff deleted file mode 100755 index 29e0a37..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-regular-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntu-regular-webfont.woff2 b/bibli/ubuntu/fonts/ubuntu-regular-webfont.woff2 deleted file mode 100755 index 1ab75a4..0000000 Binary files a/bibli/ubuntu/fonts/ubuntu-regular-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.eot b/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.eot deleted file mode 100755 index 7a3b09b..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.svg b/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.svg deleted file mode 100755 index a3041f6..0000000 --- a/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.svg +++ /dev/null @@ -1,2465 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.ttf b/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.ttf deleted file mode 100755 index 6c5b8ba..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.woff b/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.woff deleted file mode 100755 index dbba9f4..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.woff2 b/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.woff2 deleted file mode 100755 index 2ce32db..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-bold-italic-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-bold-webfont.eot b/bibli/ubuntu/fonts/ubuntumono-bold-webfont.eot deleted file mode 100755 index 0755716..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-bold-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-bold-webfont.svg b/bibli/ubuntu/fonts/ubuntumono-bold-webfont.svg deleted file mode 100755 index f657711..0000000 --- a/bibli/ubuntu/fonts/ubuntumono-bold-webfont.svg +++ /dev/null @@ -1,2465 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntumono-bold-webfont.ttf b/bibli/ubuntu/fonts/ubuntumono-bold-webfont.ttf deleted file mode 100755 index 7bd6665..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-bold-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-bold-webfont.woff b/bibli/ubuntu/fonts/ubuntumono-bold-webfont.woff deleted file mode 100755 index 5da9c8d..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-bold-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-bold-webfont.woff2 b/bibli/ubuntu/fonts/ubuntumono-bold-webfont.woff2 deleted file mode 100755 index 9617bd7..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-bold-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.eot b/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.eot deleted file mode 100755 index 34ae694..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.svg b/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.svg deleted file mode 100755 index 8c82d1d..0000000 --- a/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.svg +++ /dev/null @@ -1,2465 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.ttf b/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.ttf deleted file mode 100755 index 18f81a2..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.woff b/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.woff deleted file mode 100755 index daf136d..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.woff2 b/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.woff2 deleted file mode 100755 index d6363c2..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-regular-italic-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-regular-webfont.eot b/bibli/ubuntu/fonts/ubuntumono-regular-webfont.eot deleted file mode 100755 index 40a0551..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-regular-webfont.eot and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-regular-webfont.svg b/bibli/ubuntu/fonts/ubuntumono-regular-webfont.svg deleted file mode 100755 index ed933f8..0000000 --- a/bibli/ubuntu/fonts/ubuntumono-regular-webfont.svg +++ /dev/null @@ -1,2465 +0,0 @@ - - -!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/bibli/ubuntu/fonts/ubuntumono-regular-webfont.ttf b/bibli/ubuntu/fonts/ubuntumono-regular-webfont.ttf deleted file mode 100755 index fdd309d..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-regular-webfont.ttf and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-regular-webfont.woff b/bibli/ubuntu/fonts/ubuntumono-regular-webfont.woff deleted file mode 100755 index d53a80b..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-regular-webfont.woff and /dev/null differ diff --git a/bibli/ubuntu/fonts/ubuntumono-regular-webfont.woff2 b/bibli/ubuntu/fonts/ubuntumono-regular-webfont.woff2 deleted file mode 100755 index 2320c01..0000000 Binary files a/bibli/ubuntu/fonts/ubuntumono-regular-webfont.woff2 and /dev/null differ diff --git a/bibli/ubuntu/ubuntu-base.less b/bibli/ubuntu/ubuntu-base.less deleted file mode 100755 index bf965f3..0000000 --- a/bibli/ubuntu/ubuntu-base.less +++ /dev/null @@ -1,116 +0,0 @@ -/* Ubuntu Font Family Bower-ready v0.1.13 */ -/* Ubuntu @font-face kit */ - -@UbuntuFontsPath: "./fonts"; - -/* BEGIN Ubuntu Light */ -@font-face { - font-family: 'Ubuntu'; - src: url('@{UbuntuFontsPath}/ubuntu-light-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntu-light-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntu-light-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntu-light-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntu-light-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntu-light-webfont.svg#ubuntulight') format('svg'); - font-weight: 300; - font-style: normal; -} -/* END Ubuntu Light */ - -/* BEGIN Ubuntu Light Italic */ -@font-face { - font-family: 'Ubuntu'; - src: url('@{UbuntuFontsPath}/ubuntu-light-italic-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntu-light-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntu-light-italic-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntu-light-italic-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntu-light-italic-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntu-light-italic-webfont.svg#ubuntulight_italic') format('svg'); - font-weight: 300; - font-style: italic; -} -/* END Ubuntu Light Italic */ - -/* BEGIN Ubuntu Regular */ -@font-face { - font-family: 'Ubuntu'; - src: url('@{UbuntuFontsPath}/ubuntu-regular-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntu-regular-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntu-regular-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntu-regular-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntu-regular-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntu-regular-webfont.svg#ubunturegular') format('svg'); - font-weight: normal; - font-style: normal; -} -/* END Ubuntu Regular */ - -/* BEGIN Ubuntu Regular Italic */ -@font-face { - font-family: 'Ubuntu'; - src: url('@{UbuntuFontsPath}/ubuntu-regular-italic-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntu-regular-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntu-regular-italic-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntu-regular-italic-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntu-regular-italic-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntu-regular-italic-webfont.svg#ubuntuitalic') format('svg'); - font-weight: normal; - font-style: italic; -} -/* END Ubuntu Regular Italic */ - -/* BEGIN Ubuntu Medium */ -@font-face { - font-family: 'Ubuntu'; - src: url('@{UbuntuFontsPath}/ubuntu-medium-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntu-medium-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntu-medium-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntu-medium-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntu-medium-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntu-medium-webfont.svg#ubuntumedium') format('svg'); - font-weight: 500; - font-style: normal; -} -/* END Ubuntu Medium */ - -/* BEGIN Ubuntu Medium Italic */ -@font-face { - font-family: 'Ubuntu'; - src: url('@{UbuntuFontsPath}/ubuntu-medium-italic-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntu-medium-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntu-medium-italic-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntu-medium-italic-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntu-medium-italic-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntu-medium-italic-webfont.svg#ubuntumedium_italic') format('svg'); - font-weight: 500; - font-style: italic; -} -/* END Ubuntu Medium Italic */ - -/* BEGIN Ubuntu Bold */ -@font-face { - font-family: 'Ubuntu'; - src: url('@{UbuntuFontsPath}/ubuntu-bold-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntu-bold-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntu-bold-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntu-bold-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntu-bold-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntu-bold-webfont.svg#ubuntubold') format('svg'); - font-weight: bold; - font-style: normal; -} -/* END Ubuntu Bold */ - -/* BEGIN Ubuntu Bold Italic */ -@font-face { - font-family: 'Ubuntu'; - src: url('@{UbuntuFontsPath}/ubuntu-bold-italic-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntu-bold-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntu-bold-italic-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntu-bold-italic-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntu-bold-italic-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntu-bold-italic-webfont.svg#ubuntubold_italic') format('svg'); - font-weight: bold; - font-style: italic; -} -/* END Ubuntu Bold Italic */ diff --git a/bibli/ubuntu/ubuntu-condensed.less b/bibli/ubuntu/ubuntu-condensed.less deleted file mode 100755 index 364203d..0000000 --- a/bibli/ubuntu/ubuntu-condensed.less +++ /dev/null @@ -1,18 +0,0 @@ -/* Ubuntu Font Family Bower-ready v0.1.13 */ -/* Ubuntu Condensed @font-face kit */ - -@UbuntuFontsPath: "./fonts"; - -/* BEGIN Ubuntu Condensed */ -@font-face { - font-family: 'Ubuntu Condensed'; - src: url('@{UbuntuFontsPath}/ubuntu-condensed-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntu-condensed-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntu-condensed-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntu-condensed-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntu-condensed-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntu-condensed-webfont.svg#ubuntu_condensedregular') format('svg'); - font-weight: normal; - font-style: normal; -} -/* END Ubuntu Condensed */ diff --git a/bibli/ubuntu/ubuntu-mono.less b/bibli/ubuntu/ubuntu-mono.less deleted file mode 100755 index cd27801..0000000 --- a/bibli/ubuntu/ubuntu-mono.less +++ /dev/null @@ -1,62 +0,0 @@ -/* Ubuntu Font Family Bower-ready v0.1.13 */ -/* Ubuntu Mono @font-face kit */ - -@UbuntuFontsPath: "./fonts"; - -/* BEGIN Ubuntu Mono Regular */ -@font-face { - font-family: 'Ubuntu Monospace'; - src: url('@{UbuntuFontsPath}/ubuntumono-regular-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntumono-regular-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntumono-regular-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntumono-regular-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntumono-regular-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntumono-regular-webfont.svg#ubuntu_monoregular') format('svg'); - font-weight: normal; - font-style: normal; - -} -/* END Ubuntu Mono Regular */ - -/* BEGIN Ubuntu Mono Italic */ -@font-face { - font-family: 'Ubuntu Monospace'; - src: url('@{UbuntuFontsPath}/ubuntumono-regular-italic-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntumono-regular-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntumono-regular-italic-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntumono-regular-italic-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntumono-regular-italic-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntumono-regular-italic-webfont.svg#ubuntu_monoitalic') format('svg'); - font-weight: normal; - font-style: italic; -} -/* END Ubuntu Mono Italic */ - -/* BEGIN Ubuntu Mono Bold */ -@font-face { - font-family: 'Ubuntu Monospace'; - src: url('@{UbuntuFontsPath}/ubuntumono-bold-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntumono-bold-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntumono-bold-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntumono-bold-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntumono-bold-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntumono-bold-webfont.svg#ubuntu_monobold') format('svg'); - font-weight: bold; - font-style: normal; -} -/* END Ubuntu Mono Bold */ - -/* BEGIN Ubuntu Mono Bold Italic */ -@font-face { - font-family: 'Ubuntu Monospace'; - src: url('@{UbuntuFontsPath}/ubuntumono-bold-italic-webfont.eot'); - src: url('@{UbuntuFontsPath}/ubuntumono-bold-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('@{UbuntuFontsPath}/ubuntumono-bold-italic-webfont.woff2') format('woff2'), - url('@{UbuntuFontsPath}/ubuntumono-bold-italic-webfont.woff') format('woff'), - url('@{UbuntuFontsPath}/ubuntumono-bold-italic-webfont.ttf') format('truetype'), - url('@{UbuntuFontsPath}/ubuntumono-bold-italic-webfont.svg#ubuntu_monobold_italic') format('svg'); - font-weight: bold; - font-style: italic; - -} -/* END Ubuntu Mono Bold Italic */ diff --git a/bibli/ubuntu/ubuntu.css b/bibli/ubuntu/ubuntu.css deleted file mode 100755 index 2527c52..0000000 --- a/bibli/ubuntu/ubuntu.css +++ /dev/null @@ -1,189 +0,0 @@ -/* Ubuntu Font Family Bower-ready v0.1.13 */ - -/* BEGIN Ubuntu Light */ -@font-face { - font-family: 'Ubuntu'; - src: url('fonts/ubuntu-light-webfont.eot'); - src: url('fonts/ubuntu-light-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntu-light-webfont.woff2') format('woff2'), - url('fonts/ubuntu-light-webfont.woff') format('woff'), - url('fonts/ubuntu-light-webfont.ttf') format('truetype'), - url('fonts/ubuntu-light-webfont.svg#ubuntulight') format('svg'); - font-weight: 300; - font-style: normal; -} -/* END Ubuntu Light */ - -/* BEGIN Ubuntu Light Italic */ -@font-face { - font-family: 'Ubuntu'; - src: url('fonts/ubuntu-light-italic-webfont.eot'); - src: url('fonts/ubuntu-light-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntu-light-italic-webfont.woff2') format('woff2'), - url('fonts/ubuntu-light-italic-webfont.woff') format('woff'), - url('fonts/ubuntu-light-italic-webfont.ttf') format('truetype'), - url('fonts/ubuntu-light-italic-webfont.svg#ubuntulight_italic') format('svg'); - font-weight: 300; - font-style: italic; -} -/* END Ubuntu Light Italic */ - -/* BEGIN Ubuntu Regular */ -@font-face { - font-family: 'Ubuntu'; - src: url('fonts/ubuntu-regular-webfont.eot'); - src: url('fonts/ubuntu-regular-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntu-regular-webfont.woff2') format('woff2'), - url('fonts/ubuntu-regular-webfont.woff') format('woff'), - url('fonts/ubuntu-regular-webfont.ttf') format('truetype'), - url('fonts/ubuntu-regular-webfont.svg#ubunturegular') format('svg'); - font-weight: normal; - font-style: normal; -} -/* END Ubuntu Regular */ - -/* BEGIN Ubuntu Regular Italic */ -@font-face { - font-family: 'Ubuntu'; - src: url('fonts/ubuntu-regular-italic-webfont.eot'); - src: url('fonts/ubuntu-regular-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntu-regular-italic-webfont.woff2') format('woff2'), - url('fonts/ubuntu-regular-italic-webfont.woff') format('woff'), - url('fonts/ubuntu-regular-italic-webfont.ttf') format('truetype'), - url('fonts/ubuntu-regular-italic-webfont.svg#ubuntuitalic') format('svg'); - font-weight: normal; - font-style: italic; -} -/* END Ubuntu Regular Italic */ - -/* BEGIN Ubuntu Medium */ -@font-face { - font-family: 'Ubuntu'; - src: url('fonts/ubuntu-medium-webfont.eot'); - src: url('fonts/ubuntu-medium-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntu-medium-webfont.woff2') format('woff2'), - url('fonts/ubuntu-medium-webfont.woff') format('woff'), - url('fonts/ubuntu-medium-webfont.ttf') format('truetype'), - url('fonts/ubuntu-medium-webfont.svg#ubuntumedium') format('svg'); - font-weight: 500; - font-style: normal; -} -/* END Ubuntu Medium */ - -/* BEGIN Ubuntu Medium Italic */ -@font-face { - font-family: 'Ubuntu'; - src: url('fonts/ubuntu-medium-italic-webfont.eot'); - src: url('fonts/ubuntu-medium-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntu-medium-italic-webfont.woff2') format('woff2'), - url('fonts/ubuntu-medium-italic-webfont.woff') format('woff'), - url('fonts/ubuntu-medium-italic-webfont.ttf') format('truetype'), - url('fonts/ubuntu-medium-italic-webfont.svg#ubuntumedium_italic') format('svg'); - font-weight: 500; - font-style: italic; -} -/* END Ubuntu Medium Italic */ - -/* BEGIN Ubuntu Bold */ -@font-face { - font-family: 'Ubuntu'; - src: url('fonts/ubuntu-bold-webfont.eot'); - src: url('fonts/ubuntu-bold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntu-bold-webfont.woff2') format('woff2'), - url('fonts/ubuntu-bold-webfont.woff') format('woff'), - url('fonts/ubuntu-bold-webfont.ttf') format('truetype'), - url('fonts/ubuntu-bold-webfont.svg#ubuntubold') format('svg'); - font-weight: bold; - font-style: normal; -} -/* END Ubuntu Bold */ - -/* BEGIN Ubuntu Bold Italic */ -@font-face { - font-family: 'Ubuntu'; - src: url('fonts/ubuntu-bold-italic-webfont.eot'); - src: url('fonts/ubuntu-bold-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntu-bold-italic-webfont.woff2') format('woff2'), - url('fonts/ubuntu-bold-italic-webfont.woff') format('woff'), - url('fonts/ubuntu-bold-italic-webfont.ttf') format('truetype'), - url('fonts/ubuntu-bold-italic-webfont.svg#ubuntubold_italic') format('svg'); - font-weight: bold; - font-style: italic; -} -/* END Ubuntu Bold Italic */ - - - -/* BEGIN Ubuntu Condensed */ -@font-face { - font-family: 'Ubuntu Condensed'; - src: url('fonts/ubuntu-condensed-webfont.eot'); - src: url('fonts/ubuntu-condensed-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntu-condensed-webfont.woff2') format('woff2'), - url('fonts/ubuntu-condensed-webfont.woff') format('woff'), - url('fonts/ubuntu-condensed-webfont.ttf') format('truetype'), - url('fonts/ubuntu-condensed-webfont.svg#ubuntu_condensedregular') format('svg'); - font-weight: normal; - font-style: normal; -} -/* END Ubuntu Condensed */ - - - -/* BEGIN Ubuntu Mono Regular */ -@font-face { - font-family: 'Ubuntu Monospace'; - src: url('fonts/ubuntumono-regular-webfont.eot'); - src: url('fonts/ubuntumono-regular-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntumono-regular-webfont.woff2') format('woff2'), - url('fonts/ubuntumono-regular-webfont.woff') format('woff'), - url('fonts/ubuntumono-regular-webfont.ttf') format('truetype'), - url('fonts/ubuntumono-regular-webfont.svg#ubuntu_monoregular') format('svg'); - font-weight: normal; - font-style: normal; - -} -/* END Ubuntu Mono Regular */ - -/* BEGIN Ubuntu Mono Italic */ -@font-face { - font-family: 'Ubuntu Monospace'; - src: url('fonts/ubuntumono-regular-italic-webfont.eot'); - src: url('fonts/ubuntumono-regular-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntumono-regular-italic-webfont.woff2') format('woff2'), - url('fonts/ubuntumono-regular-italic-webfont.woff') format('woff'), - url('fonts/ubuntumono-regular-italic-webfont.ttf') format('truetype'), - url('fonts/ubuntumono-regular-italic-webfont.svg#ubuntu_monoitalic') format('svg'); - font-weight: normal; - font-style: italic; -} -/* END Ubuntu Mono Italic */ - -/* BEGIN Ubuntu Mono Bold */ -@font-face { - font-family: 'Ubuntu Monospace'; - src: url('fonts/ubuntumono-bold-webfont.eot'); - src: url('fonts/ubuntumono-bold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntumono-bold-webfont.woff2') format('woff2'), - url('fonts/ubuntumono-bold-webfont.woff') format('woff'), - url('fonts/ubuntumono-bold-webfont.ttf') format('truetype'), - url('fonts/ubuntumono-bold-webfont.svg#ubuntu_monobold') format('svg'); - font-weight: bold; - font-style: normal; -} -/* END Ubuntu Mono Bold */ - -/* BEGIN Ubuntu Mono Bold Italic */ -@font-face { - font-family: 'Ubuntu Monospace'; - src: url('fonts/ubuntumono-bold-italic-webfont.eot'); - src: url('fonts/ubuntumono-bold-italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/ubuntumono-bold-italic-webfont.woff2') format('woff2'), - url('fonts/ubuntumono-bold-italic-webfont.woff') format('woff'), - url('fonts/ubuntumono-bold-italic-webfont.ttf') format('truetype'), - url('fonts/ubuntumono-bold-italic-webfont.svg#ubuntu_monobold_italic') format('svg'); - font-weight: bold; - font-style: italic; - -} -/* END Ubuntu Mono Bold Italic */ diff --git a/bibli/ubuntu/ubuntu.css.gz b/bibli/ubuntu/ubuntu.css.gz deleted file mode 100644 index b881d63..0000000 Binary files a/bibli/ubuntu/ubuntu.css.gz and /dev/null differ diff --git a/bibli/ubuntu/ubuntu.less b/bibli/ubuntu/ubuntu.less deleted file mode 100755 index 5b792bf..0000000 --- a/bibli/ubuntu/ubuntu.less +++ /dev/null @@ -1,8 +0,0 @@ -/* Ubuntu Font Family Bower-ready v0.1.13 */ -/* Ubuntu (complete package) @font-face kit */ - -@UbuntuFontsPath: "./fonts"; - -@import "./ubuntu-base.less"; -@import "./ubuntu-condensed.less"; -@import "./ubuntu-mono.less"; diff --git a/bibli/ubuntu/ubuntu.min.css b/bibli/ubuntu/ubuntu.min.css deleted file mode 100755 index cfb078c..0000000 --- a/bibli/ubuntu/ubuntu.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/* Ubuntu Font Family Bower-ready v0.1.13 */ -@font-face{font-family:'Ubuntu';src:url(fonts/ubuntu-light-webfont.eot);src:url(fonts/ubuntu-light-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntu-light-webfont.woff2) format('woff2'),url(fonts/ubuntu-light-webfont.woff) format('woff'),url(fonts/ubuntu-light-webfont.ttf) format('truetype'),url(fonts/ubuntu-light-webfont.svg#ubuntulight) format('svg');font-weight:300;font-style:normal}@font-face{font-family:'Ubuntu';src:url(fonts/ubuntu-light-italic-webfont.eot);src:url(fonts/ubuntu-light-italic-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntu-light-italic-webfont.woff2) format('woff2'),url(fonts/ubuntu-light-italic-webfont.woff) format('woff'),url(fonts/ubuntu-light-italic-webfont.ttf) format('truetype'),url(fonts/ubuntu-light-italic-webfont.svg#ubuntulight_italic) format('svg');font-weight:300;font-style:italic}@font-face{font-family:'Ubuntu';src:url(fonts/ubuntu-regular-webfont.eot);src:url(fonts/ubuntu-regular-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntu-regular-webfont.woff2) format('woff2'),url(fonts/ubuntu-regular-webfont.woff) format('woff'),url(fonts/ubuntu-regular-webfont.ttf) format('truetype'),url(fonts/ubuntu-regular-webfont.svg#ubunturegular) format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'Ubuntu';src:url(fonts/ubuntu-regular-italic-webfont.eot);src:url(fonts/ubuntu-regular-italic-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntu-regular-italic-webfont.woff2) format('woff2'),url(fonts/ubuntu-regular-italic-webfont.woff) format('woff'),url(fonts/ubuntu-regular-italic-webfont.ttf) format('truetype'),url(fonts/ubuntu-regular-italic-webfont.svg#ubuntuitalic) format('svg');font-weight:normal;font-style:italic}@font-face{font-family:'Ubuntu';src:url(fonts/ubuntu-medium-webfont.eot);src:url(fonts/ubuntu-medium-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntu-medium-webfont.woff2) format('woff2'),url(fonts/ubuntu-medium-webfont.woff) format('woff'),url(fonts/ubuntu-medium-webfont.ttf) format('truetype'),url(fonts/ubuntu-medium-webfont.svg#ubuntumedium) format('svg');font-weight:500;font-style:normal}@font-face{font-family:'Ubuntu';src:url(fonts/ubuntu-medium-italic-webfont.eot);src:url(fonts/ubuntu-medium-italic-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntu-medium-italic-webfont.woff2) format('woff2'),url(fonts/ubuntu-medium-italic-webfont.woff) format('woff'),url(fonts/ubuntu-medium-italic-webfont.ttf) format('truetype'),url(fonts/ubuntu-medium-italic-webfont.svg#ubuntumedium_italic) format('svg');font-weight:500;font-style:italic}@font-face{font-family:'Ubuntu';src:url(fonts/ubuntu-bold-webfont.eot);src:url(fonts/ubuntu-bold-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntu-bold-webfont.woff2) format('woff2'),url(fonts/ubuntu-bold-webfont.woff) format('woff'),url(fonts/ubuntu-bold-webfont.ttf) format('truetype'),url(fonts/ubuntu-bold-webfont.svg#ubuntubold) format('svg');font-weight:bold;font-style:normal}@font-face{font-family:'Ubuntu';src:url(fonts/ubuntu-bold-italic-webfont.eot);src:url(fonts/ubuntu-bold-italic-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntu-bold-italic-webfont.woff2) format('woff2'),url(fonts/ubuntu-bold-italic-webfont.woff) format('woff'),url(fonts/ubuntu-bold-italic-webfont.ttf) format('truetype'),url(fonts/ubuntu-bold-italic-webfont.svg#ubuntubold_italic) format('svg');font-weight:bold;font-style:italic}@font-face{font-family:'Ubuntu Condensed';src:url(fonts/ubuntu-condensed-webfont.eot);src:url(fonts/ubuntu-condensed-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntu-condensed-webfont.woff2) format('woff2'),url(fonts/ubuntu-condensed-webfont.woff) format('woff'),url(fonts/ubuntu-condensed-webfont.ttf) format('truetype'),url(fonts/ubuntu-condensed-webfont.svg#ubuntu_condensedregular) format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'Ubuntu Monospace';src:url(fonts/ubuntumono-regular-webfont.eot);src:url(fonts/ubuntumono-regular-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntumono-regular-webfont.woff2) format('woff2'),url(fonts/ubuntumono-regular-webfont.woff) format('woff'),url(fonts/ubuntumono-regular-webfont.ttf) format('truetype'),url(fonts/ubuntumono-regular-webfont.svg#ubuntu_monoregular) format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'Ubuntu Monospace';src:url(fonts/ubuntumono-regular-italic-webfont.eot);src:url(fonts/ubuntumono-regular-italic-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntumono-regular-italic-webfont.woff2) format('woff2'),url(fonts/ubuntumono-regular-italic-webfont.woff) format('woff'),url(fonts/ubuntumono-regular-italic-webfont.ttf) format('truetype'),url(fonts/ubuntumono-regular-italic-webfont.svg#ubuntu_monoitalic) format('svg');font-weight:normal;font-style:italic}@font-face{font-family:'Ubuntu Monospace';src:url(fonts/ubuntumono-bold-webfont.eot);src:url(fonts/ubuntumono-bold-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntumono-bold-webfont.woff2) format('woff2'),url(fonts/ubuntumono-bold-webfont.woff) format('woff'),url(fonts/ubuntumono-bold-webfont.ttf) format('truetype'),url(fonts/ubuntumono-bold-webfont.svg#ubuntu_monobold) format('svg');font-weight:bold;font-style:normal}@font-face{font-family:'Ubuntu Monospace';src:url(fonts/ubuntumono-bold-italic-webfont.eot);src:url(fonts/ubuntumono-bold-italic-webfont.eot?#iefix) format('embedded-opentype'),url(fonts/ubuntumono-bold-italic-webfont.woff2) format('woff2'),url(fonts/ubuntumono-bold-italic-webfont.woff) format('woff'),url(fonts/ubuntumono-bold-italic-webfont.ttf) format('truetype'),url(fonts/ubuntumono-bold-italic-webfont.svg#ubuntu_monobold_italic) format('svg');font-weight:bold;font-style:italic} \ No newline at end of file diff --git a/bibli/ubuntu/ubuntu.min.css.gz b/bibli/ubuntu/ubuntu.min.css.gz deleted file mode 100644 index b122b6d..0000000 Binary files a/bibli/ubuntu/ubuntu.min.css.gz and /dev/null differ diff --git a/compil.php b/compil.php index d55d5c6..21335d7 100755 --- a/compil.php +++ b/compil.php @@ -1,57 +1,70 @@ temp/exemple.temp - // Exécute le HTML/PHP avec header et footer vers du HTML statique + // Exécute le PHP vers du HTML ob_start(); - require "pages/" . $nomPage . ".md"; - file_put_contents("temp/" . $nomPage . ".temp", ob_get_contents()); + require $site . "/md/" . $pageId . ".md"; + file_put_contents("temp/" . $site . "/" . $pageId . ".temp", ob_get_contents()); ob_end_clean(); // temp/exemple.temp > temp2/exemple.temp2 - // Compile le Markdown/PHP vers du HTML/PHP - $contenuPage = ParsedownExtra::instance() - ->setUrlsLinked(false) - ->setMarkupEscaped(false) - ->setBreaksEnabled(true) - ->text(file_get_contents("temp/" .$nomPage . ".temp")); - file_put_contents("temp2/" . $nomPage . ".temp2", $contenuPage); + // Compile le Markdown vers du HTML + $contenuPage = file_get_contents("temp/" . $site . "/" . $pageId . ".temp"); + + $Parsedown = new ParsedownExtraPlugin; + $Parsedown = $Parsedown->setUrlsLinked(false); + $Parsedown = $Parsedown->setMarkupEscaped(false); + $Parsedown = $Parsedown->setBreaksEnabled(true); + $contenuPage = $Parsedown->text($contenuPage); + + file_put_contents("temp/" . $site . "/" . $pageId . ".temp2", $contenuPage); // temp2/exemple.temp2 > exemple.html - // Exécute et cache le PHP en HTML - $adresse = $nomPage; + // Ajoute header et footer au HTML ob_start(); - require "inc/pages.php"; + + $pageMetas = getPageMetas($pageId); + require "inc/debut.php"; - if ($page['type'] == "article") { - echo "

" . $page['h1'] . "

"; + if ($pageMetas['type'] == "article") { + echo "

" . $pageMetas['h1'] . "

"; echo "
"; - } else if ($page['type'] == "centré") { + } else if ($pageMetas['type'] == "centré") { echo "
"; } - require "temp2/" . $nomPage . ".temp2"; - if ($page['type'] == "article") { + require "temp/" . $site . "/" . $pageId . ".temp2"; + if ($pageMetas['type'] == "article") { echo "
"; - } else if ($page['type'] == "centré") { + } else if ($pageMetas['type'] == "centré") { echo "
"; } require "inc/footer.php"; - file_put_contents($nomPage . ".html", ob_get_contents()); + file_put_contents($site . "/" . $pageId . ".html", ob_get_contents()); ob_end_clean(); } // exemple.html > exemple.html.gz - // Compresse les fichiers textes statiques HTML & CSS à la racine - exec('/usr/bin/static-compress -c zopfli "*.html" "*.css" "css/*.css"'); + // Compresse les fichiers textes statiques HTML & CSS + exec('/usr/local/bin/static-compress -c zopfli "' . $site . '/*.html" "' . $site . '/css/*.css"'); } else { - echo "Non authentifié·e"; + echo "Non authentifié·e, ou pas de site définit"; } diff --git a/css/lessphp_2i6tnfof8js4gko4s0sc008844ocgow.lesscache b/css/lessphp_2i6tnfof8js4gko4s0sc008844ocgow.lesscache deleted file mode 100644 index 9b5e545..0000000 --- a/css/lessphp_2i6tnfof8js4gko4s0sc008844ocgow.lesscache +++ /dev/null @@ -1,2 +0,0 @@ - new Less_Tree_Directive('@font-face',NULL, new Less_Tree_Ruleset(NULL, Array(0 => new Less_Tree_NameValue('font-family','"Ubuntu"',14, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('src'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Call('local', Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Quoted('"Ubuntu"','Ubuntu',false,49, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),),43, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),1 => new Less_Tree_Expression( Array(0 => new Less_Tree_Call('local', Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Quoted('"Ubuntu Regular"','Ubuntu Regular',false,66, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),),60, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),2 => new Less_Tree_Expression( Array(0 => new Less_Tree_Url( new Less_Tree_Quoted('"bibli/ubuntu/fonts/ubuntu-regular-webfont.woff2"','bibli/ubuntu/fonts/ubuntu-regular-webfont.woff2',false,89, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)), Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Call('format', Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Quoted('"woff2"','woff2',false,147, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),),140, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,38, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),0, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Directive('@font-face',NULL, new Less_Tree_Ruleset(NULL, Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('font-family'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Quoted('"Ubuntu Mono"','Ubuntu Mono',false,187, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,174, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('src'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Call('local', Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Quoted('"Ubuntu Mono"','Ubuntu Mono',false,214, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),),208, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),1 => new Less_Tree_Expression( Array(0 => new Less_Tree_Call('local', Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Quoted('"Ubuntu Monospace"','Ubuntu Monospace',false,236, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),),230, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),2 => new Less_Tree_Expression( Array(0 => new Less_Tree_Url( new Less_Tree_Quoted('"bibli/ubuntu/fonts/ubuntumono-regular-webfont.woff2"','bibli/ubuntu/fonts/ubuntumono-regular-webfont.woff2',false,261, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)), Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Call('format', Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Quoted('"woff2"','woff2',false,323, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),),316, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,203, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),160, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_Rule('@fond', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Color('2a2a2a'),)),)),NULL,false,336, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_Rule('@fondSecondaire', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Color('222222'),)),)),NULL,false,352, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_Rule('@fondOptionHover', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Call('lighten', Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@fond',404, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),1 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('10','%'),)),),396, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,378, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),5 => new Less_Tree_Rule('@texte', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Color('ffffff'),)),)),NULL,false,417, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),6 => new Less_Tree_Rule('@couleurLien', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Color('ffffff'),)),)),NULL,false,432, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),7 => new Less_Tree_Rule('@couleurPrincipale', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Color('ff0000'),)),)),NULL,false,453, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),8 => new Less_Tree_Rule('@border', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Color('5f5f5f'),)),)),NULL,false,478, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),9 => new Less_Tree_Rule('@borderHover', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Color('808080'),)),)),NULL,false,496, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),10 => new Less_Tree_Rule('@borderFocus', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Color('ffffff'),)),)),NULL,false,519, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),11 => new Less_Tree_Rule('@mainFontFamily', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Keyword('system-ui'),)),)),NULL,false,540, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),12 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','::selection',569, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,569, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@fond',591, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,584, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('background-color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@texte',617, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,599, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),13 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.bouton',628, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,628, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('border'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('2','px'),1 => new Less_Tree_Keyword('solid'),2 => new Less_Tree_Color('808080'),)),)),NULL,false,639, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('padding','10px',664, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('padding-left','15px',680, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_NameValue('padding-right','15px',701, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_NameValue('margin','5px',723, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),5 => new Less_Tree_NameValue('display','inline-block',737, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),6 => new Less_Tree_NameValue('border-radius','14px',761, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),7 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@texte',790, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,783, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),8 => new Less_Tree_NameValue('text-decoration','none',799, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),9 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','&',824, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Element(NULL,':hover',825, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,824, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@couleurPrincipale',843, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,836, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('border'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('2','px'),1 => new Less_Tree_Keyword('solid'),2 => new Less_Tree_Variable('@couleurPrincipale',883, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,865, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),14 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.petit-bouton',910, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,910, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('border'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('2','px'),1 => new Less_Tree_Keyword('solid'),2 => new Less_Tree_Color('808080'),)),)),NULL,false,927, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('padding','2px',952, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('padding-left','10px',967, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_NameValue('padding-right','10px',988, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_NameValue('margin','5px',1010, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),5 => new Less_Tree_NameValue('font-size','80%',1024, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),6 => new Less_Tree_NameValue('display','inline-block',1041, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),7 => new Less_Tree_NameValue('border-radius','14px',1065, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),8 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@texte',1094, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,1087, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),9 => new Less_Tree_NameValue('text-decoration','none',1103, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),10 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','&',1128, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Element(NULL,':hover',1129, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1128, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@couleurPrincipale',1147, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,1140, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('border'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('2','px'),1 => new Less_Tree_Keyword('solid'),2 => new Less_Tree_Variable('@couleurPrincipale',1187, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,1169, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),15 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','html',1214, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1214, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-size','20px',1222, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('scrollbar-color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@texte',1257, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Variable('@fond',1264, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,1240, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('scrollbar-width','auto',1272, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),16 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','a',1299, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1299, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','a',1302, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Element(NULL,':visited',1303, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1302, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('text-decoration','underline',1315, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@couleurLien',1351, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,1344, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('transition'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Keyword('all'),1 => new Less_Tree_Dimension('0.1','s'),2 => new Less_Tree_Keyword('linear'),)),)),NULL,false,1366, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','&',1397, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Element(NULL,':hover',1398, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1397, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('text-decoration','none',1409, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@couleurPrincipale',1441, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,1434, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),17 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.logo',1468, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1468, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('margin-bottom','10px',1477, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),18 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','img',1501, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1501, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('height','auto',1508, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('max-width','100%',1523, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),19 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.imgArticle',1543, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1543, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('border'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('1','px'),1 => new Less_Tree_Color('ffffff'),2 => new Less_Tree_Keyword('solid'),)),)),NULL,false,1558, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('border-radius','5px',1584, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('display','block',1605, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_NameValue('margin','auto',1622, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_NameValue('margin-top','20px',1637, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),5 => new Less_Tree_NameValue('margin-bottom','20px',1656, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),20 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','strong',1680, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1680, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-weight','bold',1690, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),21 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','code',1712, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1712, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','var',1718, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1718, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','samp',1723, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1723, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('font-family'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Quoted('"Ubuntu Mono"','Ubuntu Mono',false,1744, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),1 => new Less_Tree_Expression( Array(0 => new Less_Tree_Keyword('monospace'),)),)),NULL,false,1731, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('background-color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@fondSecondaire',1789, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,1771, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('padding','5px',1807, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_NameValue('border-radius','10px',1822, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_NameValue('font-style','normal',1844, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),22 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','body',1867, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,1867, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-family','system-ui',1875, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('padding','0px',1900, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('margin','0px',1915, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('background-color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@fondSecondaire',1947, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,1929, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@texte',1972, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,1965, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),5 => new Less_Tree_NameValue('font-size','25px',1981, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),6 => new Less_Tree_NameValue('line-height','35px',1999, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),23 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','address',2021, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2021, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-style','normal',2032, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),24 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','ul',2055, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2055, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('padding-left','35px',2061, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('margin','0px',2082, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),25 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','dt',2098, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2098, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-weight','500',2104, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),26 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','dd',2125, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2125, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('margin-left','25px',2131, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('padding-bottom','10px',2151, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),27 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','p',2176, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2176, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('margin','0px',2181, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('padding-top','10px',2195, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('padding-bottom','10px',2215, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),28 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.grille-services',2240, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2240, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('display','grid',2260, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('grid-template-columns'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('1','fr'),1 => new Less_Tree_Dimension('1','fr'),2 => new Less_Tree_Dimension('1','fr'),3 => new Less_Tree_Dimension('1','fr'),)),)),NULL,false,2276, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('grid-gap','30px',2317, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_Media( Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('grid-template-columns'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('1','fr'),1 => new Less_Tree_Dimension('1','fr'),2 => new Less_Tree_Dimension('1','fr'),)),)),NULL,false,2368, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Paren( new Less_Tree_Rule('max-width', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('1500','px'),)),)),NULL,NULL,2362, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',),true)),)),),2410, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_Media( Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('grid-template-columns'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('1','fr'),1 => new Less_Tree_Dimension('1','fr'),)),)),NULL,false,2443, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Paren( new Less_Tree_Rule('max-width', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('1000','px'),)),)),NULL,NULL,2437, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',),true)),)),),2481, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),5 => new Less_Tree_Media( Array(0 => new Less_Tree_NameValue('grid-template-columns','1fr',2513, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Paren( new Less_Tree_Rule('max-width', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('600','px'),)),)),NULL,NULL,2507, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',),true)),)),),2546, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),29 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.titreService',2549, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2549, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-size','1.3em',2566, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('text-align','center',2585, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),30 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.metaService',2608, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2608, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('text-decoration','none',2624, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('font-size','28px',2648, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('margin-top','6px',2666, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),31 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.metasService',2686, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2686, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('display','flex',2703, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('flex-direction','row',2719, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('justify-content','center',2741, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_NameValue('font-size','0.8em',2767, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),32 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.logoService',2788, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2788, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('text-align','center',2804, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),33 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.elLogoServ',2827, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2827, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('max-width','150px',2842, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('max-height','100px',2861, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@texte',2888, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,2881, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),34 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.descService',2899, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2899, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('padding-top','5px',2915, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('padding-bottom','10px',2934, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('text-align','left',2957, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),35 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.domService',2978, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,2978, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('font-family'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Quoted('"Ubuntu Mono"','Ubuntu Mono',false,3006, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),1 => new Less_Tree_Expression( Array(0 => new Less_Tree_Keyword('monospace'),)),)),NULL,false,2993, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('overflow-wrap','anywhere',3033, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('margin-top','-6px',3059, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_NameValue('font-size','0.8em',3078, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_NameValue('color','#eeeeee',3097, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),36 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','main',3116, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,3116, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('background-color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@fond',3142, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,3124, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('margin','0px',3150, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('padding','30px',3164, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_NameValue('padding-top','15px',3180, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_Media( Array(0 => new Less_Tree_NameValue('padding-left','10px',3231, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('padding-right','10px',3253, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Paren( new Less_Tree_Rule('max-width', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('500','px'),)),)),NULL,NULL,3227, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',),true)),)),),3277, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),37 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.centre',3280, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,3280, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('text-align','center',3291, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('justify-content','center',3312, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),38 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','article',3340, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,3340, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('margin-left','20%',3351, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('margin-right','20%',3370, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_Media( Array(0 => new Less_Tree_NameValue('margin-left','10%',3422, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('margin-right','10%',3442, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Paren( new Less_Tree_Rule('max-width', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('1400','px'),)),)),NULL,NULL,3418, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',),true)),)),),3466, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_Media( Array(0 => new Less_Tree_NameValue('margin-left','0px',3496, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('margin-right','0px',3516, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Paren( new Less_Tree_Rule('max-width', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('800','px'),)),)),NULL,NULL,3492, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',),true)),)),),3538, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),39 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','#pres',3541, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,3541, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('text-align','center',3550, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('line-height','40px',3571, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('margin-left','100px',3591, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_NameValue('margin-right','100px',3612, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_Media( Array(0 => new Less_Tree_NameValue('margin-left','0px',3666, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('margin-right','0px',3686, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Paren( new Less_Tree_Rule('max-width', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('1400','px'),)),)),NULL,NULL,3662, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',),true)),)),),3708, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),40 => new Less_Tree_Comment('// FOOTER',true,3722, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),41 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.textefooter',3722, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,3722, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('margin','30px',3738, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('line-height','1.5em',3753, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('text-align','center',3774, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),42 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.interlude',3797, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,3797, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('display','flex',3811, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('justify-content','center',3827, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),43 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.traitinterlude',3855, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Element('>','hr',3873, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,3855, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('display','none',3879, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),44 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.traitinterlude',3897, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,3897, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('border-top'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('2','px'),1 => new Less_Tree_Color('808080'),2 => new Less_Tree_Keyword('dashed'),)),)),NULL,false,3916, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('width','450px',3946, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),45 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','footer',3963, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,3963, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('text-align','center',3973, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('display','flex',3994, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('flex-direction','column',4010, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),46 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.logofooter',4037, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4037, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('padding-left','6%',4052, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('margin-top','20px',4071, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('text-align','center',4090, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),47 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.liensfooter',4113, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4113, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('display','flex',4129, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('flex-direction','row',4145, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('padding','20px',4167, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),48 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.lienfooter',4185, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4185, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('margin','10px',4200, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),49 => new Less_Tree_Comment('/* ----------------------- HEADER ------------------------ */ -',false,4280, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),50 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','#lienHeader',4280, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4280, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('margin','0px',4295, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Comment('//border: 3px white solid;',true,4337, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_Comment('//border-top: none;',true,4358, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_Comment('//border-radius: 0px 0px 12px 12px;',true,4395, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_NameValue('text-align','center',4395, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),5 => new Less_Tree_NameValue('font-size','2em',4416, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),6 => new Less_Tree_NameValue('display','flex',4433, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),7 => new Less_Tree_NameValue('justify-content','center',4449, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),8 => new Less_Tree_NameValue('padding','30px',4475, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),9 => new Less_Tree_NameValue('padding-bottom','20px',4491, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),10 => new Less_Tree_NameValue('margin-left','35px',4514, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),11 => new Less_Tree_NameValue('margin-right','35px',4534, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),12 => new Less_Tree_Media( Array(0 => new Less_Tree_NameValue('border','none',4586, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('padding','0px',4602, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('margin-top','20px',4618, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_NameValue('margin-left','20px',4638, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_NameValue('margin-right','20px',4659, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Paren( new Less_Tree_Rule('max-width', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('600','px'),)),)),NULL,NULL,4582, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',),true)),)),),4682, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),51 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','header',4685, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4685, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('display','flex',4695, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('justify-content','center',4711, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),52 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','#header',4740, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Element(NULL,':active',4747, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4740, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('box-shadow'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('2','px'),1 => new Less_Tree_Dimension('2','px'),2 => new Less_Tree_Dimension('3','px'),3 => new Less_Tree_Color('ffffff'),4 => new Less_Tree_Keyword('inset'),)),)),NULL,false,4758, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),53 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','#header',4799, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Element(NULL,':hover',4806, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4799, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('background-color'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Variable('@fondOptionHover',4834, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),)),NULL,false,4816, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Rule( Array(0 => new Less_Tree_Keyword('transition'),), new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Keyword('all'),1 => new Less_Tree_Dimension('0.2','s'),2 => new Less_Tree_Keyword('ease-in-out'),)),)),NULL,false,4854, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_Media( Array(0 => new Less_Tree_NameValue('background-color','inherit',4919, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Paren( new Less_Tree_Rule('max-width', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('600','px'),)),)),NULL,NULL,4915, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',),true)),)),),4949, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),54 => new Less_Tree_Comment('// ----- TITRES -----',true,4976, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),55 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h1',4976, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4976, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h2',4980, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4980, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h3',4984, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4984, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h4',4988, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4988, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h5',4992, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4992, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),5 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h6',4996, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,4996, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-weight','normal',5002, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('line-height','100%',5024, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),56 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h1',5046, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,5046, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-size','250%',5052, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('text-align','center',5070, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('margin','0px',5091, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_NameValue('padding-bottom','20px',5105, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_NameValue('padding-top','15px',5128, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),57 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h2',5150, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,5150, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-size','200%',5156, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('margin-top','50px',5174, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('margin-bottom','20px',5193, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),58 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h3',5217, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,5217, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-size','160%',5223, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('margin-top','30px',5241, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('margin-bottom','10px',5260, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),59 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h4',5284, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,5284, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-size','130%',5290, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_NameValue('margin-top','0px',5308, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('margin-bottom','0px',5326, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),60 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h5',5349, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,5349, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-size','115%',5355, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),61 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','h6',5375, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,5375, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('font-size','107%',5381, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),62 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.gomeza',5401, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,5401, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('display','none',5412, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),1 => new Less_Tree_Comment('// Sera changé le moment voulu en JS',true,5466, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),2 => new Less_Tree_NameValue('position','fixed',5466, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),3 => new Less_Tree_NameValue('bottom','0px',5484, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),4 => new Less_Tree_NameValue('left','30px',5498, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),5 => new Less_Tree_NameValue('z-index','100',5511, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),63 => new Less_Tree_Media( Array(0 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.basfooter',5558, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,5558, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('flex-direction','column',5573, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),1 => new Less_Tree_Ruleset( Array(0 => new Less_Tree_Selector( Array(0 => new Less_Tree_Element(' ','.logofooter',5602, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(),NULL,5602, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),), Array(0 => new Less_Tree_NameValue('padding','0px',5618, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),)),), Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Paren( new Less_Tree_Rule('max-width', new Less_Tree_Value( Array(0 => new Less_Tree_Expression( Array(0 => new Less_Tree_Dimension('800','px'),)),)),NULL,NULL,5554, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',),true)),)),),5638, Array('entryPath' => '/srv/http/web/','entryUri' => '','rootpath' => '/srv/http/web/','currentDirectory' => '/srv/http/web/','currentUri' => 'style.less','filename' => '/srv/http/web/style.less','uri_root' => '',)),); ?> \ No newline at end of file diff --git a/css/lessphp_46a61b00ca9461ec3e4242b744419414.list b/css/lessphp_46a61b00ca9461ec3e4242b744419414.list deleted file mode 100644 index 45eca80..0000000 --- a/css/lessphp_46a61b00ca9461ec3e4242b744419414.list +++ /dev/null @@ -1,2 +0,0 @@ -/srv/http/web/style.less -lessphp_5a7436669e1c2246e13a7acc861143267173c4e5.css \ No newline at end of file diff --git a/css/lessphp_5a7436669e1c2246e13a7acc861143267173c4e5.css b/css/lessphp_5a7436669e1c2246e13a7acc861143267173c4e5.css deleted file mode 100644 index f87b540..0000000 --- a/css/lessphp_5a7436669e1c2246e13a7acc861143267173c4e5.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:"Ubuntu";src:local("Ubuntu"),local("Ubuntu Regular"),url("bibli/ubuntu/fonts/ubuntu-regular-webfont.woff2") format("woff2")}@font-face{font-family:"Ubuntu Mono";src:local("Ubuntu Mono"),local("Ubuntu Monospace"),url("bibli/ubuntu/fonts/ubuntumono-regular-webfont.woff2") format("woff2")}::selection{color:#2a2a2a;background-color:#fff}.bouton{border:2px solid #808080;padding:10px;padding-left:15px;padding-right:15px;margin:5px;display:inline-block;border-radius:14px;color:#fff;text-decoration:none}.bouton:hover{color:#f00;border:2px solid #f00}.petit-bouton{border:2px solid #808080;padding:2px;padding-left:10px;padding-right:10px;margin:5px;font-size:80%;display:inline-block;border-radius:14px;color:#fff;text-decoration:none}.petit-bouton:hover{color:#f00;border:2px solid #f00}html{font-size:20px;scrollbar-color:#fff #2a2a2a;scrollbar-width:auto}a,a:visited{text-decoration:underline;color:#fff;transition:all .1s linear}a:hover,a:visited:hover{text-decoration:none;color:#f00}.logo{margin-bottom:10px}img{height:auto;max-width:100%}.imgArticle{border:1px #fff solid;border-radius:5px;display:block;margin:auto;margin-top:20px;margin-bottom:20px}strong{font-weight:bold}code,var,samp{font-family:"Ubuntu Mono",monospace;background-color:#222;padding:5px;border-radius:10px;font-style:normal}body{font-family:system-ui;padding:0px;margin:0px;background-color:#222;color:#fff;font-size:25px;line-height:35px}address{font-style:normal}ul{padding-left:35px;margin:0px}dt{font-weight:500}dd{margin-left:25px;padding-bottom:10px}p{margin:0px;padding-top:10px;padding-bottom:10px}.grille-services{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;grid-gap:30px}@media (max-width:1500px){.grille-services{grid-template-columns:1fr 1fr 1fr}}@media (max-width:1000px){.grille-services{grid-template-columns:1fr 1fr}}@media (max-width:600px){.grille-services{grid-template-columns:1fr}}.titreService{font-size:1.3em;text-align:center}.metaService{text-decoration:none;font-size:28px;margin-top:6px}.metasService{display:flex;flex-direction:row;justify-content:center;font-size:0.8em}.logoService{text-align:center}.elLogoServ{max-width:150px;max-height:100px;color:#fff}.descService{padding-top:5px;padding-bottom:10px;text-align:left}.domService{font-family:"Ubuntu Mono",monospace;overflow-wrap:anywhere;margin-top:-6px;font-size:0.8em;color:#eeeeee}main{background-color:#2a2a2a;margin:0px;padding:30px;padding-top:15px}@media (max-width:500px){main{padding-left:10px;padding-right:10px}}.centre{text-align:center;justify-content:center}article{margin-left:20%;margin-right:20%}@media (max-width:1400px){article{margin-left:10%;margin-right:10%}}@media (max-width:800px){article{margin-left:0px;margin-right:0px}}#pres{text-align:center;line-height:40px;margin-left:100px;margin-right:100px}@media (max-width:1400px){#pres{margin-left:0px;margin-right:0px}}.textefooter{margin:30px;line-height:1.5em;text-align:center}.interlude{display:flex;justify-content:center}.traitinterlude>hr{display:none}.traitinterlude{border-top:2px #808080 dashed;width:450px}footer{text-align:center;display:flex;flex-direction:column}.logofooter{padding-left:6%;margin-top:20px;text-align:center}.liensfooter{display:flex;flex-direction:row;padding:20px}.lienfooter{margin:10px}#lienHeader{margin:0px;text-align:center;font-size:2em;display:flex;justify-content:center;padding:30px;padding-bottom:20px;margin-left:35px;margin-right:35px}@media (max-width:600px){#lienHeader{border:none;padding:0px;margin-top:20px;margin-left:20px;margin-right:20px}}header{display:flex;justify-content:center}#header:active{box-shadow:2px 2px 3px #fff inset}#header:hover{background-color:#444;transition:all .2s ease-in-out}@media (max-width:600px){#header:hover{background-color:inherit}}h1,h2,h3,h4,h5,h6{font-weight:normal;line-height:100%}h1{font-size:250%;text-align:center;margin:0px;padding-bottom:20px;padding-top:15px}h2{font-size:200%;margin-top:50px;margin-bottom:20px}h3{font-size:160%;margin-top:30px;margin-bottom:10px}h4{font-size:130%;margin-top:0px;margin-bottom:0px}h5{font-size:115%}h6{font-size:107%}.gomeza{display:none;position:fixed;bottom:0px;left:30px;z-index:100}@media (max-width:800px){.basfooter{flex-direction:column}.logofooter{padding:0px}} \ No newline at end of file diff --git a/img/docs/config-thunderbird.png b/img/docs/config-thunderbird.png deleted file mode 100755 index c08dc02..0000000 Binary files a/img/docs/config-thunderbird.png and /dev/null differ diff --git a/img/docs/k9-imap-300.png b/img/docs/k9-imap-300.png deleted file mode 100755 index 80d6339..0000000 Binary files a/img/docs/k9-imap-300.png and /dev/null differ diff --git a/img/docs/k9-imap.png b/img/docs/k9-imap.png deleted file mode 100755 index a57965d..0000000 Binary files a/img/docs/k9-imap.png and /dev/null differ diff --git a/img/docs/k9-smtp-300.png b/img/docs/k9-smtp-300.png deleted file mode 100755 index fc0744c..0000000 Binary files a/img/docs/k9-smtp-300.png and /dev/null differ diff --git a/img/docs/k9-smtp.png b/img/docs/k9-smtp.png deleted file mode 100755 index 0b03c5a..0000000 Binary files a/img/docs/k9-smtp.png and /dev/null differ diff --git a/img/docs/nextcloud-files-zoom.png b/img/docs/nextcloud-files-zoom.png deleted file mode 100755 index 313a1a2..0000000 Binary files a/img/docs/nextcloud-files-zoom.png and /dev/null differ diff --git a/img/docs/nextcloud-files-zoom.webp b/img/docs/nextcloud-files-zoom.webp deleted file mode 100755 index dc67e2e..0000000 Binary files a/img/docs/nextcloud-files-zoom.webp and /dev/null differ diff --git a/img/docs/nextcloud-files.png b/img/docs/nextcloud-files.png deleted file mode 100755 index 512217e..0000000 Binary files a/img/docs/nextcloud-files.png and /dev/null differ diff --git a/img/logos/etherpad-colibris.png b/img/logos/etherpad-colibris.png deleted file mode 100755 index 63d2fce..0000000 Binary files a/img/logos/etherpad-colibris.png and /dev/null differ diff --git a/img/logos/etherpad-favicon.png b/img/logos/etherpad-favicon.png deleted file mode 100755 index 8009cd9..0000000 Binary files a/img/logos/etherpad-favicon.png and /dev/null differ diff --git a/img/logos/etherpad.webp b/img/logos/etherpad.webp deleted file mode 100755 index e7e18fa..0000000 Binary files a/img/logos/etherpad.webp and /dev/null differ diff --git a/img/logos/gitea.webp b/img/logos/gitea.webp deleted file mode 100755 index e01b25e..0000000 Binary files a/img/logos/gitea.webp and /dev/null differ diff --git a/img/logos/matrix.png b/img/logos/matrix.png deleted file mode 100755 index 5165d90..0000000 Binary files a/img/logos/matrix.png and /dev/null differ diff --git a/img/logos/matrix.webp b/img/logos/matrix.webp deleted file mode 100755 index da457be..0000000 Binary files a/img/logos/matrix.webp and /dev/null differ diff --git a/img/logos/onion.svg b/img/logos/onion.svg deleted file mode 100755 index feec63a..0000000 --- a/img/logos/onion.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/inc/debut.php b/inc/debut.php index 33a40a7..2d9fcbe 100755 --- a/inc/debut.php +++ b/inc/debut.php @@ -1,61 +1,72 @@ - - - - - - <?php echo $page['titre']; ?> - - - - - - - - - - - - 'css', 'compress' => true); -$lessFiles = array('style.less' => ''); -$cssFileName = Less_Cache::Get($lessFiles, $options); ?> - -setFormatter("compressed"); - $less->checkedCompile("style.less", "style.min.css"); */ ?> - -setFormatter("compressed"); - $less->checkedCompile("bibli/gomez/gomez.css", "bibli/gomez/gomez.min.css"); */ ?> - -setFormatter("compressed"); - $less->checkedCompile("bibli/fontello/css/fontello.css", "bibli/fontello/css/fontello.min.css"); */ ?> - - - - - + + + + + <?php echo $pageMetas['titre'] . $suffix; ?> + + + + + -
- - - -
+ $options = array('cache_dir' => $site . '/css', 'compress' => true); + $lessFiles = array('style.less' => ''); + $cssFileName = Less_Cache::Get($lessFiles, $options); + ?> + + + + + + + + + + + + + -
+ +
+ + + + + + + + + + + + +
+ +
diff --git a/inc/footer.php b/inc/footer.php index f4a9ae4..00aa14b 100755 --- a/inc/footer.php +++ b/inc/footer.php @@ -1,6 +1,7 @@
-